Goal
Build a conformance test server that passes all 28 server conformance scenarios from @modelcontextprotocol/conformance.
Current Status
- 4/28 scenarios passing (14%):
server-initialize, tools-list, resources-list, prompts-list
- Protocol implementation complete: All 14 MCP methods implemented
- Gap: Missing test fixtures that conformance scenarios expect
Required Conformance Fixtures
Tools (11 scenarios)
The conformance suite expects specific tools with specific behaviors:
| Scenario |
Required Tool |
Behavior |
tools-call-simple-text |
Returns text content |
Basic tool call |
tools-call-image |
Returns base64 PNG |
Image in content |
tools-call-audio |
Returns base64 WAV |
Audio in content |
tools-call-embedded-resource |
Returns resource URI |
Embedded resource |
tools-call-mixed-content |
Returns text + image + resource |
Multiple content types |
tools-call-with-logging |
Sends log notifications during execution |
notifications/message |
tools-call-with-progress |
Sends progress 0→100 |
notifications/progress |
tools-call-error |
Returns isError: true |
Error handling |
tools-call-sampling |
Requests LLM response from client |
sampling/createMessage |
tools-call-elicitation |
Requests user input |
elicitation/create |
Resources (6 scenarios)
| Scenario |
Required Resource |
Behavior |
resources-read-text |
Text resource |
Returns text content |
resources-read-binary |
Binary resource |
Returns blob with mimeType |
resources-templates-read |
URI template /{id}/data |
Parameter substitution |
resources-subscribe |
Subscribable resource |
Accept subscription |
resources-unsubscribe |
— |
Accept unsubscription |
Prompts (5 scenarios)
| Scenario |
Required Prompt |
Behavior |
prompts-get-simple |
test_simple_prompt |
Basic prompt |
prompts-get-with-args |
Prompt with arg1, arg2 |
Argument substitution |
prompts-get-embedded-resource |
Prompt with resource |
Embedded resource in message |
prompts-get-with-image |
Prompt with image |
Base64 image in message |
Other (4 scenarios)
| Scenario |
Requirement |
logging-set-level |
✅ Already passing |
completion-complete |
Return completions for refs |
elicitation-sep1034-defaults |
Handle elicitation with defaults |
json-schema-2020-12 |
JSON Schema 2020-12 compliance |
Implementation Plan
Phase 1: Create Conformance Test Server
Create examples/conformance-server/ with:
Phase 2: Validate with HTTP Transport
Phase 3: CI Integration
Success Criteria
$ npx @modelcontextprotocol/conformance server --url http://localhost:3000/mcp
Passed: 28/28, 0 failed, 0 warnings
References
Goal
Build a conformance test server that passes all 28 server conformance scenarios from
@modelcontextprotocol/conformance.Current Status
server-initialize,tools-list,resources-list,prompts-listRequired Conformance Fixtures
Tools (11 scenarios)
The conformance suite expects specific tools with specific behaviors:
tools-call-simple-texttools-call-imagetools-call-audiotools-call-embedded-resourcetools-call-mixed-contenttools-call-with-loggingnotifications/messagetools-call-with-progressnotifications/progresstools-call-errorisError: truetools-call-samplingsampling/createMessagetools-call-elicitationelicitation/createResources (6 scenarios)
resources-read-textresources-read-binaryresources-templates-read/{id}/dataresources-subscriberesources-unsubscribePrompts (5 scenarios)
prompts-get-simpletest_simple_promptprompts-get-with-argsarg1,arg2prompts-get-embedded-resourceprompts-get-with-imageOther (4 scenarios)
logging-set-levelcompletion-completeelicitation-sep1034-defaultsjson-schema-2020-12Implementation Plan
Phase 1: Create Conformance Test Server
Create
examples/conformance-server/with:Phase 2: Validate with HTTP Transport
Phase 3: CI Integration
Success Criteria
References