Skip to content

v0.3.0

Choose a tag to compare

@cswelker cswelker released this 06 Aug 22:05
· 42 commits to main since this release

Framework-neutral tool registry (all 10 languages)

A second, additive entry point alongside each language's built-in server, for embedding ZeroMCP tools into any HTTP framework instead of the built-in stdio/HTTP server. Reuses each language's existing dispatch/OpenAPI code with zero duplicated logic.

Language API
Node.js await createRegistry(tools, options)
Go (*Server).Registry()
Rust create_registry(tools)
Java ZeroMcp.registry()
Kotlin ZeroMcp.registry()
Swift createRegistry(tools, options:)
C# Registry.Create(tools, options)
Ruby ZeroMcp.create_registry(tools)
PHP Registry::create(tools, options)

Full design docs, including per-language porting notes and judgment calls, are in specs/lang/*/registry.md.

Fixes

  • Cross-language OpenAPI bug: every language's /openapi.json builder shared an identical bug — non-GET routes with a :param segment never documented it as a path parameter, silently duplicating it into the JSON request body schema instead. Fixed identically across all 10.
  • Node.js createRegistry remote federation: options.remote connects to remote MCP servers the same way createHandler already does, merging their tools in namespaced as servername.toolname. createRegistry is now async as a result.
  • Node.js RemoteServer.tools allowlist: scopes which upstream tools a remote connection exposes.

Other

  • Route conformance test infrastructure for the route/OpenAPI feature across all 10 languages.
  • Per-language README alignment pass — fixed non-compiling examples, stale versions, and undocumented shipped features.

Note: Python's registry port is specced (specs/lang/python/registry.md) but not yet implemented — the one language still outstanding.