What Is a Transport in MCP?

Filed as AFR/MCP-17 · task class Code modification · all MCP topics

What is said, and how it travels

A transport is the channel MCP messages travel over. The protocol separates what is said from how it travels: the messages are JSON-RPC 2.0 requests, responses and notifications whatever the channel, and the channel’s job is only to deliver them in both directions and keep the session alive while it lasts.

Two shapes are in general use. In the local one, the host launches the server as a subprocess and the two exchange messages over its standard input and output — a private channel between two processes on one machine, with the operating-system account as the boundary. In the network one, messages are carried over HTTP, and the server can stream responses back to the client as they are produced.

Because the layers are separate, a server’s operations survive a change of channel: the same tools, the same resources, the same descriptions, the same schemas. What does not survive unchanged is everything the channel implied — who starts the process, who may reach it, how failure appears, and what the server’s own environment contains.

Framing is the part a channel has to get exactly right, and the two shapes solve it differently. Over the local channel each message is a single line: one JSON object terminated by a newline, with no newline anywhere inside it, so a reader finds the boundaries without parsing what sits between them. Over HTTP the boundary is the body of a request or a response, and a server that streams sends each message as its own event on the open stream. The choice is not negotiated per message either way — the channel is settled before the session opens, and both ends have to agree on it before a single protocol message means anything.

Why the channel carries traffic in both directions

A channel here is not a request pipe. Either side may originate a message: a server announces that its published list has changed without being asked, and it may raise a request of its own — asking the host to collect an answer from the person at the keyboard, or to run a completion on its behalf — which arrives at a client that asked for nothing. A channel able only to return answers to questions already put would not support that half of the traffic.

This is why the local shape uses two open streams of a running process rather than a command invoked once per call, and why the network shape needs somewhere for a server to write between requests. It is also why the channel has to hold the session open rather than treating each message as complete in itself: a reply that arrives after its session is gone has nothing left to be a reply to.

A channel decides nothing about content

A transport also decides nothing about content. It does not inspect messages, adds no meaning to them, and cannot make an operation safe that was not safe over the other channel.

How the Registry classifies changing the channel

Switching an integration from one channel to another without changing the operations it exposes is a change to running code, which the code modification class covers. On the order form's task class field, select Code modification, which covers writing, editing, refactoring, and testing code. That class has its own page at /tasks/code.

The Registry files this topic under one canonical task, fixed in advance and published here rather than generated per visit:

Switch an MCP integration from a local process connection to a network transport without changing the operations it exposes.

That string, hashed once, is ed98a72739c36844… — the first sixteen of sixty-four hex characters. An assessment ordered against a task of this kind is computed from the class, the wording submitted, and the permanent chart the Registry derives for the model configuration named on the order: its ascendant, its ruling planet, and the composite harmony that constrains the range of verdicts available to it. The whole derivation is published at /method.

The risk in a transport change is the assumption left behind: a boundary that was a property of the old channel and is still being relied on after the channel changed. 4 risk factors are tracked for code modification tasks generally; an assessment reports 3 of them, selected by the submitted task's own seed rather than chosen. Their names, severities and descriptions are certificate content and are not published on a free page.

Get Assessment

What this page does not claim

The Registry makes no representation that an assessment predicts the outcome of any task, and no assessment is validated against real-world results.

This page defines a term and states a classification. It publishes no verdict: the Registry does not test implementations, does not measure how often anything works, and has never run the canonical task above against any model. Which transport a deployment uses, and how the connection is authenticated once it has changed, are decisions the canonical brief leaves open.

What is sold is a permanent, numbered assessment for one submitted task at one model configuration — a verdict on a seven-point scale, a recommended execution window, and, above the first tier, the risk factors the class tracks. EUR 1.90 Standard, EUR 4.90 Extended, and EUR 14.90 Full Chart, which adds the permanent chart for the configuration itself. Assessments from EUR 1.90; machine-readable at /pricing.json.

Related surfaces

← All MCP topics · The AFR-1 method · Code modification task class

Related topics: Remote servers · The protocol itself · MCP client

Questions about a transport

What is a transport in MCP?
The channel the protocol’s messages travel over, kept separate from the messages themselves. Its job is to deliver them in both directions for the life of the session.
Which transports are in general use?
A local one, where the host launches the server as a subprocess and messages travel over its standard input and output, and a network one, where messages are carried over HTTP and responses can be streamed back.
Does changing the transport change what a server offers?
No. The operations, resources and prompts are unchanged. What changes is who launches the process, who can reach it, how failures appear, and what environment it runs in.
Can a server choose which transport a client uses?
No. The channel is settled before the session exists, by whoever configured the connection: a host either launches the server as a subprocess and speaks to it over that process’s streams, or connects to an address over the network. An implementation may support one shape or both, and what it publishes is identical either way.