System Explorer MCP
Provides read-only observation of Docker resources on a host, such as containers, images, networks, and volumes.
Provides read-only system observation for Linux hosts, covering systemd, storage, Docker, VMs, network, and hardware.
Provides read-only observation of the NixOS deployment itself, including its configuration and deployment state.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@System Explorer MCPlist all hosts and show their current status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
System Explorer
Read-only observation for Linux hosts: systemd, storage/ZFS, Docker, VMs, network, hardware and the NixOS deployment itself, presented as a graph of native objects with provenance — consumed by AI agents over HTTP/MCP and by the operator through a designed UI. One contract for both.
A three-tier rewrite is under way, and it is where the direction lives. docs/DESIGN.md is the record of intent and outranks every other document here, including this one; docs/PLAN.md is the phased plan and its gates. The documents below describe the product running today, which the rewrite replaces at the cut — they stay normative for what is deployed and are not the place to learn where this is going.
Model and direction | docs/DESIGN.md — the rewrite's record of intent, and what outranks everything else |
Plan and gates | docs/PLAN.md — phases 0–6, and what each gate claims |
Specification | docs/SPEC.md — the shipping product, superseded at the cut |
Roadmap | docs/ROADMAP.md — the shipping product's direction, superseded |
Contract | schema/ — JSON Schemas plus example envelopes |
Conformance suite | conformance/ — the spec's teeth |
VM test matrix | test/vm-lab/ — disposable Fedora/Debian/Ubuntu/NixOS guests for packaging tests |
This repository is the canonical source and a self-contained Nix flake. The author's own hosts consume it the same way you would — as a flake input using nix/module.nix — so the documented install path is the one running in production, not a second-class path nobody exercises.
The backlog that drives this — every question the observer could not yet answer — is kept privately alongside the deployment it came from, because each entry cites the host and evidence that raised it. Findings graduate into docs/ROADMAP.md once they are general.
Running it on your NixOS host
{
inputs.system-explorer.url = "github:techiebod/system-explorer";
outputs = { nixpkgs, system-explorer, ... }: {
nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
modules = [
system-explorer.nixosModules.default
{
services.systemExplorer = {
enable = true;
# loopback by default; widen deliberately (the trust boundary is
# yours — SPEC section 7):
# listenAddress = "0.0.0.0"; openFirewall = true;
# per-adapter grants, each a documented decision:
# enableDockerAdapter = true; # docker group is root-equivalent
# grantNetAdmin = true; # nftables ruleset
# extraPackages = [ pkgs.zfs ]; # pools/datasets on ZFS hosts
};
}
];
};
};
}The UI is served by the agent at http://<host>:8091/; the same envelopes
are available to agents under /v1/… (see SPEC section 6).
Related MCP server: Linux MCP Server
MCP
se-mcp (SPEC section 9) aggregates one or more host agents for MCP
clients — same envelopes, eight read-only tools (list_hosts,
get_status, get_fact_dictionary, get_collection, get_object,
get_evidence, lookup, what_changed). Enable it via nixosModules.mcp:
services.systemExplorerMcp = {
enable = true;
agents = { myhost = "http://localhost:8091"; };
# transport = "sse"; # for legacy /sse + /messages/ broker layouts
};Then point a client at http://<host>:8092/mcp (streamable-http), e.g.:
claude mcp add --transport http system-explorer http://<host>:8092/mcpThere is no authentication in the server itself; put your edge in front of it (Cloudflare Access, tailnet, or loopback-only), exactly as with the agent.
Per-site hub
se-hub fronts several agents at one address: it proxies their GETs verbatim
and serves the same UI, with a host selector. Stateless — no polling, no
cache — so losing it costs convenience, never data. Enable it via
nixosModules.hub:
services.systemExplorerHub = {
enable = true;
site = "site-a";
agents = { host-a = "http://localhost:8091"; host-b = "http://host-b:8091"; };
};Then browse http://<host>:8090/.
Ad-hoc run without the module: nix run .# -- --port 8091 then browse
localhost:8091 (the default is 127.0.0.1:8091; capabilities degrade honestly
for anything the process cannot reach). --host, --port and --log-level
each also read an environment variable — SE_HOST, SE_PORT, SE_LOG_LEVEL
— so a single EnvironmentFile configures the service on any init system.
Outside Nix it is an ordinary Python distribution:
pip install . # or .[vms] on a libvirt host, .[mcp] for se-mcp
se-agent --host 0.0.0.0 --port 8091Conformance
nix flake check # builds the package, which runs the suite inside it
# or, with pytest + jsonschema available, from the repo root:
pytest -qThe suite exercises the schemas, the example fixtures, the adapter sources
(the subprocess allow-list and the UI no-HTML-sink lint are armed and
enforced), and the severity rule modules under
src/system_explorer/agent/rules/ directly. Fixtures under
schema/examples/ are also the UI design track's sample data.
Portability
NixOS is the first-class deployment, not the boundary of the product: the
target is systemd-based Linux distributions on x86-64/arm64, and the
packaging path (pyproject as the one dependency truth, then a hardened
.deb) is laid out in docs/ROADMAP.md §5. Until those
steps land, non-NixOS installs use Nix-the-package-manager as described in
AGENTS.md.
License
GPL-3.0-or-later. Copyright © 2026 techiebod henry@techiebod.com.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceRead-only MCP server for on-prem Linux VMs and PostgreSQL over SSH. Check service health, retrieve bounded logs, inspect DB state, and explore table schemas — without terminal access.101MIT
- AlicenseNot gradedqualityBmaintenanceA read-only MCP server for Linux and macOS system administration, diagnostics, and troubleshooting, supporting remote SSH execution and multi-host management.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables read-only observability of a Linux host via MCP, exposing allowlisted systemd, docker, nginx, logs, disk, and cert info without shell access.MIT
- AlicenseNot gradedqualityCmaintenanceRead-only MCP server to inspect allowlisted Docker containers, systemd services, JSONL logs, and HTTP health endpoints without arbitrary shell access.MIT
Related MCP Connectors
Read-only XRP Ledger MCP tools with proof-annotation envelopes and signed daily snapshots.
Read-only Remote MCP for externally grounded AI agent trust receipts.
MCP server for hex.pm and hexdocs.pm: search, inspect, compare, and audit Elixir packages
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/techiebod/system-explorer'
If you have feedback or need assistance with the MCP directory API, please join our Discord server