mcp-switchboard-server-harness 0.3.0.dev3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,18 @@
1
+ __pycache__/
2
+ *.pyc
3
+ *.egg-info/
4
+ .venv/
5
+ venv/
6
+ build/
7
+ dist/
8
+ # ...except the console's, which is committed on purpose: the hub embeds it, so
9
+ # `go build` has to work without npm (spec.md U1). CI rebuilds it and fails if
10
+ # this copy is stale.
11
+ !hub/web/dist/
12
+ .pytest_cache/
13
+ .mypy_cache/
14
+ .ruff_cache/
15
+ .env
16
+ result
17
+ result-*
18
+ .direnv/
@@ -0,0 +1,60 @@
1
+ Metadata-Version: 2.5
2
+ Name: mcp-switchboard-server-harness
3
+ Version: 0.3.0.dev3
4
+ Summary: A stdio MCP server exposing filesystem, git and shell tools for coding agents
5
+ Author: Akos Papp
6
+ License: MIT
7
+ Keywords: coding-agent,mcp,model-context-protocol,switchboard
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Programming Language :: Python :: 3
11
+ Requires-Python: >=3.10
12
+ Requires-Dist: mcp<3,>=2.2
13
+ Provides-Extra: test
14
+ Requires-Dist: pytest>=8; extra == 'test'
15
+ Description-Content-Type: text/markdown
16
+
17
+ # mcp-switchboard-server-harness
18
+
19
+ A first-party stdio MCP server that gives a coding agent the basics on a
20
+ remote machine: filesystem, search, git and shell tools. It is a normal MCP
21
+ server, so [mcp-switchboard-client](../../client) tunnels it like any other.
22
+
23
+ Tools (24; full schemas and behaviour in [spec.md](../../spec.md#4-harness-server)):
24
+
25
+ - **Files:** `file_read` (paged), `file_write`, `file_delete`, `file_move`, `dir_list`, `tree_of_files`,
26
+ `find_files` (honours `.gitignore`), `ripgrep`, `read_lines`, `edit_file`
27
+ - **Run:** `run_command`, `run_python`, and `process_start` / `process_read` / `process_kill` for
28
+ long-running work
29
+ - **Git:** `git_status`, `git_diff`, `git_show`, `git_log`, `git_branch`, `git_add`, `git_checkout`,
30
+ `git_commit`, `git_push`
31
+
32
+ Every tool carries read-only / destructive annotations, output is capped and always flagged when
33
+ truncated, and commands run under a timeout that kills their whole process group.
34
+
35
+ File tools are confined to a **root** (default: the directory the client started in). Change it with
36
+ `--root DIR` or `MCP_SWITCHBOARD_HARNESS_ROOT`; `--root /` lifts it. Cap output with `--max-output N`
37
+ or `MCP_SWITCHBOARD_HARNESS_MAX_OUTPUT`.
38
+
39
+ ## Use
40
+
41
+ `mcp-switchboard-client` runs it by default as a server named `harness`; nothing to
42
+ configure (`--no-harness` turns it off). To run it standalone or pin your own
43
+ entry, add it to the `mcp.json` next to the client:
44
+
45
+ ```json
46
+ {
47
+ "mcpServers": {
48
+ "harness": { "command": "uvx", "args": ["mcp-switchboard-server-harness"] }
49
+ }
50
+ }
51
+ ```
52
+
53
+ or run it directly: `mcp-switchboard-server-harness --name harness`.
54
+
55
+ ## Security
56
+
57
+ The root only confines the *file* tools; `run_command`, `run_python` and `process_start`
58
+ still run arbitrary commands as the user that started the client. It is a guard against mistakes
59
+ and path tricks, not a sandbox. Keep the hub's private listener unexposed, or
60
+ set `MCP_SWITCHBOARD_PRIVATE_TOKEN`.
@@ -0,0 +1,44 @@
1
+ # mcp-switchboard-server-harness
2
+
3
+ A first-party stdio MCP server that gives a coding agent the basics on a
4
+ remote machine: filesystem, search, git and shell tools. It is a normal MCP
5
+ server, so [mcp-switchboard-client](../../client) tunnels it like any other.
6
+
7
+ Tools (24; full schemas and behaviour in [spec.md](../../spec.md#4-harness-server)):
8
+
9
+ - **Files:** `file_read` (paged), `file_write`, `file_delete`, `file_move`, `dir_list`, `tree_of_files`,
10
+ `find_files` (honours `.gitignore`), `ripgrep`, `read_lines`, `edit_file`
11
+ - **Run:** `run_command`, `run_python`, and `process_start` / `process_read` / `process_kill` for
12
+ long-running work
13
+ - **Git:** `git_status`, `git_diff`, `git_show`, `git_log`, `git_branch`, `git_add`, `git_checkout`,
14
+ `git_commit`, `git_push`
15
+
16
+ Every tool carries read-only / destructive annotations, output is capped and always flagged when
17
+ truncated, and commands run under a timeout that kills their whole process group.
18
+
19
+ File tools are confined to a **root** (default: the directory the client started in). Change it with
20
+ `--root DIR` or `MCP_SWITCHBOARD_HARNESS_ROOT`; `--root /` lifts it. Cap output with `--max-output N`
21
+ or `MCP_SWITCHBOARD_HARNESS_MAX_OUTPUT`.
22
+
23
+ ## Use
24
+
25
+ `mcp-switchboard-client` runs it by default as a server named `harness`; nothing to
26
+ configure (`--no-harness` turns it off). To run it standalone or pin your own
27
+ entry, add it to the `mcp.json` next to the client:
28
+
29
+ ```json
30
+ {
31
+ "mcpServers": {
32
+ "harness": { "command": "uvx", "args": ["mcp-switchboard-server-harness"] }
33
+ }
34
+ }
35
+ ```
36
+
37
+ or run it directly: `mcp-switchboard-server-harness --name harness`.
38
+
39
+ ## Security
40
+
41
+ The root only confines the *file* tools; `run_command`, `run_python` and `process_start`
42
+ still run arbitrary commands as the user that started the client. It is a guard against mistakes
43
+ and path tricks, not a sandbox. Keep the hub's private listener unexposed, or
44
+ set `MCP_SWITCHBOARD_PRIVATE_TOKEN`.
@@ -0,0 +1,32 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "mcp-switchboard-server-harness"
7
+ version = "0.3.0.dev3"
8
+ description = "A stdio MCP server exposing filesystem, git and shell tools for coding agents"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = { text = "MIT" }
12
+ authors = [{ name = "Akos Papp" }]
13
+ keywords = ["mcp", "model-context-protocol", "coding-agent", "switchboard"]
14
+ classifiers = [
15
+ "Programming Language :: Python :: 3",
16
+ "License :: OSI Approved :: MIT License",
17
+ "Operating System :: OS Independent",
18
+ ]
19
+ dependencies = ["mcp>=2.2,<3"]
20
+
21
+ [project.optional-dependencies]
22
+ test = ["pytest>=8"]
23
+
24
+ [project.scripts]
25
+ mcp-switchboard-server-harness = "mcp_switchboard_server_harness.server:main"
26
+
27
+ [tool.hatch.build.targets.wheel]
28
+ packages = ["src/mcp_switchboard_server_harness"]
29
+
30
+ [tool.pytest.ini_options]
31
+ testpaths = ["tests"]
32
+ pythonpath = ["src"]
@@ -0,0 +1,3 @@
1
+ """A stdio MCP server exposing filesystem, git and shell tools for coding agents."""
2
+
3
+ __version__ = "0.3.0"
@@ -0,0 +1,3 @@
1
+ from .server import main
2
+
3
+ main()