If you search for MCP transports today you find three names that look like three options: stdio, SSE and Streamable HTTP. They are not three equal options. One of them is the old way, one is the new way for remote servers, and one is the best choice most local servers never leave. Mixing them up is how people end up running an MCP server behind a load balancer with a transport that was replaced.
This article separates them, shows what the message flow looks like on the wire, and ends with how Semitexa uses stdio for its MCP server and SSE for its browser transport, and why those two are different on purpose.
The short version
stdio : the client starts your server as a subprocess and talks to it over standard input and output. Default for local tools.
Streamable HTTP : your server is a separate process behind one HTTP endpoint. The client sends every message as a POST, and the server may answer with plain JSON or open an SSE stream.…