mcpField
H
hostpanel

hostpanel

Local
github.com/CloudCorpRecordsCloud & Infra0Updated 1w ago

About hostpanel

hostpanel is a CLI and MCP server for inspecting and managing a single local host. Its two action routers cover Docker and Compose state, host details, allowlisted read-only commands, file search, ZFS pools, and journal logs; remote SSH targets are not included.

Key features

  1. 01Docker daemon and container inspection
  2. 02Compose project listing
  3. 03Host and OS information
  4. 04Allowlisted read-only command execution
  5. 05File search by glob
  6. 06ZFS pools and journal logs

Use cases

  1. 01Check container state on the local host
  2. 02List Compose projects and Docker details
  3. 03Search files with a path and pattern
  4. 04Review ZFS pools or system journal entries

MCP support

The stdio MCP server exposes the `flux` and `scout` action routers. They provide local-host operations only, with `scout exec` restricted to an allowlist of read-only commands.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"cloudcorprecords-hostpanel": {
"command": "npx",
"args": [
"-y",
"@reneturcios/hostpanel"
]
}
}
}
Run commandnpx -y @reneturcios/hostpanel

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@reneturcios/hostpanel0.1.0
ocighcr.io/cloudcorprecords/hostpanel:0.1.0

Tools

2

Saved tool list · updated 1w ago

ParameterTypeRequiredDescription
actionenumYesOperation group: docker, container, host, compose, or help.docker | container | host | compose | help
paramsobjectNoParameters object for the chosen operation.
subactionstringNoSpecific operation within the chosen action group.

Details

From the project README

hostpanel

hostpanel looks after a single host: Docker daemon and container state, Compose projects, basic host information, file search, ZFS pools, and journal logs. It exposes all of that through two action-router tools, flux and scout, and the same two routers on the command line. One binary serves both faces.

This is a labelled core subset of a larger documented surface. The implemented actions are listed below; every other documented action is omitted from this subset and is named in the build report and in the spec fixture, not silently dropped.

Only the local host is served. A host parameter, when supplied, must be local; remote SSH targets are not part of this subset. Processes are started with an argument array only — no command string ever goes through a shell.

Install

npx @reneturcios/hostpanel help

Or run the container image:

docker run -i ghcr.io/cloudcorprecords/hostpanel

The container defaults to the MCP server (see below). Pass CLI arguments to use it as a CLI instead, and mount the Docker socket if you want the flux actions to reach a real daemon.

CLI

hostpanel flux docker info
hostpanel flux docker version
hostpanel flux container list --params '{"state":"running"}'
hostpanel flux container inspect --params '{"container_id":"abc123"}'
hostpanel flux host info
hostpanel flux compose list

hostpanel scout nodes
hostpanel scout exec --params '{"command":"hostname"}'
hostpanel scout exec --params '{"command":"cat","args":["/etc/hostname"]}'
hostpanel scout find --params '{"path":"/srv","pattern":"*.log","limit":20}'
hostpanel scout zfs pools
hostpanel scout logs journal --params '{"unit":"docker","lines":50}'

hostpanel help
hostpanel --version

Successful calls print a JSON object with the argv that ran and its captured stdout, stderr, and exitCode; nodes and the help actions print their local answers directly. Exit codes: 0 on success, 1 when a call fails (including a refused command or a non-zero child exit), 2 for usage errors.

MCP server

npx -y @reneturcios/hostpanel mcp

MCP client configuration:

{
  "mcpServers": {
    "hostpanel": {
      "command": "npx",
      "args": ["-y", "@reneturcios/hostpanel", "mcp"]
    }
  }
}
Tools

Both tools take a required action, an optional subaction, and an optional params object. Parameter names inside params follow the original per-action tables (host, container_id, state, name_filter, image_filter, label_filter, path, pattern, depth, limit, command, args, pool, lines, unit, priority, since, until, grep).

ToolActionSubactionWhat it does
fluxdockerinfoDocker daemon information (docker info).
fluxdockerversionDocker version (docker version).
fluxcontainerlistList containers (docker ps), with optional state/name/image/label filters.
fluxcontainerinspectInspect one container (docker inspect); requires container_id.
fluxhostinfoOS, kernel, and architecture (uname -a).
fluxcomposelistList Compose projects (docker compose ls).
fluxhelp—The flux action reference, answered locally.
scoutnodes—The configured hosts: just local in this subset.
scoutexec—Run one allowlisted read command; requires command, optional args.
scoutfind—Find files by glob (find <path> -name <pattern>); requires path and pattern.
scoutzfspoolsList ZFS pools (zpool list), optional pool filter.
scoutlogsjournalRead the systemd journal (journalctl), with optional lines/unit/priority/since/until/grep.
scouthelp—The scout action reference, answered locally.
The exec allowlist

scout exec runs read-only inspection commands only. The full allowlist is 18 commands: cat, head, tail, grep, rg, ls, tree, wc, uniq, diff, stat, file, du, df, pwd, hostname, uptime, and whoami. Anything else — including git, shells, interpreters, and mutating tools — is refused before any process starts. The command must be a single name; arguments travel separately in the args array and are passed as argv, never interpolated into a shell string.

Development

npm install
npm run build   # tsc -> dist/
npm test        # node test runner over test/*.test.ts, fake executor only
npm run dev     # run the CLI from source via tsx

Tests inject a fake executor, so the suite records the argv each action would run and proves refused commands never reach the executor. No Docker daemon, ZFS pool, or journal is needed — and no live host result is claimed by the test suite.

License

MIT — see LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.