Skip to content

MCP spec conformance (math-mcp example): 1 requirement violated (via @hasmcp/mcp-spec-test) — spec 2025-11-25 #42

Description

@hasmcp-dev

When run through @hasmcp/mcp-spec-test (spec revision 2025-11-25), the bundled mcp_servers/math-mcp server fails 1 conformance requirement: the initialize handshake responds with the legacy protocol version 2024-11-05 even when a client offers 2025-11-25, rather than settling on a revision inside the currently-supported window. This is the same underlying cause (a hardcoded/outdated protocolVersion in the server's initialize response) as the larger set of failures reported for revision 2026-07-28 in the separate issue filed alongside this one.

Conformance report (spec 2025-11-25)

MCP 2025-11-25 conformance report

Verdict: not conformant — 1 requirement violated.

Target sh -c '\[ -d /tmp/bench \] || git clone --depth 1 -q https://github.com/Accenture/mcp-bench /tmp/bench; cd /tmp/bench/mcp\_servers/math-mcp && \[ -d build \] || (npm install --silent \>/dev/null 2\>&1 && npm run build --silent \>/dev/null 2\>&1); node build/index.js'
Transport stdio
Revision tested 2025-11-25
Revisions supported 2026-07-28, 2025-11-25
Passed 6
Failed 1
Not verified 13
Cases applied 20
Duration 1446ms
Generated 2026-08-24T04:56:03.069Z
Tool @hasmcp/mcp-spec-test 0.1.1

Failed (1)

the server deviates from the spec here

Official SDK interop

  • the handshake settles on a revision inside the supported window
    a client offering 2025-11-25 was answered with 2024-11-05, outside the supported window (2026-07-28, 2025-11-25)

Not verified (13)

skipped; a skip is not a pass

Capability methods

  • tools/list returns schema-conformant tools
    cannot determine what the target supports — server negotiated 2024-11-05, not the 2025-11-25 under test
  • tools/call on an unknown tool is an error, not a crash
    cannot determine what the target supports — server negotiated 2024-11-05, not the 2025-11-25 under test
  • tools/call returns a schema-conformant CallToolResult
    cannot determine what the target supports — server negotiated 2024-11-05, not the 2025-11-25 under test
  • prompts/list returns schema-conformant prompts
    cannot determine what the target supports — server negotiated 2024-11-05, not the 2025-11-25 under test
  • prompts/get returns messages with a role and content
    cannot determine what the target supports — server negotiated 2024-11-05, not the 2025-11-25 under test
  • resources/list returns schema-conformant resources
    cannot determine what the target supports — server negotiated 2024-11-05, not the 2025-11-25 under test
  • resources/templates/list returns schema-conformant templates
    cannot determine what the target supports — server negotiated 2024-11-05, not the 2025-11-25 under test
  • resources/read returns contents for every sampled resource
    cannot determine what the target supports — server negotiated 2024-11-05, not the 2025-11-25 under test
  • resources/read on an unknown uri is an error
    cannot determine what the target supports — server negotiated 2024-11-05, not the 2025-11-25 under test
  • following nextCursor terminates and does not repeat a page
    cannot determine what the target supports — server negotiated 2024-11-05, not the 2025-11-25 under test
  • an invalid pagination cursor is rejected (SHOULD)
    cannot determine what the target supports — server negotiated 2024-11-05, not the 2025-11-25 under test

Version negotiation

  • initialize returns the schema-required fields
    no session — server negotiated 2024-11-05, not the 2025-11-25 under test
  • the handshake settles on the revision under test
    no session — server negotiated 2024-11-05, not the 2025-11-25 under test

Passed (6)

checked and conformant

server/discover

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

Version negotiation

  • a request with no version at all is served on the default
  • an unsupported version offered at the handshake is refused or downgraded, not echoed

Official SDK interop

  • the official SDK does not yet implement the newest revision
  • a stock official-SDK client completes the handshake
  • a stock official-SDK client can list tools

How to reproduce

With Docker:

docker pull hasmcp/mcp-spec-test:latest
docker run --rm hasmcp/mcp-spec-test -c "sh -c '[ -d /tmp/bench ] || git clone --depth 1 -q https://github.com/Accenture/mcp-bench /tmp/bench; cd /tmp/bench/mcp_servers/math-mcp && [ -d build ] || (npm install --silent >/dev/null 2>&1 && npm run build --silent >/dev/null 2>&1); node build/index.js'" --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 "..." --spec-version 2025-11-25)

Without Docker (npx):

npx @hasmcp/mcp-spec-test@latest -c "sh -c '[ -d /tmp/bench ] || git clone --depth 1 -q https://github.com/Accenture/mcp-bench /tmp/bench; cd /tmp/bench/mcp_servers/math-mcp && [ -d build ] || (npm install --silent >/dev/null 2>&1 && npm run build --silent >/dev/null 2>&1); node build/index.js'" --spec-version 2025-11-25

This was filed by an automated MCP spec-conformance sweep against the math-mcp example server bundled in this repo. The same server also fails 7 requirements against revision 2026-07-28, tracked in a separate issue (linked above/below).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions