Labels: enhancement, VEP
What you're trying to do
vouch serve today is stdio + JSONL only, so vouch can't run as a network MCP server. As a result, five Claude surfaces are blocked: Claude.ai web Custom Connectors, Claude mobile (write), Claude Managed Agents, the Messages-API mcp_servers field, and Anthropic Computer Use. They each require a publicly reachable HTTPS MCP endpoint, and vouch has nothing to point at.
This is the single highest-leverage change. ROADMAP 0.1 already scopes it.
Suggested shape
vouch serve --transport http \
--bind 127.0.0.1:7777 \
--auth bearer
- New module
src/vouch/http_server.py wraps the same kb.* handlers as jsonl_server.py but speaks MCP-over-Streamable-HTTP (per the official MCP spec).
- Auth: read
bearer_tokens: [...] (or bearer_token: env:VOUCH_TOKEN) from config.yaml under a new serve section; reject unauthenticated requests with HTTP 401.
- Defaults: bind
127.0.0.1, refuse to start unbound (0.0.0.0) without an explicit auth config.
- Ship a reference deployment under
adapters/http-tunnel/: Dockerfile + fly.toml + a Cloudflare Tunnel compose.yml.
Acceptance
vouch serve --transport http exposes the full kb.* method surface as a Custom Connector that Claude.ai can register.
- Without a Bearer token, requests return
401; with a valid token, behavior matches stdio/JSONL.
- A test pack from
vouchdev/setup-vouch (or curl) hits /health and /messages end-to-end.
- Default bind is localhost;
--bind 0.0.0.0 errors out unless --auth bearer is set.
Out of scope
Labels: enhancement, VEP
What you're trying to do
vouch servetoday is stdio + JSONL only, so vouch can't run as a network MCP server. As a result, five Claude surfaces are blocked: Claude.ai web Custom Connectors, Claude mobile (write), Claude Managed Agents, the Messages-APImcp_serversfield, and Anthropic Computer Use. They each require a publicly reachable HTTPS MCP endpoint, and vouch has nothing to point at.This is the single highest-leverage change. ROADMAP 0.1 already scopes it.
Suggested shape
vouch serve --transport http \ --bind 127.0.0.1:7777 \ --auth bearersrc/vouch/http_server.pywraps the samekb.*handlers asjsonl_server.pybut speaks MCP-over-Streamable-HTTP (per the official MCP spec).bearer_tokens: [...](orbearer_token: env:VOUCH_TOKEN) fromconfig.yamlunder a newservesection; reject unauthenticated requests with HTTP 401.127.0.0.1, refuse to start unbound (0.0.0.0) without an explicit auth config.adapters/http-tunnel/: Dockerfile +fly.toml+ a Cloudflare Tunnelcompose.yml.Acceptance
vouch serve --transport httpexposes the fullkb.*method surface as a Custom Connector that Claude.ai can register.401; with a valid token, behavior matches stdio/JSONL.vouchdev/setup-vouch(or curl) hits/healthand/messagesend-to-end.--bind 0.0.0.0errors out unless--auth beareris set.Out of scope