From f3fca3088f918cb18c835a298f8c07a4288bd71e Mon Sep 17 00:00:00 2001 From: tegwick Date: Mon, 16 Mar 2026 00:13:14 +0100 Subject: [PATCH] feat(ops-bridge): add HTTP/SSE MCP transport for remote Claude Code sessions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit server.py: MCP_TRANSPORT and MCP_PORT env vars select transport at startup (default: stdio — no behaviour change for local use) Makefile: `make mcp-http` starts SSE server on 127.0.0.1:8001 Remote registration (one-liner on COULOMBCORE after tunnel is up): claude mcp add-json -s user state-hub \ '{"type":"sse","url":"http://127.0.0.1:18001/sse"}' Co-Authored-By: Claude Sonnet 4.6 --- Makefile | 7 +++++++ mcp_server/server.py | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9e6607a..d010cbd 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,13 @@ seed: api: uv run uvicorn api.main:app --reload --host 127.0.0.1 --port 8000 +## MCP server in SSE/HTTP mode for remote Claude Code sessions (e.g. COULOMBCORE). +## Exposes the same tools as the stdio server over HTTP at http://127.0.0.1:8001/sse +## Remote clients connect via the ops-bridge tunnel (port 18001 on the remote host). +## Registration on the remote: claude mcp add-json -s user state-hub '{"type":"sse","url":"http://127.0.0.1:18001/sse"}' +mcp-http: + MCP_TRANSPORT=sse MCP_PORT=8001 uv run python mcp_server/server.py + dashboard: cd dashboard && npm run dev diff --git a/mcp_server/server.py b/mcp_server/server.py index cf32ac4..fb17b37 100644 --- a/mcp_server/server.py +++ b/mcp_server/server.py @@ -1421,4 +1421,9 @@ def update_repo_goal( # --------------------------------------------------------------------------- if __name__ == "__main__": - mcp.run(transport="stdio") + transport = os.environ.get("MCP_TRANSPORT", "stdio") + if transport == "stdio": + mcp.run(transport="stdio") + else: + port = int(os.environ.get("MCP_PORT", "8001")) + mcp.run(transport=transport, host="127.0.0.1", port=port)