Implements the stdio transport for the MCP server, enabling communication with local agents (Claude Desktop, Claude Code, Continue, Cursor) over standard input/output with Content-Length framing. Core features: - LSP-style Content-Length framing with \r\n terminators - JSON-RPC 2.0 message parsing and serialization - INV-9 compliance: stdout contains only JSON-RPC frames - Panic hook redirects panics to stderr - SIGTERM handler for graceful shutdown - Parse errors return -32700 with id: null, then continue Acceptance criteria: - ✅ Piping tools/list with framing produces expected response < 50ms - ✅ EOF on stdin → clean exit within 100ms - ✅ Malformed JSON → -32700 error, subsequent requests work - ✅ No println!/log output to stdout (INV-9 enforced) - ✅ Panics go to stderr, no partial JSON on stdout - ✅ SIGTERM → exit 0, SIGINT → immediate non-zero exit Tests added: - crates/pdftract-cli/tests/mcp-stdio.rs (8 integration tests, all pass) - All 49 existing unit tests continue to pass Refs: pdftract-67tm8, plan Phase 6.7.2
1 line
41 B
Text
1 line
41 B
Text
d7c6f3abe2b8646511010ef0527ab10b169e3de9
|