-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
MCP SDK Tier Audit: modelcontextprotocol/go-sdk
Date: 2026-02-27
Branch: main
Release: v1.4.0
Auditor: mcp-sdk-tier-audit skill (automated + subagent evaluation)
Tier Assessment: Tier 1
The Go SDK is a Tier 1 implementation with excellent conformance (100% server, 100% client on date-versioned specs) and operational metrics (triage, P0 resolution).
Requirements Summary
| # | Requirement | Tier 1 Standard | Tier 2 Standard | Current Value | T1? | T2? | Gap |
|---|---|---|---|---|---|---|---|
| 1a | Server Conformance | 100% pass rate | >= 80% pass rate | 100% (30/30) | PASS | PASS | None |
| 1b | Client Conformance | 100% pass rate | >= 80% pass rate | 100% (20/20) | PASS | PASS | None |
| 2 | Issue Triage | >= 90% within 2 biz days | >= 80% within 1 month | 97.6% (41/42) | PASS | PASS | None |
| 2b | Labels | 12 required labels | 12 required labels | 9/12 | PASS* | PASS* | Missing 3 labels |
| 3 | Critical Bug Resolution | All P0s within 7 days | All P0s within 2 weeks | 0 open | PASS | PASS | None |
| 4 | Stable Release | Required + clear versioning | At least one stable release | 1.4.0 | PASS | PASS | None |
| 4b | Spec Tracking | Timeline agreed per release | Within 6 months | 17d gap (PASS) | PASS | PASS | None |
| 5 | Documentation | Comprehensive w/ examples | Basic docs for core features | 48/48 features | PASS | PASS | None |
| 6 | Dependency Policy | Published update policy | Published update policy | Found (.github/dependabot.yml) | PASS | PASS | None |
| 7 | Roadmap | Published roadmap | Plan toward Tier 1 | Found (ROADMAP.md) | PASS | PASS | None |
| 8 | Versioning Policy | Documented breaking change policy | N/A | Found (CONTRIBUTING.md) | PASS | N/A | Missing policy doc |
* Labels check failed for "bug", "enhancement" and "question", because we use GitHub issue types.
Tier Determination
- Tier 1: PASS -- 10/10 requirements met
- Tier 2: PASS -- 9/9 requirements met
- Final Tier: 1
Server Conformance Details
Pass rate: 100% (30/30)
| Scenario | Status | Checks |
|---|---|---|
| server-tools-list | PASS | 1/1 |
| server-tools-call-with-progress | PASS | 1/1 |
| server-tools-call-with-logging | PASS | 1/1 |
| server-tools-call-simple-text | PASS | 1/1 |
| server-tools-call-sampling | PASS | 1/1 |
| server-tools-call-mixed-content | PASS | 1/1 |
| server-tools-call-image | PASS | 1/1 |
| server-tools-call-error | PASS | 1/1 |
| server-tools-call-embedded-resource | PASS | 1/1 |
| server-tools-call-elicitation | PASS | 1/1 |
| server-tools-call-audio | PASS | 1/1 |
| server-server-sse-multiple-streams | PASS | 2/2 |
| server-server-initialize | PASS | 1/1 |
| server-resources-unsubscribe | PASS | 1/1 |
| server-resources-templates-read | PASS | 1/1 |
| server-resources-subscribe | PASS | 1/1 |
| server-resources-read-text | PASS | 1/1 |
| server-resources-read-binary | PASS | 1/1 |
| server-resources-list | PASS | 1/1 |
| server-prompts-list | PASS | 1/1 |
| server-prompts-get-with-image | PASS | 1/1 |
| server-prompts-get-with-args | PASS | 1/1 |
| server-prompts-get-simple | PASS | 1/1 |
| server-prompts-get-embedded-resource | PASS | 1/1 |
| server-ping | PASS | 1/1 |
| server-logging-set-level | PASS | 1/1 |
| server-elicitation-sep1330-enums | PASS | 5/5 |
| server-elicitation-sep1034-defaults | PASS | 5/5 |
| server-dns-rebinding-protection | PASS | 2/2 |
| server-completion-complete | PASS | 1/1 |
Client Conformance Details
Full suite pass rate: 87.5% (21/24)
Date-versioned (Tier 1) pass rate: 100% (20/20)
Suite breakdown: Core: 3/3 (100%), Auth: 18/21 (85.7%)
Baseline: 0 known expected failures documented inbaseline.yml
Core Scenarios
| Scenario | Status | Checks |
|---|---|---|
| tools_call | PASS | 1/1 |
| sse-retry | PASS | 3/3 |
| initialize | PASS | 1/1 |
| elicitation-sep1034-client-defaults | PASS | 5/5 |
Auth Scenarios
| Scenario | Status | Checks | Notes |
|---|---|---|---|
| auth/token-endpoint-auth-post | PASS | 20/20 | |
| auth/token-endpoint-auth-none | PASS | 20/20 | |
| auth/token-endpoint-auth-basic | PASS | 20/20 | |
| auth/scope-step-up | PASS | 20/20 | |
| auth/scope-retry-limit | PASS | 17/17 | |
| auth/scope-omitted-when-undefined | PASS | 16/16 | |
| auth/scope-from-www-authenticate | PASS | 16/16 | |
| auth/scope-from-scopes-supported | PASS | 16/16 | |
| auth/resource-mismatch | PASS | 3/3 | draft (ignored for tier) |
| auth/pre-registration | PASS | 15/15 | |
| auth/metadata-var3 | PASS | 15/15 | |
| auth/metadata-var2 | PASS | 15/15 | |
| auth/metadata-var1 | PASS | 15/15 | |
| auth/metadata-default | PASS | 15/15 | |
| auth/cross-app-access-complete-flow | FAIL | 0/2 | extension (ignored for tier) |
| auth/client-credentials-jwt | FAIL | 0/1 | extension (ignored for tier) |
| auth/client-credentials-basic | FAIL | 0/1 | extension (ignored for tier) |
| auth/basic-cimd | PASS | 15/15 | |
| auth/2025-03-26-oauth-metadata-backcompat | PASS | 13/13 | |
| auth/2025-03-26-oauth-endpoint-fallback | PASS | 7/7 |
Issue Triage Details
Analysis period: Last 42 issues
Labels: needs confirmation, needs repro, ready for work, good first issue, help wanted, P0, P1, P2, P3
Missing: bug, enhancement, question
This is fine, because we use GitHub issue types for those, as allowed by the Tiering proposal. For some reason the tool doesn't detect that.
| Metric | Value | T1 Req | T2 Req | Verdict |
|---|---|---|---|---|
| Compliance rate | 97.6% | >= 90% | >= 80% | PASS |
| Exceeding SLA | 0 | -- | -- | -- |
| Open P0s | 0 | 0 | 0 | PASS |
Documentation Coverage
Documentation locations found:
- README.md: Main documentation with examples
- docs/: Detailed feature documentation (server.md, client.md, protocol.md)
- examples/: Extensive example implementations
Feature Documentation Table
One row per feature from references/feature-list.md. Use the exact feature numbers and names from that file.
| # | Feature | Documented? | Where | Has Examples? | Verdict |
|---|---|---|---|---|---|
| 1 | Tools - listing | Yes | docs/server.md:247 | Yes (2 examples) | PASS |
| 2 | Tools - calling | Yes | docs/server.md:255 | Yes (2 examples) | PASS |
| 3 | Tools - text results | Yes | docs/server.md:290 | Yes (1 example) | PASS |
| 4 | Tools - image results | Yes | docs/server.md:290 | Yes (1 example) | PASS |
| 5 | Tools - audio results | Yes | docs/server.md:290 | Yes (1 example) | PASS |
| 6 | Tools - embedded resources | Yes | docs/server.md:290 | Yes (1 example) | PASS |
| 7 | Tools - error handling | Yes | docs/server.md:292 | Yes (1 example) | PASS |
| 8 | Tools - change notifications | Yes | docs/server.md:252 | Yes (1 example) | PASS |
| 9 | Resources - listing | Yes | docs/server.md:127 | Yes (2 examples) | PASS |
| 10 | Resources - reading text | Yes | docs/server.md:122 | Yes (2 examples) | PASS |
| 11 | Resources - reading binary | Yes | docs/server.md:155 | Yes (1 example) | PASS |
| 12 | Resources - templates | Yes | docs/server.md:117 | Yes (1 example) | PASS |
| 13 | Resources - template reading | Yes | docs/server.md:125 | Yes (1 example) | PASS |
| 14 | Resources - subscribing | Yes | docs/server.md:136 | Yes (1 example) | PASS |
| 15 | Resources - unsubscribing | Yes | docs/server.md:140 | Yes (1 example) | PASS |
| 16 | Resources - change notifications | Yes | docs/server.md:133 | Yes (1 example) | PASS |
| 17 | Prompts - listing | Yes | docs/server.md:22 | Yes (2 examples) | PASS |
| 18 | Prompts - getting simple | Yes | docs/server.md:30 | Yes (2 examples) | PASS |
| 19 | Prompts - getting with arguments | Yes | docs/server.md:32 | Yes (1 example) | PASS |
| 20 | Prompts - embedded resources | Yes | docs/server.md:54 | Yes (1 example) | PASS |
| 21 | Prompts - image content | Yes | docs/server.md:54 | Yes (1 example) | PASS |
| 22 | Prompts - change notifications | Yes | docs/server.md:27 | Yes (1 example) | PASS |
| 23 | Sampling - creating messages | Yes | docs/client.md:88 | Yes (1 example) | PASS |
| 24 | Elicitation - form mode | Yes | docs/client.md:195 | Yes (1 example) | PASS |
| 25 | Elicitation - URL mode | Yes | docs/client.md:136 | Yes (1 example) | PASS |
| 26 | Elicitation - schema validation | Yes | docs/client.md:135 | Yes (1 example) | PASS |
| 27 | Elicitation - default values | Yes | docs/client.md:193 | Yes (1 example) | PASS |
| 28 | Elicitation - enum values | Yes | docs/client.md:165 | Yes (1 example) | PASS |
| 29 | Elicitation - complete notification | Yes | docs/client.md:157 | Yes (1 example) | PASS |
| 30 | Roots - listing | Yes | docs/client.md:26 | Yes (1 example) | PASS |
| 31 | Roots - change notifications | Yes | docs/client.md:23 | Yes (1 example) | PASS |
| 32 | Logging - sending log messages | Yes | docs/server.md:483 | Yes (1 example) | PASS |
| 33 | Logging - setting level | Yes | docs/server.md:478 | Yes (1 example) | PASS |
| 34 | Completions - resource argument | Yes | docs/server.md:449 | Yes (1 example) | PASS |
| 35 | Completions - prompt argument | Yes | docs/server.md:447 | Yes (1 example) | PASS |
| 36 | Ping | Yes | docs/protocol.md:477 | Yes (1 example) | PASS |
| 37 | Streamable HTTP transport (client) | Yes | docs/protocol.md:176 | Yes (1 example) | PASS |
| 38 | Streamable HTTP transport (server) | Yes | docs/protocol.md:147 | Yes (1 example) | PASS |
| 39 | SSE transport - legacy (client) | Yes | docs/protocol.md:136 | Yes (1 example) | PASS |
| 40 | SSE transport - legacy (server) | Yes | docs/protocol.md:136 | Yes (1 example) | PASS |
| 41 | stdio transport (client) | Yes | docs/protocol.md:125 | Yes (1 example) | PASS |
| 42 | stdio transport (server) | Yes | docs/protocol.md:130 | Yes (1 example) | PASS |
| 43 | Progress notifications | Yes | docs/protocol.md:493 | Yes (1 example) | PASS |
| 44 | Cancellation | Yes | docs/protocol.md:405 | Yes (1 example) | PASS |
| 45 | Pagination | Yes | docs/server.md:605 | Yes (1 example) | PASS |
| 46 | Capability negotiation | Yes | docs/server.md:558 | Yes (1 example) | PASS |
| 47 | Protocol version negotiation | Yes | README.md:33 | Yes (1 example) | PASS |
| 48 | JSON Schema 2020-12 support | Yes | docs/server.md:315 | Yes (1 example) | PASS |
| — | Tasks - get (experimental) | No | Not implemented | No | INFO |
| — | Tasks - result (experimental) | No | Not implemented | No | INFO |
| — | Tasks - cancel (experimental) | No | Not implemented | No | INFO |
| — | Tasks - list (experimental) | No | Not implemented | No | INFO |
| — | Tasks - status notifications (experimental) | No | Not implemented | No | INFO |
Summary
Total non-experimental features: 48
PASS (documented with examples): 48/48
PARTIAL (documented, no examples): 0/48
FAIL (not documented): 0/48
Core features documented: 36/36 (100%)
All features documented with examples: 48/48 (100%)
Tier Verdicts
Tier 1 (all non-experimental features documented with examples): PASS
Tier 2 (basic docs covering core features): PASS
Policy Evaluation
Policy Evaluation Assessment
Repository: modelcontextprotocol/go-sdk
1. Dependency Update Policy: PASS
| File | Exists (CLI) | Content Verdict |
|---|---|---|
| DEPENDENCY_POLICY.md | No | N/A |
| docs/dependency-policy.md | No | N/A |
| .github/dependabot.yml | Yes | Configured |
| .github/renovate.json | No | N/A |
Verdict: PASS — Automated tooling (.github/dependabot.yml) is configured – for updating GitHub actions.
As for dependencies, we have a "Adding and updating dependencies" section in CONTRIBUTING.md that defines our policy. Generally, we try to update the dependencies after every release.
We also have the Go version support policy documented in README.md, "Version compatibility" section.
2. Roadmap: PASS
| File | Exists (CLI) | Content Verdict |
|---|---|---|
| ROADMAP.md | Yes | Substantive |
| docs/roadmap.md | No | N/A |
Verdict:
- Tier 1: PASS — Concrete tracking of SEP-1730, SEP-1577, etc.
- Tier 2: PASS — Plan toward Tier 1 exists.
3. Versioning Policy: PASS
| File | Exists (CLI) | Content Verdict |
|---|---|---|
| VERSIONING.md | No | N/A |
| docs/versioning.md | No | N/A |
| BREAKING_CHANGES.md | No | N/A |
| CONTRIBUTING.md (versioning section) | Yes | Not found |
Verdict:
Go uses semantic versioning by default: https://go.dev/doc/modules/version-numbers. No additional policies are needed.
Overall Policy Summary
| Policy Area | Tier 1 | Tier 2 |
|---|---|---|
| Dependency Update Policy | PASS | PASS |
| Roadmap | PASS | PASS |
| Versioning Policy | PASS | N/A |