- In short
- MCP communication has two common transports. stdio connects a local server process to the client on the same machine, while socket-based transport connects to a networked server the client reaches remotely. In every case the client initiates the connection and the server exposes the tools, resources, and prompts.
Connecting a client to a server
Authoring an MCP server defines what it exposes; a communication pattern is how a client actually connects to it. On the Claude Certified Developer - Foundations (CCDV-F) exam, this knowledge point sits at the apply level, which means you are expected to choose the right transport and topology for a given deployment, not just recite names. Two ideas carry it: the transport (stdio versus sockets) and the roles (client versus server).
- MCP communication pattern
- The transport and topology by which a client connects to an MCP server. stdio connects a local server process on the same machine; socket-based transport reaches a networked server remotely. The client initiates the connection and the server exposes the tools, resources, and prompts.
stdio: a local server process
The stdio transport connects a local server process to the client running on the same machine. The client launches or talks to the server over standard input and output streams, and both live on the same host. This is the natural pattern for a server that is specific to one machine or one user's environment: a filesystem server, a local development tool, anything where the capability lives where the client runs and does not need to be shared across a network.
The strength of stdio is simplicity and locality. There is no network hop, no remote endpoint to secure, and the server is right there beside the client. The limitation is exactly the flip side: a stdio server is reachable only on that one machine, so it cannot be shared by clients running elsewhere.
Sockets: a networked server
The socket-based transport connects to a networked server the client reaches remotely. Here the server runs as a networked service, potentially on separate infrastructure, and clients connect to it over the network rather than by launching a local process. This is the pattern for a shared deployment: when many applications, possibly on many machines, all need the same MCP server, a networked socket-based server lets them all reach one central instance.
The strength of the networked pattern is reach and sharing: one deployed server serves many remote clients. The cost, echoing the client-side versus server-side trade-off in tool usage patterns, is that you now have a network boundary to secure and network latency on every call. The choice between stdio and sockets is therefore a choice about where the server needs to be reachable from.
Client versus server: who does what
The second idea is the roles, and it is a frequent exam trap. In MCP the client initiates the connection and the server exposes the capabilities. The Claude application is the client: it reaches out and connects. The MCP server is what it connects to: it exposes the tools, resources, and prompts. This holds regardless of transport, whether the client launches a local stdio process or dials a remote socket, the client is still the initiator and the server is still the provider.
Getting this backwards is a real error the exam probes. If you imagine the server reaching out to the application, or the application exposing tools to the server, you have inverted the relationship and will misread connection scenarios. Anchor it firmly: client initiates, server exposes.
Matching the transport to the deployment
The apply-level skill here is choosing correctly. If the server is specific to a single machine or user environment and does not need to be shared, stdio is the clean fit: local, simple, no network to secure. If the server must be reached by multiple clients or must live on shared infrastructure, a socket-based networked deployment is required, because a local stdio server simply cannot be reached from other machines.
The central exam trap is using a local stdio server where a networked, shared deployment is required. A scenario might describe a team that stood up a filesystem-style stdio MCP server and then wonders why colleagues on other machines cannot use it. The answer is that stdio is inherently local; sharing across machines needs the networked socket-based transport. This is the deployment concern that MCP server authoring and deployment first raised, now made concrete as a transport choice.
The traps the exam sets
Two traps dominate. The first is the transport mismatch: using a local stdio server where a networked, shared deployment is required. The tell is that clients on other machines cannot reach a server that works fine locally. The fix is a socket-based networked deployment.
The second is confusing which side is the client and which exposes the capabilities. If a scenario or answer describes the server initiating the connection to the app, or the app exposing tools to the server, it has the roles inverted. The client initiates; the server exposes.
Worked example
A platform team builds an MCP server exposing an internal analytics query tool and runs it as a local stdio process on one engineer's laptop. Other teams' Claude applications cannot connect to it.
Locally, everything works: the engineer's own client launches the stdio server and queries analytics without a hitch. But when other teams point their Claude applications at it, nothing connects. The team suspects a bug in the server's tools.
The real problem is the transport. A stdio server connects a local server process to a client on the same machine. It has no network endpoint, so applications on other machines have no way to reach it. The tools are fine; the communication pattern is wrong for a shared use case.
The fix is to deploy the server with a socket-based networked transport so it is reachable remotely, then have each team's client connect to that shared endpoint. Along the way, the team confirms the roles: each application is the client that initiates the connection, and the deployed analytics server is the one that exposes the tools. The lesson the exam wants: a shared, multi-client MCP server needs a networked transport, not local stdio, and the client is always the initiator.
Common misreadings to avoid
Misconception
A stdio MCP server can be shared across machines as long as it is running.
What's actually true
Misconception
The MCP server connects out to the Claude application to offer its tools.
What's actually true
How this is tested on the exam
Domain 8 questions on this knowledge point give you a deployment and ask which transport fits, or describe a connection that fails and ask why. The correct answers trace back to the two ideas here: stdio is local and sockets are networked, and the client always initiates while the server exposes. Because this is an apply-level knowledge point, you must pick the right pattern for the situation, a local stdio server for a single-machine capability, a networked socket-based server for a shared one, and never invert the client-server roles.
A company wants a single MCP server exposing a shared pricing tool that dozens of Claude applications across different machines must all use. Which communication pattern fits, and what is the correct client-server relationship?
People also ask
What transports does MCP use?
When should an MCP server use stdio versus sockets?
In MCP, which side is the client and which is the server?
Watch and learn
Official Anthropic Academy lessons first, then hand-picked walkthroughs. Videos load only when you press play.
No videos curated for this concept yet
We are still curating the best official and community videos for this topic.
References & primary sources
Master this concept with Archie
Practice it inside an adaptive study session. Archie, your Socratic AI tutor, tracks your mastery with Bayesian Knowledge Tracing and schedules the perfect next review.