Implements the HTTP+SSE transport for the MCP server per bead pdftract-g0ro2. All acceptance criteria PASS. Routes: - POST /: JSON-RPC requests (single or batch) - GET /sse: Server-Sent Events for notifications - GET /health: Health check (auth-exempt) Key features: - Reuses axum/tokio/tower-http from Phase 6.4 (no new deps) - Bearer token auth (from sibling bead 6.7.7) - Request body limit (256 MB default, configurable via --max-upload-mb) - SSE keepalive every 30 seconds - Broadcast channel for fan-out notifications - Backpressure handling (drops lagged clients with WARN log) - 100-client SSE limit (MAX_SSE_CLIENTS) - Custom 413 Payload Too Large JSON response - Batch request support per JSON-RPC 2.0 spec All 10 integration tests pass: - test_post_tools_list: POST / returns tool catalog - test_get_sse_stream: GET /sse opens SSE stream with keepalive - test_50_concurrent_clients: 50 concurrent clients succeed - test_health_during_load: GET /health returns 200 under load - test_post_batch_request: Batch requests return batch responses - test_post_payload_too_large: POST / over limit returns 413 with JSON body - test_auth_required_for_non_loopback: Bearer auth returns 401 with WWW-Authenticate - test_post_single_request_returns_single_response: Single request returns single response - test_unknown_method: Unknown method returns method_not_found error - test_get_health: GET /health returns 200 with version info Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| conformance.rs | ||
| mcp-http.rs | ||
| mcp-stdio.rs | ||