mcp-layer
| Version | 2026.144.1443 |
| Repo | superproject |
harness-mcp-fixture — minimal Streamable-HTTP MCP server stub for harness phase 4
Implements the MCP Streamable HTTP protocol surface that
the mcp: check verb (exercised via charly check live <pod> --filter mcp,
dispatched out-of-process by candy/plugin-mcp) probes: initialize, ping,
tools/list, tools/call.
Advertises three jupyter-named tools (list_notebooks, insert_cell,
execute_cell) so the mcp-protocol-probe recipe’s matchers all
satisfy. Stdlib-only Python (no fastmcp install) keeps the image
small and the build fast.
Services
Section titled “Services”harness-mcp-fixture
Acceptance plan
Section titled “Acceptance plan”This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.
| Intent | Step |
|---|---|
run |
mkdir=/opt/harness-mcp |
run |
write=/opt/harness-mcp/mcp_server.py |
check |
the stdlib MCP server script is baked into the image at /opt/harness-mcp/mcp_server.py |
check |
the python3 interpreter that runs the stub is installed at /usr/bin/python3 |
check |
the python3 package providing the interpreter is installed |
check |
the running fixture answers an MCP ping over its Streamable HTTP endpoint |
check |
a tools/list call advertises the three jupyter-named tools |
check |
the server port accepts a TCP connection from the host |
agent-check |
a tools/call invocation of list_notebooks returns a notebook listing, and insert_cell / execute_cell respond without a JSON-RPC protocol error against the live fixture |