You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Layers an out-of-process protocol-conformance and client-compatibility suite on
top of the integration scaffolding vendored from #1509:
- conftest.py: one session-scoped Echidna+MCP server shared by all modules
(honors ECHIDNA_MCP_URL to target an already-running server)
- _mcp_client.py: dependency-light wire-level JSON-RPC/HTTP helpers
- test_mcp_conformance.py: asserts the transport guarantees strict clients need
(notification -> 202 empty body, GET SSE -> 405, handshake, error codes)
- test_mcp_codex.py: replays Codex's strict rmcp handshake
- test_mcp_claude.py: drives the server with the official `mcp` SDK (Claude)
- test_mcp.py: refactored to share the conftest fixture (originally @datradito)
- mcp-tests.yml: CI runs the full suite (tools + conformance + Claude + Codex)
Verified end-to-end: 12/12 pass against the current (fixed) server; against the
pre-fix haskell-mcp-server (9fd60af) the conformance + Codex tests fail on the
`200 {}` notification (the bug that broke Codex) while the lenient Claude SDK
passes -- which is exactly why the strict conformance/Codex layer is needed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments