Faster than bare echo.
593 lines.
zeromcp vs mcp/sdk — side by side.
This is a hello world
Use statement, server instantiation, class-based registration, schema array, and transport setup. 9 lines of ceremony before your tool does anything.
use Mcp\Server\McpServer;
$server = new McpServer('test', '1.0.0');
$server->registerTool('hello',
'Say hello',
['name' => ['type' => 'string']],
function($args) {
return "Hello, {$args['name']}!";
});
$server->runStdio(); This is the whole server
No use statement. No server class. No registration closures.
Drop it in a folder and run zeromcp serve.
<?php
// tools/hello.php
$TOOL = [
'description' => 'Say hello',
'input' => ['name' => 'string']
];
function execute($args, $ctx) {
return "Hello, {$args['name']}!";
} HTTP Performance — Head to Head
Same hello tool. Same methodology. 5-minute sustained load in Docker. Slim for ZeroMCP, stdio proxy for the official SDK.
The official PHP SDK processes 17 requests per second (54ms each). ZeroMCP on Slim handles 1,561 — 92x faster.
ZeroMCP HTTP Frameworks
ZeroMCP embedded natively in PHP frameworks. No proxy. No subprocess. 30-second sustained load.
What's different
- SandboxEnforced. Not advisory.
- CredentialsPer-directory. Not
getenv(). - ProcessesOne. Not N.
- Hot reloadBuilt-in. Not restart.
- ComposabilityConnect remote MCP servers. Official SDK can't.
- TransportStreamable HTTP by default. Stdio too.
When to use the official SDK
ZeroMCP makes trade-offs. Here's what you give up.
ZeroMCP implements tools only. If you need MCP resources, prompts, or sampling, use the official SDK.
ZeroMCP uses file-based tools. If you prefer OOP class-based registration, use the official SDK.
The official SDK tracks every spec change immediately. ZeroMCP prioritizes stability over spec completeness.
The official SDK is maintained by the MCP specification team at Anthropic. ZeroMCP is maintained by the antidrift team (Reloop Labs, LLC).