Submit

Linux Info Mcp

@ranglust

2 days ago
62(and growing) read-only diagnostic tools that let Claude inspect your Linux fleet without touching it. Files, systemd, performance, networking, processes, disks, kernel, packages, Docker — each a hardened wrapper around a command you already trust, run over your own SSH config. Read-only by construction: there is no code path that restarts a service, edits a file, installs a package, or runs anything that mutates state. Every argument is validated and shell-quoted, flag injection is killed by per-tool whitelists, and hosts can be pinned to an allowlist. Point it at production and sleep. Run any tool on one host, or pass a list to fan out in parallel — bounded, with a hard 25-host ceiling so a curious model can't trigger an SSH storm. Why - Can't break anything — no mutate path exists. No restart, no edit, no install, no -exec. - Injection-hardened — shlex.quote everywhere, flag whitelists, NUL/newline rejection, host allowlist. - Your SSH, your rules — uses your ssh/agent or any wrapper (tsh ssh, jump hosts). Server never sees a credential. - Bounded — byte-capped output, per-call timeouts, capped multi-host fan-out. - Auditable — structured {stdout, stderr, exit_code, truncated} + optional JSONL logs with per-call IDs. Setup Python via uv. One mcpServers entry, tuned by env vars. Works with Claude Desktop and Claude Code.

Server Config

{
  "mcpServers": {
    "linux-info": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/Users/ronenangluster/repos/linux-info-mcp",
        "linux-info-mcp"
      ],
      "env": {
        "LINUX_INFO_SSH_CMD": "ssh",
        "LINUX_INFO_HOSTS": "",
        "LINUX_INFO_TIMEOUT": "30",
        "LINUX_INFO_MAX_BYTES": "1048576",
        "LINUX_INFO_MAX_HOSTS": "10",
        "LINUX_INFO_PARALLELISM": "4",
        "LINUX_INFO_LOG_FILE": "",
        "LINUX_INFO_LOG_LEVEL": "INFO"
      }
    }
  }
}
© 2025 MCP.so. All rights reserved.

Build with ShipAny.