MCP spec conformance: 10 requirement(s) violated (via @hasmcp/mcp-spec-test) — spec 2026-07-28

#24 · open · 0 comments

View on GitHub ↗

hasmcp-dev

Running the `@hasmcp/mcp-spec-test` conformance suite against `npx -y lightswind mcp`, tested against protocol revision `2026-07-28`, shows the server process exiting immediately rather than completing the stdio handshake. Every check that depends on a live session (server/discover, version negotiation, and interop with the official MCP SDK client) fails or is skipped as a result, for 10 violated requirements total. This may be an environment/dependency issue in the test container rather than a bug specific to this server — please feel free to close if it doesn't reproduce in a normal environment. ## Conformance report # MCP 2026-07-28 conformance report **Verdict: not conformant** — 10 requirements violated. | | | | --- | --- | | Target | `npx -y lightswind mcp` | | Transport | stdio | | Revision tested | 2026-07-28 | | Revisions supported | 2026-07-28, 2025-11-25 | | Passed | 4 | | Failed | 10 | | Not verified | 22 | | Cases applied | 36 | | Duration | 10978ms | | Generated | 2026-08-24T05:21:51.447Z | | Tool | @hasmcp/mcp-spec-test 0.1.1 | ## Failed (10) _the server deviates from the spec here_ ### server/discover - **server/discover is answered without a session or handshake** expected 200, got 0: {"_raw":"server exited"} 0 !== 200 - **server/discover advertises the versions the server can serve** Cannot read properties of undefined (reading 'supportedVersions') - **server/discover is a CacheableResult with usable cache hints** Cannot read properties of undefined (reading 'ttlMs') - **server/discover reports server identity and capabilities** Cannot read properties of undefined (reading 'capabilities') - **server/discover is stable across calls within its own TTL** Cannot read properties of undefined (reading 'supportedVersions') - **server/discover advertises a revision this suite supports** Cannot read properties of undefined (reading 'supportedVersions') ### Version negotiation - **a request with no version at all is served on the default** a version-less request must be served, got 0: {"_raw":"server exited"} 0 !== 200 ### Official SDK interop - **a stock official-SDK client completes the handshake** MCP error -32000: Connection closed - **the handshake settles on a revision inside the supported window** initialize must return a protocolVersion, got undefined - **a stock official-SDK client can list tools** MCP error -32000: Connection closed ## 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 (4) _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 ### 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 "npx -y lightswind 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 "npx -y lightswind mcp" --spec-version 2026-07-28`) **Without Docker (npx):** ``` npx @hasmcp/mcp-spec-test@latest -c "npx -y lightswind mcp" --spec-version 2026-07-28 ``` --- This issue was filed as part of an automated conformance sweep of public MCP servers using `@hasmcp/mcp-spec-test`. If this turns out to be a false positive specific to the test environment (missing credentials/dependencies, etc.), please feel free to close it.

Comments