Transport Types — How MCP Servers Communicate¶
We know what MCP servers do (Topic 12). Now let's learn how they talk to Copilot — the delivery method for those kitchen orders.
The Cloud Café Order System Analogy 📋¶
Your café has two ways to get orders to the kitchen:
| Transport Type | Café Analogy | How It Works |
|---|---|---|
| stdio | 🗣️ Shouting through the kitchen window | Copilot starts the MCP server on your machine and talks to it directly |
| HTTP | 📱 Phoning in an order from another location | Copilot sends requests over the network to an MCP server running somewhere else |
🗣️ stdio — "Shouting Through the Window"¶
stdio stands for Standard Input/Output — it's the most basic way two programs talk on the same computer.
How It Works¶
Copilot starts the MCP server → they talk directly through a pipe
(like two tin cans connected by a string 🥫———🥫)
- Copilot starts the MCP server process on your machine
- They communicate through a direct channel (stdin/stdout)
- When you close Copilot, the MCP server stops too
- No network, no internet needed between them
Your MCP Servers Both Use stdio!¶
| Server | Command That Runs | Transport |
|---|---|---|
| m365-admin-graph | node server.js on your PC |
stdio |
| azure | npx @azure/mcp@latest on your PC |
stdio |
Both run on your laptop, and Copilot talks to them like coworkers sitting at the same desk.
stdio is the Default
Most MCP servers you'll encounter use stdio. It's simple, fast, and secure because everything stays on your machine. If you're configuring an MCP server and it doesn't mention transport type — it's probably stdio.
📱 HTTP (Streamable) — "Phoning In from Outside"¶
Sometimes the kitchen isn't in the same building. Maybe Cloud Café has a central bakery across town that makes all the pastries.
How It Works¶
Copilot → sends request over the internet → MCP server in the cloud
(like placing a delivery order via phone 📞)
- The MCP server runs somewhere else (cloud, another machine, a server room)
- Copilot connects to it via a URL (like
https://mcp.cloudcafe.com) - The server can be always on, serving multiple users
- Needs authentication (can't let anyone phone in orders!)
When Would You Use HTTP?¶
| Scenario | Why HTTP? |
|---|---|
| MCP server running in Azure | It's not on your laptop |
| Shared team MCP server | Multiple people need access |
| Always-on service | Needs to be available 24/7 |
| Mobile or web apps | Can't run local processes |
Cloud Café Example¶
- stdio: Dakota (trainee barista) uses Copilot CLI on her laptop → MCP server runs on her laptop → talks to the café database (personal, local)
- HTTP: All café staff use a shared MCP server hosted in Azure → any device, any time (shared, cloud, always available)
Side-by-Side Comparison¶
| Feature | stdio 🗣️ | HTTP 📱 |
|---|---|---|
| Where it runs | Your machine | Anywhere (cloud, server) |
| Speed | ⚡ Fastest (no network delay) | 🌐 Slight delay (network hop) |
| Setup difficulty | Easy — just configure and go | More work — needs hosting, URL, auth |
| Security | Very safe (stays local) | Needs authentication (API keys, OAuth) |
| Availability | Only when your PC is on | Can be 24/7 |
| Who can use it | Just you, on your machine | Multiple people / devices |
| Your servers | ✅ Both of yours use this | ❌ None yet |
| Café analogy | Kitchen in the café | Bakery across town |
📟 SSE — The Older Phone¶
You might see SSE (Server-Sent Events) mentioned in MCP documentation or tutorials online.
Think of SSE as the older phone model 📟 — it worked fine for calling in orders, but HTTP Streamable is the newer smartphone 📱 that replaced it. Same idea, better technology.
SSE is Legacy
If you see "SSE" in MCP docs, just know it's the older version of HTTP transport. New MCP servers use "Streamable HTTP" instead. Both mean "over the network" — the newer one is just more efficient.
Think of it like: Dial-up internet (SSE) vs Fibre broadband (HTTP Streamable). Both get you online, but one is clearly better!
How Transport Appears in Your Config¶
Here's what your mcp-config.json looks like with different transport types:
stdio (what you have now)¶
HTTP (what a cloud server looks like)¶
{
"mcpServers": {
"cloud-server": {
"type": "http",
"url": "https://mcp.cloudcafe.com/sse",
"headers": {
"Authorization": "Bearer your-api-key"
}
}
}
}
Don't worry about memorising this
When we do the hands-on exercise, you'll see exactly how this config works. For now, just know that stdio = local and HTTP = remote — and the config file tells Copilot which one to use.
Quick Summary¶
| Transport | One-liner | When to Use |
|---|---|---|
| 🗣️ stdio | Same machine, direct talk | Personal use, local MCP servers (what you have now) |
| 📱 HTTP | Over the network | Cloud hosting, shared/team servers |
| 📟 SSE | Older version of HTTP | Legacy — being replaced by HTTP Streamable |
💡 Remember: Transport type is just the delivery method. Whether you shout through the window or phone it in, the kitchen (MCP server) cooks the same food. The what doesn't change — only the how it gets there.