Skip to content

MCP Spec Compliance

protomcp implements the MCP specification via the official Go SDK. This page maps every MCP spec feature to its protomcp implementation.

Protocol

Spec FeatureStatusImplementation
Protocol version negotiationAutomaticOfficial SDK handles initialize handshake
JSON-RPC 2.0AutomaticOfficial SDK
Protocol version 2025-03-26SupportedDefault version

Server Features

Tools

MethodStatusNotes
tools/listSupportedRegistered via @tool / tool() in each SDK
tools/callSupportedProxy through bridge to SDK process
Tool annotationsSupporteddestructive, readOnly, idempotent, openWorld hints
Structured outputSupportedOutput schemas via output_type parameter
notifications/tools/list_changedSupportedSent on hot reload and dynamic enable/disable

Resources

MethodStatusNotes
resources/listSupportedRegistered via @resource / resource()
resources/readSupportedHandler receives URI, returns content
resources/templates/listSupportedRegistered via @resource_template / resourceTemplate()
resources/subscribeSupportedVia official SDK SubscribeHandler
notifications/resources/list_changedSupportedSent on hot reload

Prompts

MethodStatusNotes
prompts/listSupportedRegistered via @prompt / prompt()
prompts/getSupportedHandler receives arguments, returns messages
notifications/prompts/list_changedSupportedSent on hot reload

Completions

MethodStatusNotes
completion/completeSupportedRegistered via @completion / completion()

Sampling

MethodStatusNotes
sampling/createMessageSupportedSDK processes can request LLM calls from client

Roots

MethodStatusNotes
roots/listSupportedSDK processes can request client roots
notifications/roots/list_changedSupportedBridge handles change notifications

Logging

MethodStatusNotes
logging/setLevelSupportedOfficial SDK tracks per-session log level
Log messagesSupportedlog.info(), log.warning(), etc. in each SDK

Utilities

MethodStatusNotes
pingSupportedOfficial SDK handles automatically
notifications/progressSupportedctx.report_progress() in each SDK
notifications/cancelledSupportedOfficial SDK handles cancellation
PaginationSupportedCursor-based, automatic for list operations

Transports

TransportStatusNotes
stdioSupportedDefault. mcp.StdioTransport from official SDK
Streamable HTTPSupportedmcp.StreamableHTTPHandler with session management

Content Types

TypeStatus
TextContentSupported
ImageContentSupported
AudioContentSupported
EmbeddedResourceSupported
ResourceLinkSupported

SDK Feature Matrix

Which features are available in each language SDK:

FeaturePythonTypeScriptGoRust
Tools@tooltool()Tool()tool()
Resources@resourceresource()RegisterResource()register_resource()
Resource Templates@resource_templateresourceTemplate()RegisterResourceTemplate()register_resource_template()
Prompts@promptprompt()RegisterPrompt()register_prompt()
Completions@completioncompletion()RegisterCompletion()register_completion()
Progressctx.report_progress()ctx.reportProgress()ctx.ReportProgress()ctx.report_progress()
Loggingprotomcp.log.info()log.info()Log.Info()logger.info()
Cancellationctx.is_cancelled()ctx.isCancelled()ctx.IsCancelled()ctx.is_cancelled()
Tool managementtool_managertoolManagerToolManagerN/A
Samplingctx.sample()N/AN/AN/A