LabscoMCP early access ↗
MHasnainJafriMCP SERVER

DevOps MCP — Secure MCP Server for Linux Server Automation

Let an assistant operate your Linux servers over SSH, with every state-changing command gated behind a token the model never sees.

by MHasnainJafri ↗Editors, Terminals & Local Dev EnvironmentCommunity

LABSCO SUMMARY

The token the model cannot read is the whole design.

A generic run-any-command server on a live box is one confident mistake away from a deleted volume. Here the split is structural: reads are free, writes on a production-like server need a string only you hold, and the genuinely irrecoverable operations need a separate backup attestation on top. The author is equally clear about the limit — once you are in FULL mode with the token, the model can do anything the SSH user can, and backupVerified is your word, not a check.

What it is

A mode-based MCP server for running real servers from an AI client. Reading is always allowed inside a read-only allowlist; changing anything on a production-like box requires a consent token passed out of band, which the model cannot read or fabricate. Discovery is read-only by design, and deployments go through a reviewable script rather than a stream of ad-hoc commands.

What you get

  • 32 tools covering server lifecycle, discovery, execution and audit
  • Three access modes: SAFE (default, read-only allowlist, no expiry), PROVISION (system installs, 1 hour default expiry) and FULL (root, 30 minutes default expiry); sessions drop back to SAFE when they lapse
  • A read-only discovery scan of OS, hardware, listening ports, installed stack, containers, nginx sites and systemd services, persisted as a profile — scan_server, get_server_profile, and diff_server_profile to see what changed since
  • Deployment that plans instead of firing: check_port_conflict names the process holding a port and suggests a free one, and plan_deployment returns an idempotent bash script that the server explicitly does not execute
  • A production write-gate — on a server with role: production, or one the scanner flags as production-like, a non-SAFE command needs consentToken plus acknowledgeProductionWrite: true, and irrecoverable operations additionally need backupVerified: true. Refusals echo the exact resolved command
  • Around 250 read-only verbs that run in SAFE, with quote-aware chain splitting so a diagnostic pipeline like du -sh /opt/* ; echo --- ; df -h / does not force elevation
  • One SSH connection per server keyed by serverId, so two conversations working on two boxes cannot clobber each other; run_command refuses an ambiguous call rather than guessing when two or more servers are connected
  • A JSON-lines audit log of every command, mode change, approval and scan, readable through get_audit_log

Requirements

SSH access to the servers you add — password, a copied key file, an inline key, an external key path, or your existing ~/.ssh/id_*; encrypted keys take a passphrase. Node 18 or newer; clone, npm install, npm run build. Generate the elevation token before you configure anything with openssl rand -hex 24 and store it in a password manager: it goes in DEVOPS_MCP_ELEVATION_TOKEN in your client config, it never expires, and there is no recovery flow — without it, set_mode, approve_action and the production write-gate fall back to accepting the model's own boolean as consent. LOG_LEVEL, LOG_DIR and DEVOPS_MCP_NO_CONSOLE_LOG are optional. MIT licensed.

Setup effort

Build from source — git clone https://github.com/MHasnainJafri/devops-mcp.git devops-mcp