Guide · Updated July 2026 · 6 min read

MCP transports explained

Direct answer: MCP has one message format (JSON-RPC 2.0) carried over different transports. Three matter: stdio (local subprocess), the older HTTP+SSE (two endpoints, now superseded), and streamable HTTP (one endpoint, JSON or SSE per request). Remote servers should use streamable HTTP.

stdio — local subprocess

The client launches the server as a child process and exchanges JSON-RPC over stdin/stdout. Zero network, lowest latency, dead simple — but only reachable on the same machine. Perfect for local dev tools and desktop clients; useless for a hosted agent that needs to reach your server over the internet.

HTTP + SSE (legacy) — two endpoints

The first remote transport: the client opens a long-lived GET Server-Sent-Events stream for server→client messages and POSTs to a separate endpoint for client→server messages. It works, but the two-endpoint design is awkward to host and scale, and it has been superseded. You'll still meet older servers speaking it.

Streamable HTTP — one endpoint (current)

The current remote transport collapses everything to a single HTTPS endpoint:

This is what MCP Pulse speaks when it scans, and what current clients expect from a remote server.

Which should you use?

ScenarioTransport
Local tool, same machinestdio
New remote/hosted serverStreamable HTTP
Maintaining an old deploymentHTTP+SSE (plan to migrate)

Common transport bugs

MCP Pulse detects the transport, parses JSON and SSE responses, and flags exactly these failures.

Not sure your transport is right?

Scan the endpoint — we handshake over streamable HTTP and tell you what's wrong.

Scan my server →