Skip to content

MCP spec conformance: 5 requirement(s) violated (via @hasmcp/mcp-spec-test) — spec 2025-11-25 #16

Description

@hasmcp-dev

Running @hasmcp/mcp-spec-test against the examples/dice-roller server on MCP spec revision 2025-11-25, the server process exits without responding to any request. As detailed in the companion issue for the newer 2026-07-28 revision: requirements.txt pins only mcp[cli]>=1.2.0 with no ceiling, so a fresh install grabs the newest mcp package (currently v2.1.0), which no longer exposes mcp.server.fastmcpdice_server.py's from mcp.server.fastmcp import FastMCP fails with ModuleNotFoundError before the server can bind stdio.

Conformance report

MCP 2025-11-25 conformance report

Verdict: not conformant — 5 requirements violated.

Target sh -c '[ -d /tmp/dice ] || git clone --depth 1 https://github.com/theNetworkChuck/docker-mcp-tutorial /tmp/dice; cd /tmp/dice/examples/dice-roller && pip install --break-system-packages -q -r requirements.txt && python3 dice_server.py'
Transport stdio
Revision tested 2025-11-25
Revisions supported 2026-07-28, 2025-11-25
Passed 2
Failed 5
Not verified 13
Cases applied 20
Duration 9110ms
Generated 2026-08-24T19:14:27.990Z
Tool @hasmcp/mcp-spec-test 0.1.1

Failed (5)

the server deviates from the spec here

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

  • an unsupported version offered at the handshake is refused or downgraded, not echoed
    expected either an error or a protocolVersion, got {"_raw":"server exited"}

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 (13)

skipped; a skip is not a pass

Capability methods

  • tools/list returns schema-conformant tools
    cannot determine what the target supports — initialize returned no result (status 0)
  • tools/call on an unknown tool is an error, not a crash
    cannot determine what the target supports — initialize returned no result (status 0)
  • tools/call returns a schema-conformant CallToolResult
    cannot determine what the target supports — initialize returned no result (status 0)
  • prompts/list returns schema-conformant prompts
    cannot determine what the target supports — initialize returned no result (status 0)
  • prompts/get returns messages with a role and content
    cannot determine what the target supports — initialize returned no result (status 0)
  • resources/list returns schema-conformant resources
    cannot determine what the target supports — initialize returned no result (status 0)
  • resources/templates/list returns schema-conformant templates
    cannot determine what the target supports — initialize returned no result (status 0)
  • resources/read returns contents for every sampled resource
    cannot determine what the target supports — initialize returned no result (status 0)
  • resources/read on an unknown uri is an error
    cannot determine what the target supports — initialize returned no result (status 0)
  • following nextCursor terminates and does not repeat a page
    cannot determine what the target supports — initialize returned no result (status 0)
  • an invalid pagination cursor is rejected (SHOULD)
    cannot determine what the target supports — initialize returned no result (status 0)

Version negotiation

  • initialize returns the schema-required fields
    no session — initialize returned no result (status 0)
  • the handshake settles on the revision under test
    no session — initialize returned no result (status 0)

Passed (2)

checked and conformant

server/discover

  • the suite is reading a schema that matches the features it selected

Official SDK interop

  • the official SDK does not yet implement the newest revision

How to reproduce

With Docker:

docker pull hasmcp/mcp-spec-test:latest
docker run --rm hasmcp/mcp-spec-test -c "sh -c '[ -d /tmp/dice ] || git clone --depth 1 https://github.com/theNetworkChuck/docker-mcp-tutorial /tmp/dice; cd /tmp/dice/examples/dice-roller && pip install --break-system-packages -r requirements.txt && python3 dice_server.py'" --spec-version 2025-11-25

(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 '[ -d /tmp/dice ] || git clone --depth 1 https://github.com/theNetworkChuck/docker-mcp-tutorial /tmp/dice; cd /tmp/dice/examples/dice-roller && pip install --break-system-packages -r requirements.txt && python3 dice_server.py'" --spec-version 2025-11-25)

Without Docker (npx):

npx @hasmcp/mcp-spec-test@latest -c "sh -c '[ -d /tmp/dice ] || git clone --depth 1 https://github.com/theNetworkChuck/docker-mcp-tutorial /tmp/dice; cd /tmp/dice/examples/dice-roller && pip install --break-system-packages -r requirements.txt && python3 dice_server.py'" --spec-version 2025-11-25

This was generated by an automated conformance sweep. See also #15, the companion issue for the same repo against the newer 2026-07-28 revision (10 violations there vs 5 here — same root cause). The maintainer is welcome to close this if it's not applicable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions