C#

Zero overhead.
20 of 21 chaos attacks survived.

zeromcp vs ModelContextProtocol — side by side.

Dependencies
0 ZeroMCP
vs.
41 Official SDK
Throughput
4.69K req/s ZeroMCP
vs.
2.36K req/s Official SDK
Memory
314 MB ZeroMCP
vs.
78 MB Official SDK

This is a hello world

A builder pattern, anonymous types for schema, and transport setup. 8 lines of ceremony before your tool does anything.

ModelContextProtocol 8 lines
var server = new McpServerBuilder()
    .WithName("test")
    .WithTool("hello", "Say hello",
        new { name = new { type = "string" } },
        async (args) =>
            $"Hello, {args["name"]}!")
    .Build();
await server.RunStdioAsync();

This is the whole server

No builder pattern. No anonymous types. No McpServerBuilder.
Register a lambda and serve.

ZeroMCP 8 lines
var server = new Server();
server.Tool("hello", new Tool {
    Description = "Say hello",
    Input = new Input()
        .Required("name", "string"),
    Execute = (args, ctx) =>
        $"Hello, {args["name"]}!"
});
await server.ServeStdioAsync();

HTTP Performance — Head to Head

Mixed workload across all 7 MCP method types. 5-minute sustained load in Docker. ASP.NET for ZeroMCP, stdio proxy for the official SDK.

req/s CPU Memory Ratio
ZeroMCP (ASP.NET) 4.69K 1.47% 314 MB 2.0x
Official SDK 2.36K 0.05% 78 MB

ZeroMCP on ASP.NET uses more CPU (1.47% vs 0.05%) due to the .NET runtime. But it serves 2.0x more requests.

The tradeoff

Choose ModelContextProtocol

If you want the NuGet-native experience with static class patterns familiar to the .NET ecosystem.

  • Attribute-based tools — typed parameter definitions via attributes
  • Spec parity — tracks every spec change immediately
  • Enterprise support — maintained by the MCP specification team at Anthropic
Choose ZeroMCP

If you want zero dependencies outside the runtime, 825 lines, and 2.0x the throughput on ASP.NET.

  • 0 dependencies outside the runtime
  • 825 lines — small enough to audit
  • ASP.NET HTTP embedding
  • Built-in sandbox with enforced permissions
  • 4.69K req/s on ASP.NET

Register a function. It's an MCP tool.