The full spec.
All 10 languages.
April 8, 2026
Resources. Prompts. Pagination. Logging. Completion. Icons.
Everything the official SDK does, with the same drop-a-file simplicity.
What's new
v0.1.x shipped tools. v0.2.0 ships the rest of the spec.
Drop a file, it's a resource. Static files, dynamic generators, and URI templates. Full resources/list, resources/read, resources/subscribe, and resources/templates/list.
Drop a file, it's a prompt. Argument validation, dynamic content, and the same scanner-based discovery as tools. Full prompts/list and prompts/get.
Stateless cursor-based pagination on every list method. No server-side state, no session affinity, works on Lambda and Workers.
Full logging/setLevel support. Clients can request log notifications at any RFC 5424 severity level.
Argument completion via completion/complete. Tools, prompts, and resources can suggest values for their parameters.
One config field. URL, file path, or data URI. Fetched at startup, cached, applied to every tool, resource, prompt, and template.
Drop a new tool file and the server emits notifications/tools/list_changed. Clients refresh automatically.
Track client-provided workspace roots. Resources can scope themselves to active roots.
One JSON-RPC dispatcher across stdio, HTTP, and Streamable HTTP. Same handler, every transport.
750+ unit tests
v0.1.x had 7 unit tests on Node.js. v0.2.0 ships with a baseline test suite across every language.
The conformance suite tests every method (resources, prompts, pagination, logging, completion) against every language. All 10 implementations pass identical behavior tests.
File-based or code-based. Your choice.
v0.2.0 keeps the same dual-API approach as v0.1.x.
Drop a file in resources/ or prompts/. The scanner finds it. No registration code.
# resources/config.json
{ "version": "1.0", "env": "prod" }
# That's it. It's now a resource. Idiomatic builder/DSL API. Same shape, every language.
server.resource("config")
.description("App config")
.uri("file://config.json")
.build(); Benchmarked at every duration
Mixed workload (7 method types) at 1m, 3m, 5m, and 10m sustained load. Every language. Every framework. Both ZeroMCP and the official SDK.
ZeroMCP is fast enough that Docker container warmup distorts sub-5-minute tests. The 5-minute and 10-minute numbers are the production-relevant ones. See the full benchmark data.
The "choose the official SDK" caveat is gone
Every comparison page on this site used to say: "Choose the official SDK if you need resources, prompts, or deep MCP spec extensions."
That's not true anymore. ZeroMCP v0.2.0 implements all of it.
The remaining tradeoffs: enterprise support contracts and same-day spec-update tracking. The official SDKs win there. Everything else now goes to ZeroMCP.
Upgrade
v0.2.0 is backward compatible with v0.1.x. Tools work unchanged. Add resources and prompts when you need them.