Two things happened this week that turn "can I run an MCP server for free" from a compromise into a plain yes, with one measurable condition. Today the Model Context Protocol shipped its 2026-07-28 revision, and the headline change is that the protocol core went stateless: sessions, the Mcp-Session-Id header, and the initialize handshake are gone. The release post states the consequence outright:
Any request can now land on any server instance behind a plain round-robin load balancer without needing shared storage.
And yesterday, one day ahead of the release, Cloudflare's own documentation flipped. The McpAgent class — the official path that backed every MCP server with a Durable Object because the transport needed somewhere to keep its session — is now marked deprecated and feature frozen, with a stateless request handler as the recommended replacement for new servers.
Those two moves close the same gap from both ends. A Worker on the free plan was always a natural place for a small MCP server except for one thing: the transport demanded state, and state meant a Durable Object and a sticky instance. Now the protocol itself promises that every request is self contained. What remains is the free plan's one hard ceiling — 10 ms of CPU per request — and whether a real server fits under it is not a question you argue about. It is a question you measure. So we built one, on this site, and measured it.







