Last week I migrated a production MCP server from stdio to the new Streamable HTTP spec. Six hours, fourteen bugs, and one accidental denial-of-service attack later, it was working.
If you are running an MCP server today, you are probably still on stdio. The client spawns your server as a subprocess and talks over stdin/stdout. It works fine for local tools in Claude Desktop or Cursor. But the moment you want to run your server remotely on a VM, behind a load balancer, or as a shared team service, stdio does not cut it. You need HTTP.
Streamable HTTP is the new transport spec that lets clients connect over HTTP with SSE for streaming responses. The SDK added support for it in late 2025, and it is quickly becoming the standard for production MCP deployments. But migrating from stdio is not as simple as swapping a transport class. Here are the six things that broke when I tried.
Problem 1: Session State Does Not Exist Anymore
On stdio, the process IS the session. When your
Discussion
Jump in and comment!
Get the ball rolling with your comment!