Skip to content

[EPIC][TESTING][PROTOCOL]: Implement MCP 2025-11-25 protocol compliance suite#2956

Merged
crivetimihai merged 3 commits intomainfrom
mcp-spec-compliance
Feb 15, 2026
Merged

[EPIC][TESTING][PROTOCOL]: Implement MCP 2025-11-25 protocol compliance suite#2956
crivetimihai merged 3 commits intomainfrom
mcp-spec-compliance

Conversation

@crivetimihai
Copy link
Copy Markdown
Member

Summary

Implements a protocol compliance suite for MCP 2025-11-25 (latest spec) with manual Makefile execution targets named by explicit spec date.

Closes #2525

What changed

  • Added new compliance suite under tests/compliance/mcp_2025_11_25.
  • Added schema method inventory manifest and guard tests against mcp.types method literals.
  • Added runtime schema-surface checks that exercise all schema request and notification methods with envelope validation.
  • Added lifecycle checks for initialize behavior and required fields.
  • Added streamable HTTP checks for protocol header acceptance/rejection and batch-payload rejection behavior.
  • Added server feature baseline checks (tools/list, resources/list, resources/templates/list, prompts/list, logging/setLevel).
  • Added utility checks (ping, baseline notifications accepted as 202).
  • Added optional tasks lane checks, including capability-not-advertised behavior.
  • Added optional authorization discovery checks for protected-resource metadata endpoints.
  • Updated protocol version handling to source supported versions from MCP SDK constants and default to latest protocol.
  • Updated app/test defaults to 2025-11-25 protocol version.
  • Registered MCP compliance pytest markers in pyproject.toml.
  • Added manual Make targets with explicit spec-date naming:
    • make 2025-11-25
    • make 2025-11-25-core
    • make 2025-11-25-tasks
    • make 2025-11-25-auth
    • make 2025-11-25-report
  • Added .uv-cache/ and .uv-tmp/ to .gitignore.

Run modes

The suite supports both:

  • In-process mode (default, no external server required)
  • Live endpoint mode via Make variables:
    • MCP_2025_BASE_URL
    • MCP_2025_RPC_PATH
    • MCP_2025_BEARER_TOKEN

Validation

Executed and passing:

  • pytest tests/compliance/mcp_2025_11_25 -q
  • make 2025-11-25
  • make 2025-11-25-core
  • make 2025-11-25-tasks
  • make 2025-11-25-auth
  • make 2025-11-25-report

Latest full-suite result: 55 passed.

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
…indings

- Add --ignore=tests/compliance to pytest addopts so compliance suite
  only runs via dedicated make targets (make 2025-11-25, etc.)
- Lazy-import mcpgateway.main in compliance conftest to avoid triggering
  bootstrap_db during test collection
- Fix gosec G114: replace bare http.ListenAndServe with http.Server
  using ReadHeaderTimeout in slow-time-server (4 instances)
- Suppress gosec G404/G705 false positives with nosec annotations

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
@crivetimihai crivetimihai merged commit bd5b62e into main Feb 15, 2026
46 checks passed
@crivetimihai crivetimihai deleted the mcp-spec-compliance branch February 15, 2026 18:12
suciu-daniel pushed a commit that referenced this pull request Feb 16, 2026
…ce suite (#2956)

* feat: implement MCP 2025-11-25 compliance suite and dated make targets

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* format

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* fix: exclude compliance tests from default pytest and resolve gosec findings

- Add --ignore=tests/compliance to pytest addopts so compliance suite
  only runs via dedicated make targets (make 2025-11-25, etc.)
- Lazy-import mcpgateway.main in compliance conftest to avoid triggering
  bootstrap_db during test collection
- Fix gosec G114: replace bare http.ListenAndServe with http.Server
  using ReadHeaderTimeout in slow-time-server (4 instances)
- Suppress gosec G404/G705 false positives with nosec annotations

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

---------

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
vishu-bh pushed a commit that referenced this pull request Feb 18, 2026
…ce suite (#2956)

* feat: implement MCP 2025-11-25 compliance suite and dated make targets

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* format

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* fix: exclude compliance tests from default pytest and resolve gosec findings

- Add --ignore=tests/compliance to pytest addopts so compliance suite
  only runs via dedicated make targets (make 2025-11-25, etc.)
- Lazy-import mcpgateway.main in compliance conftest to avoid triggering
  bootstrap_db during test collection
- Fix gosec G114: replace bare http.ListenAndServe with http.Server
  using ReadHeaderTimeout in slow-time-server (4 instances)
- Suppress gosec G404/G705 false positives with nosec annotations

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

---------

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
Signed-off-by: Vishu Bhatnagar <vishu.bhatnagar@ibm.com>
kcostell06 pushed a commit to kcostell06/mcp-context-forge that referenced this pull request Feb 24, 2026
…ce suite (IBM#2956)

* feat: implement MCP 2025-11-25 compliance suite and dated make targets

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* format

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* fix: exclude compliance tests from default pytest and resolve gosec findings

- Add --ignore=tests/compliance to pytest addopts so compliance suite
  only runs via dedicated make targets (make 2025-11-25, etc.)
- Lazy-import mcpgateway.main in compliance conftest to avoid triggering
  bootstrap_db during test collection
- Fix gosec G114: replace bare http.ListenAndServe with http.Server
  using ReadHeaderTimeout in slow-time-server (4 instances)
- Suppress gosec G404/G705 false positives with nosec annotations

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

---------

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[EPIC][TESTING][PROTOCOL]: MCP 2025-11-25 Protocol Compliance Test Suite

1 participant