The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Codex ServerOps MCP listing page.
Operate the Linux servers you choose from Codex or Claude Code—through normal conversation, without installing a ServerOps agent on them.
ServerOps keeps useful Bash state between operations, returns structured evidence, and opens visible local windows when OpenSSH or sudo needs input. It is for freelancers, agencies, support teams, project owners, and operators who need reliable server work without living in an SSH terminal.
Thin Codex and Claude Code plugins connect to one shared ServerOps core. A guided local assistant creates explicit server profiles without putting credentials into chat.
Ask for an outcome in normal language. ServerOps keeps the working directory and shell environment in a held Bash session, supports interactive terminal work, and returns bounded, structured results instead of an uncontrolled wall of terminal text.
Sessions belong to a local broker-owned worker rather than the disposable MCP process. If the
result of a remote mutation is uncertain, ServerOps reports outcome_unknown and never retries it
automatically. Linux permissions, explicit profiles, visible authentication, controlled elevation,
hash preconditions, and a redacted local audit form the trust layer.
These are realistic prompts for the eight tools available today:
See the step-by-step reproducible demo for expected evidence and safe boundaries.
The current runtime is Windows-first and uses Windows OpenSSH to reach Linux. The detailed tool reference defines the exact operations and schemas.
Install the repository marketplace and plugin. The pinned 0.1.1 MCP creates its own local state
on first start; no prior setup command is required:
Start a new Codex task. Do not add a separate user-wide [mcp_servers.serverops] block when using
the plugin. If a previous installer created that alternative block, preview its removal with
serverops-install codex-config --remove, then repeat with --apply only after review. This keeps
profiles and audit data. Begin without contacting a server:
The Claude Code wrapper uses the same pinned 0.1.1 runtime and client-neutral skills:
If the GitHub shorthand requires an SSH key that is not configured, add the marketplace through HTTPS instead:
Start a new Claude Code session (or reload plugins) and use the same safe first prompt.
Version 0.1.1 starts without a separate setup command. MCP, broker, setup, check, Doctor, and
update share one idempotent bootstrap that prepares only ServerOps-owned local state: the app,
configuration, runtime, audit, migration, and status paths for the current user.
The bootstrap does not edit Codex or Claude configuration, install a Scheduled Task, create a profile, contact a server, request administrator rights, or overwrite an unmanaged file. The visible profile assistant remains the first possible server contact.
The explicit serverops-install setup command remains compatible and idempotent for maintenance
and for previewing the optional broker task; it is no longer a plugin prerequisite.
The version-pinned installer can check the shared runtime or a client path:
doctor --client codex also checks the alternative installer-managed user configuration. A
plugin-only Codex installation can therefore warn that this optional block is absent; that warning
does not prove the plugin is broken.
Install the managed current-user broker task only when live sessions must be reliably rediscovered after an MCP client process restarts. Preview first, then apply explicitly:
The task requests no administrator elevation and stores no password. It does not make sessions survive a Windows reboot or broker crash; the current broker does not adopt orphaned workers.
Select the named customer profile, start read-only, confirm target and identity, inspect only the relevant service evidence, and report facts, hypotheses, gaps, and any changes separately.
Enter a project directory once, retain its shell environment across calls, run bounded commands, and use structured file reads or preconditioned text edits for configured paths.
Use the terminal only when a command genuinely needs interaction, incremental output, interrupt, resize, or retained terminal state. Completed commands can run for up to the configured maximum of 3600 seconds and return exit code, duration, CWD, and truncation state.
List, inspect, search, read, hash, write, patch, rename, create, or remove UTF-8 text paths inside a profile's configured roots. These roots constrain the structured file tools; they do not sandbox shell commands or replace backups.
Passwords, key passphrases, host-key decisions, and interactive sudo input stay in separate visible local windows. ServerOps can use existing OpenSSH behavior or guide a controlled key transition. Sudo remains governed by the server's PAM and sudoers policy.
| Need | ssh host "command" | ServerOps |
|---|---|---|
| One isolated command | Smallest direct option | Works, but often unnecessary |
| Keep CWD and shell environment | Reconstruct it each time | Held in one live Bash session |
| Interactive terminal control | Requires a terminal workflow | Cursor reads, input, interrupt, resize, status |
| Structured text files | Parse and quote shell output | Bounded results and optional hash preconditions |
| Authentication prompts | Terminal-owned | Separate visible local windows |
| Uncertain remote mutation | Operator must reason from transport loss | Explicit unknown-outcome result; no automatic retry |
| Continue after MCP restart | New SSH command | Rediscoverable with the optional broker task while processes remain alive |
ServerOps does not replace SSH. It uses OpenSSH and adds a stateful, structured boundary for AI-led operations where repeated one-off commands become fragile or difficult to review.
The MCP process exposes eight tools. The broker owns session routing, each worker owns exactly one SSH/Bash process, and no ServerOps component is installed remotely. See Architecture and Broker lifecycle.
uv/uvx, and Windows OpenSSH Client for the current release.allowed_roots constrain only structured file tools. Shell commands retain the SSH user's real
permissions.ServerOpsSetup.exe yet; the public release requires Python 3.12 and uvx.| Capability | Status | Boundary |
|---|---|---|
| Profiles, completed commands, interactive terminal | Available | Eight-tool MCP core |
| Stateful broker-owned sessions | Available | While broker, worker, and Bash remain alive |
| MCP-restart rediscovery | Available | Requires optional managed broker task for reliability |
| Structured UTF-8 text files | Available | Configured roots, bounded data, optional SHA-256 preconditions |
| Visible auth, guided sudo, local audit | Available | Local trust layer; Linux policy remains authoritative |
| Codex plugin | Available in 0.1.1 | Exact 0.1.1 runtime pin |
| Claude Code plugin | Available in 0.1.1 | Exact 0.1.1 runtime pin |
| Automatic local bootstrap | Available in 0.1.1 | No setup prerequisite; own state only |
ServerOpsSetup.exe and self-contained Windows runtime | Planned 0.1.2 | No Python/uv prerequisite after delivery |
| Persistent jobs, receipts, eventlog, logs, resumable transfers | Planned 0.2 | Durable operation state, not command wrappers |
| Persistent investigations and incident timelines | Planned 0.3 | Built on the operation store |
| Transactional changes and fleet rollouts | Planned 0.4 | Preconditions, verification, compensation; no exactly-once claim |
| Backup assurance and native database adapters | Planned 0.5 | Only where shell prompting is insufficient |
The machine-readable capability contract keeps this table, evidence paths, tool names, marketplace identities, and public version pins testable.
See ROADMAP.md for the phase definitions. Planned items are not available features.
For support, open a GitHub issue without credentials, private keys, customer hostnames, or production output. Report vulnerabilities through SECURITY.md. ServerOps is available under the MIT License.