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 (26; full schemas and behaviour in spec.md). The core
set deliberately mirrors the tool suite a Claude Code / opencode-style agent already knows:
bash, read, write, edit, glob, grep — plus the extras listed below.
- Files:
read(line-numberedN:output, paged withoffset/limit, lists directories),write,edit(exact-string replace, returns a diff;dry_run,replace_all),apply_patch(unified diff, multi-file, all-or-nothing,dry_run),file_delete(directories needrecursive=trueunless empty),file_move - Search:
glob(honours.gitignore, newest first),grep(regex over contents) - Run:
bash(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 anoutput_id), andprocess_start/process_read/process_killfor long-running work. Long waits are never blocking calls:wait_for_start+wait_for_pollwatch 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_code124), never an error - When driving cluster or fleet CLIs through
bash, 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_pushdeclares itself irreversible (tool_meta), so the hub gates it even underapproval=never; it takes no arguments, so there is no force-flag path, and a direct push tomain/masteris 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.4.0.dev6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mcp_switchboard_server_harness-0.4.0.dev6.tar.gz | 42.5 kB | Without provenance | Details for mcp_switchboard_server_harness-0.4.0.dev6.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mcp_switchboard_server_harness-0.4.0.dev6-py3-none-any.whl | Python 3 | none | any | Details for mcp_switchboard_server_harness-0.4.0.dev6-py3-none-any.whl |
Total release size: 73.6 kB
Release files / mcp_switchboard_server_harness-0.4.0.dev6.tar.gz
| Download URL | mcp_switchboard_server_harness-0.4.0.dev6.tar.gz |
|---|---|
| Size | 42.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eb627580a9f6065e7aa5f2839065d4dc464c1dbdc9f71e6d65514a16c18ec2f3
|
|
BLAKE2b-256 checksum How to use checksums |
e8f3c656446a65ae1bd6b973f538908a026db0719ceac034efd2f25988c60373
|
| 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.4.0.dev6-py3-none-any.whl
| Download URL | mcp_switchboard_server_harness-0.4.0.dev6-py3-none-any.whl |
|---|---|
| Size | 31.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f4703299c5b2d2756a67eb9a9bc1fd56463166c359422f410916bcd0f3c43630
|
|
BLAKE2b-256 checksum How to use checksums |
cb9e121faf2f87f322596313f37e8f0fe13afa345e2e1391a0d04e2c121327dc
|
| 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.4.0.dev6
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.