Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

mcp-switchboard-server-harness

A first-party stdio MCP server that gives a coding agent the basics on a remote machine: filesystem, search, git and shell tools. It is a normal MCP server, so mcp-switchboard-client tunnels it like any other.

Tools (34; full schemas and behaviour in spec.md):

  • Files: file_read (paged), file_write, file_delete (directories need recursive=true unless empty), file_move, dir_list (capped at limit, default 500, and does not descend into node_modules, .git, .venv, .direnv and caches), tree_of_files, find_files (honours .gitignore), ripgrep, read_lines, edit_file (returns a diff; dry_run), multi_edit (several atomic edits in one file), apply_patch (unified diff, multi-file, all-or-nothing, dry_run), data_query (read-only JSON / JSONL / CSV / TSV queries)
  • Code navigation: find_symbol (definitions), find_references (universal-ctags if installed, else ripgrep heuristics)
  • Run: run_command and run_python (mode = full/head/tail/grep), run_tests (auto-detects pytest / go / npm / cargo, returns structured failures), output_read / output_grep (page through output that was cut; commands return an output_id), and process_start / process_read / process_kill for long-running work. Long waits are never blocking calls: wait_for_start + wait_for_poll watch a shell predicate harness-side (satisfied when it exits non-zero) so no hub per-call deadline can kill them; a blocked command that hits a timeout returns its partial output (timed_out, exit_code 124), never an error
  • When driving cluster or fleet CLIs through run_command, prefer their machine-readable flags (--json / --parsable / -h) over default table output — Slurm table columns are misalignment-prone and mis-read silently
  • Git: git_status, git_diff, git_show, git_log, git_branch, git_add, git_checkout, git_commit, git_push — git_push declares itself irreversible (tool _meta), so the hub gates it even under approval=never; it takes no arguments, so there is no force-flag path, and a direct push to main/master is flagged in the output

Every tool carries read-only / destructive annotations, output is capped and always flagged when truncated, and commands run under a timeout that kills their whole process group.

File tools are confined to a root (default: the directory the client started in; change it with --root DIR or MCP_SWITCHBOARD_HARNESS_ROOT; --root / lifts it), plus two always-writable neighbours: the scratch directory (<root>/.harness/scratch by default, --scratch DIR or MCP_SWITCHBOARD_HARNESS_SCRATCH; created on first use, disposable) and the system temp directory ($TMPDIR, else /tmp). Cap output with --max-output N or MCP_SWITCHBOARD_HARNESS_MAX_OUTPUT.

Use

mcp-switchboard-client runs it by default as a server named harness; nothing to configure (--no-harness turns it off). To run it standalone or pin your own entry, add it to the mcp.json next to the client:

{
  "mcpServers": {
    "harness": { "command": "uvx", "args": ["mcp-switchboard-server-harness"] }
  }
}

or run it directly: mcp-switchboard-server-harness --name harness.

Security

The root/scratch/temp set only confines the file tools; run_command, run_python and process_start still run arbitrary commands as the user that started the client — anything that user can read (~/.git-credentials, ssh keys) is reachable, and the file-tool confines deliberately let through exactly what those can write, so the two paths never disagree. It is a guard against mistakes and path surprises, not a sandbox; a real one (mount namespace / separate uid) is a hub/OS feature, see docs/SANDBOX_PROPOSAL.md. Keep the hub's private listener unexposed, or set MCP_SWITCHBOARD_PRIVATE_TOKEN.

Metadata

Release files for mcp-switchboard-server-harness 0.3.0.dev4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-switchboard-server-harness 0.3.0.dev4
File Size Uploaded Provenance Actions
mcp_switchboard_server_harness-0.3.0.dev4.tar.gz 53.7 kB Without provenance Details for mcp_switchboard_server_harness-0.3.0.dev4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for mcp-switchboard-server-harness 0.3.0.dev4
File Interpreter ABI Platform Actions
mcp_switchboard_server_harness-0.3.0.dev4-py3-none-any.whl Python 3 none any Details for mcp_switchboard_server_harness-0.3.0.dev4-py3-none-any.whl

Total release size: 92.6 kB

Release files / mcp_switchboard_server_harness-0.3.0.dev4.tar.gz

Download URL mcp_switchboard_server_harness-0.3.0.dev4.tar.gz
Size 53.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c7560e71ab07b0c2621a97054792b12c93e1bc546fb0d4ce73e6a4212fc45db8
BLAKE2b-256 checksum
How to use checksums
1e7faaa688ef3fceeabbd87c385b69f945ae95cc096196d216361da1e96fa6fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / mcp_switchboard_server_harness-0.3.0.dev4-py3-none-any.whl

Download URL mcp_switchboard_server_harness-0.3.0.dev4-py3-none-any.whl
Size 38.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
933af7e9821c49e26ecf647b1124442a738b69284e602e990a579cf210c00242
BLAKE2b-256 checksum
How to use checksums
06bccce4a127578cecf7992529511536362abd0c8c807fddf87ba3aaaa5ee9d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Security for mcp-switchboard-server-harness 0.3.0.dev4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page