Re-testing turned up a different picture from the originally reported issue: the "no index found" stdout-corruption theory doesn't actually hold up — that warning is written to stderr, not stdout, and a manually-sent initialize request gets a clean, well-formed JSON-RPC response even with a stale/missing index. (The original 10-violation "server exited" result in our first pass looks like it was an artifact of our own launch-command quoting, not a real server bug — apologies for the false alarm there.) With a corrected launch and pinned to spec revision 2026-07-28, the real, reproducible finding is that the new pre-handshake server/discover method either times out or returns a JSON-RPC -32602 Invalid request parameters error, and a version-less tools/list/handshake request is likewise rejected with -32602 instead of being served on a default version — 7 requirements violated. The plain official-SDK handshake and tools/list still work fine (see "Official SDK interop" passes below), so this looks like a gap in support for the newer revision's server/discover capability specifically, not a broader server problem.
Conformance report
MCP 2026-07-28 conformance report
Verdict: not conformant — 7 requirements violated.
|
|
| Target |
sh -c "pip install --break-system-packages 'roam-code[mcp]' && roam mcp" |
| Transport |
stdio |
| Revision tested |
2026-07-28 |
| Revisions supported |
2026-07-28, 2025-11-25 |
| Passed |
7 |
| Failed |
7 |
| Not verified |
22 |
| Cases applied |
36 |
| Duration |
25679ms |
| Tool |
@hasmcp/mcp-spec-test 0.1.1 |
Failed (7)
the server deviates from the spec here
server/discover
- server/discover is answered without a session or handshake
expected 200, got 0: {"_raw":"no response within 10000ms"}
- server/discover advertises the versions the server can serve
server/discover unexpected JSON-RPC error: {"code":-32602,"message":"Invalid request parameters","data":""}
- server/discover is a CacheableResult with usable cache hints
server/discover unexpected JSON-RPC error: {"code":-32602,"message":"Invalid request parameters","data":""}
- server/discover reports server identity and capabilities
server/discover unexpected JSON-RPC error: {"code":-32602,"message":"Invalid request parameters","data":""}
- server/discover is stable across calls within its own TTL
server/discover unexpected JSON-RPC error: {"code":-32602,"message":"Invalid request parameters","data":""}
- server/discover advertises a revision this suite supports
server/discover unexpected JSON-RPC error: {"code":-32602,"message":"Invalid request parameters","data":""}
Version negotiation
- a request with no version at all is served on the default
a version-less tools/list must be served, not refused: {"code":-32602,"message":"Invalid request parameters","data":""}
Not verified (22)
skipped; a skip is not a pass
Capability methods
- tools/list returns schema-conformant tools
cannot determine what the target supports — server/discover returned no result (status 0)
- tools/call on an unknown tool is an error, not a crash
cannot determine what the target supports — server/discover returned no result (status 0)
- tools/call returns a schema-conformant CallToolResult
cannot determine what the target supports — server/discover returned no result (status 0)
- prompts/list returns schema-conformant prompts
cannot determine what the target supports — server/discover returned no result (status 0)
- prompts/get returns messages with a role and content
cannot determine what the target supports — server/discover returned no result (status 0)
- resources/list returns schema-conformant resources
cannot determine what the target supports — server/discover returned no result (status 0)
- resources/templates/list returns schema-conformant templates
cannot determine what the target supports — server/discover returned no result (status 0)
- resources/read returns contents for every sampled resource
cannot determine what the target supports — server/discover returned no result (status 0)
- resources/read on an unknown uri is an error
cannot determine what the target supports — server/discover returned no result (status 0)
- following nextCursor terminates and does not repeat a page
cannot determine what the target supports — server/discover returned no result (status 0)
- an invalid pagination cursor is rejected (SHOULD)
cannot determine what the target supports — server/discover returned no result (status 0)
Version negotiation
- a version declared in _meta is accepted
cannot determine what the target supports — server/discover returned no result (status 0)
- an unsupported version is rejected with the supported list
cannot determine what the target supports — server/discover returned no result (status 0)
- clientInfo is optional (SHOULD, not MUST)
cannot determine what the target supports — server/discover returned no result (status 0)
Result envelope
- every result carries the required resultType
cannot determine what the target supports — server/discover returned no result (status 0)
- cacheable list results carry the schema-required cache hints
cannot determine what the target supports — server/discover returned no result (status 0)
- results identify the server in _meta
cannot determine what the target supports — server/discover returned no result (status 0)
- a client on an older version receives no newer-revision fields
cannot determine what the target supports — server/discover returned no result (status 0)
subscriptions/listen
- subscriptions/listen acknowledges only the opted-in notification types
cannot determine what the target supports — server/discover returned no result (status 0)
- the acknowledgment carries the subscription id for correlation
cannot determine what the target supports — server/discover returned no result (status 0)
- a listen requesting no notification types is not a subscription to everything
cannot determine what the target supports — server/discover returned no result (status 0)
- a cancelled subscription ends with a conformant teardown result, if it sends one
cannot determine what the target supports — server/discover returned no result (status 0)
Passed (7)
checked and conformant
server/discover
- the suite is reading a schema that matches the features it selected
Result envelope
- schema sanity: the envelope fields match the features selected
Official SDK interop
- the official SDK does not yet implement the newest revision
- a stock official-SDK client completes the handshake
- the handshake settles on a revision inside the supported window
- a stock official-SDK client can list tools
subscriptions/listen
- schema sanity: SubscriptionsListenResult requires _meta and resultType
How to reproduce
With Docker:
docker pull hasmcp/mcp-spec-test:latest
docker run --rm hasmcp/mcp-spec-test -c "sh -c \"pip install --break-system-packages 'roam-code[mcp]' && roam mcp\"" --spec-version 2026-07-28
(or, if that image can't run on your platform: git clone https://github.com/hasmcp/mcp-spec-test && cd mcp-spec-test && docker build -t mcp-spec-test . && docker run --rm mcp-spec-test -c "sh -c \"pip install --break-system-packages 'roam-code[mcp]' && roam mcp\"" --spec-version 2026-07-28)
Without Docker (npx):
npx @hasmcp/mcp-spec-test@latest -c "sh -c \"pip install 'roam-code[mcp]' && roam mcp\"" --spec-version 2026-07-28
This issue was generated by an automated MCP conformance sweep across public MCP server repos. If server/discover/the 2026-07-28 revision isn't a support target yet, feel free to close it — it's meant as a heads-up, not a demand.
Re-testing turned up a different picture from the originally reported issue: the "no index found" stdout-corruption theory doesn't actually hold up — that warning is written to stderr, not stdout, and a manually-sent
initializerequest gets a clean, well-formed JSON-RPC response even with a stale/missing index. (The original 10-violation "server exited" result in our first pass looks like it was an artifact of our own launch-command quoting, not a real server bug — apologies for the false alarm there.) With a corrected launch and pinned to spec revision 2026-07-28, the real, reproducible finding is that the new pre-handshakeserver/discovermethod either times out or returns a JSON-RPC-32602 Invalid request parameterserror, and a version-lesstools/list/handshake request is likewise rejected with-32602instead of being served on a default version — 7 requirements violated. The plain official-SDK handshake and tools/list still work fine (see "Official SDK interop" passes below), so this looks like a gap in support for the newer revision'sserver/discovercapability specifically, not a broader server problem.Conformance report
MCP 2026-07-28 conformance report
Verdict: not conformant — 7 requirements violated.
sh -c "pip install --break-system-packages 'roam-code[mcp]' && roam mcp"Failed (7)
the server deviates from the spec here
server/discover
expected 200, got 0: {"_raw":"no response within 10000ms"}
server/discover unexpected JSON-RPC error: {"code":-32602,"message":"Invalid request parameters","data":""}
server/discover unexpected JSON-RPC error: {"code":-32602,"message":"Invalid request parameters","data":""}
server/discover unexpected JSON-RPC error: {"code":-32602,"message":"Invalid request parameters","data":""}
server/discover unexpected JSON-RPC error: {"code":-32602,"message":"Invalid request parameters","data":""}
server/discover unexpected JSON-RPC error: {"code":-32602,"message":"Invalid request parameters","data":""}
Version negotiation
a version-less tools/list must be served, not refused: {"code":-32602,"message":"Invalid request parameters","data":""}
Not verified (22)
skipped; a skip is not a pass
Capability methods
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
Version negotiation
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
Result envelope
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
subscriptions/listen
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
cannot determine what the target supports — server/discover returned no result (status 0)
Passed (7)
checked and conformant
server/discover
Result envelope
Official SDK interop
subscriptions/listen
How to reproduce
With Docker:
(or, if that image can't run on your platform:
git clone https://github.com/hasmcp/mcp-spec-test && cd mcp-spec-test && docker build -t mcp-spec-test . && docker run --rm mcp-spec-test -c "sh -c \"pip install --break-system-packages 'roam-code[mcp]' && roam mcp\"" --spec-version 2026-07-28)Without Docker (npx):
This issue was generated by an automated MCP conformance sweep across public MCP server repos. If
server/discover/the 2026-07-28 revision isn't a support target yet, feel free to close it — it's meant as a heads-up, not a demand.