Skip to content

AI, decoded

How does MCP (Model Context Protocol) work?

An AI application, called the host, opens one MCP client connection for each MCP server it uses. Each server offers tools to call, resources to read and prompts to reuse, and the two sides exchange JSON-RPC 2.0 messages over standard input and output for a local server or Streamable HTTP for a remote one. The model never connects to your systems directly; the host decides what it sees and should ask a person before risky calls. Block's Angie Jones told Chain of Thought that Block rebuilt its Goose agent as an MCP client after Anthropic showed the company a draft of the protocol.

· Chain of Thought

Level 4: How AI systems are built · 4.3 Tools, MCP and agent architecture

MCP (Model Context Protocol)AI Agents

  • 4 episodes
  • 5 guest clips
  • 3 common questions
  • 5 glossary terms

In detail

Three roles

The MCP architecture guide names three participants. The host is the AI application a person uses, such as an IDE, a desktop assistant or an internal agent. A server is a program that provides context or actions from one system, such as a file system, a ticket tracker or a database. The host creates one client for each server, and each client keeps a single connection to its server.

Block’s path into the protocol shows how the roles fit. Angie Jones says an engineer building an internal tool kept running into problems with models and tool calling. When Anthropic showed Block a draft of MCP, the team rebuilt that tool, Goose, as an MCP client and released it as open source. Each new system Block connected became another server Goose could use.

What a server can offer

The guide describes three core primitives a server exposes:

  • Tools: functions the host can call to take an action or run a query, such as creating a ticket or searching a codebase.
  • Resources: data the host can read for context, such as file contents or database records.
  • Prompts: reusable templates that structure an interaction, such as a review checklist.

Each has a way to discover what is available (for example tools/list) and to use it (tools/call for tools). Messages follow JSON-RPC 2.0, a small standard for requests and responses. The 2026-07-28 specification, current as of October 24, 2026, carries protocol version and capabilities in per-request _meta rather than a connection-start negotiation handshake. A client can optionally call server/discover to learn what the server supports. Legacy versions, 2025-11-25 and earlier, instead establish a session with an initialize handshake.

Two ways to connect

A server can run on the same machine as the host and talk over standard input and output, which the guide notes typically serves a single client. Or it can run as a remote service over Streamable HTTP, which typically serves many clients. The same JSON-RPC messages travel over both.

SwirlAI’s Aurimas Griciūnas thinks MCP brings the most value with remote servers, and warns that it is sometimes overused: for a tool that lives inside your own code, calling it directly can be simpler. The trade-off is in MCP vs. a custom integration.

Follow one request

Illustrative example: a developer asks an IDE assistant to summarize the open bugs assigned to her.

  1. The IDE creates a client for the issue-tracker server. It may first call server/discover to learn the server’s supported versions and capabilities, but this is optional. Each request carries its version and capabilities in _meta, and the server accepts or rejects that request independently.
  2. The client asks for the server’s tool list and gets back names, descriptions and input schemas, including search_issues.
  3. The host passes those tool descriptions to the model along with the request. The model replies that it wants to call search_issues with her username and an open status.
  4. The host checks its approval rules, then sends tools/call through the client. The server queries the tracker with the developer’s own credentials and returns the results.
  5. The host adds the results to the model’s context, and the model writes the summary.

The model chooses the tool; the host makes the call. How the model makes that choice is covered in how AI agents use tools.

Where the safety decisions live

The protocol leaves the important controls to the host. The specification’s tool schema lets a server mark a tool with hints such as destructiveHint, which signals that a call may delete or overwrite something. The schema also warns that these annotations are hints and that clients should not trust them from servers they do not trust. The tools section says there should always be a human in the loop who can deny a tool call.

Block uses the same pattern. Jones says her team marks destructive tools, and Goose lets an agent run any non-destructive tool on its own but asks the user before a destructive one. Block also connects its own MCP servers to its identity provider through OAuth, so signing in works like any other work app. The rest of Block’s rollout controls are in 4 guardrails for letting your whole company use AI.

Scoping access is where things go wrong. CrewAI’s João Moura cites an incident in which GitHub’s new MCP server gave access to private repositories it should not have. In his account, the hard part is not only authentication but the scope of access, which may need to change during a run depending on who is running it. The specification’s security best practices forbid one common shortcut, token passthrough, where a server forwards a client’s token to a downstream API without checking that the token was issued for that server.

Where it falls short

MCP standardizes the connection, not the quality of what sits behind it. Airbyte’s Michel Tricot puts it this way: MCP is just an interconnect, a way of connecting a model to an external system, and a thin wrapper over an API will still give the model poor results. Every tool description a host loads also takes up room in the model’s context, so connecting many servers has a cost even before a single call. For how MCP relates to agent-to-agent protocols, see MCP vs. A2A.

Disclosure: Episodes 48 and 52 are sponsored by Galileo, the Season 3 presenting sponsor; the reads are at 49:33 in episode 48 and at 1:30 in episode 52. Episodes 29 and 38 were sponsored by Galileo, where Conor then worked; episode 29 was co-hosted by Galileo CEO Vikram Chatterji, introduced at 0:29.

How MCP works: one host, one client per server, JSON-RPC messages over two transports On the left, the MCP host, an AI application such as an IDE or assistant, holds the model, an approval step and three MCP clients. Each client connects to one MCP server on the right. A local file-system server connects over standard input and output; remote issue-tracker and database servers connect over Streamable HTTP. Every connection carries JSON-RPC 2.0 messages. Each server can offer tools to call, resources to read and prompts to reuse. A note says the model never talks to the servers directly: the host decides which tools it sees and asks a person before destructive calls, and tool annotations such as destructiveHint are hints, not guarantees. One host, one client per server The Model Context Protocol, specification version 2026-07-28. The host is in charge of every call. MCP HOST an AI app: IDE, assistant, internal agent model picks a tool approval ask before destructive client 1 client 2 client 3 The model never connects to servers. The host chooses what it sees and sends each call through a client. stdio (local) Streamable HTTP (remote) Streamable HTTP (remote) EVERY LINK: JSON-RPC 2.0 file-system server issue-tracker server database server A SERVER OFFERS Tools functions to call Resources data to read Prompts templates to reuse For tools: discover with tools/list; call with tools/call. Hints, not guarantees: a server can flag a tool with destructiveHint, but clients should not trust hints from untrusted servers. Roles, transports and primitives from the official MCP architecture guide and specification, checked Oct. 24, 2026.
The host decides what the model sees and when a person approves a call. Roles, transports and primitives follow the MCP architecture guide and the 2026-07-28 specification. Download the image

Hear it from the guest

“We kind of rebuilt goose as an MCP client.”
Watch on YouTube
“MCP is just an interconnect. It's just a way of connecting an LLM to an external system.”
Watch on YouTube
“It brings most value when you have remote MCP servers, right?”
“So like annotating tools that say like this tool is this word is strong, destructive.”
Watch on YouTube
“Their new MCP server was giving access to private repos and it shouldn't.”

Quotes lightly edited to remove filler words.

Go deeper

Common questions

Is MCP only for Claude?
No. Anthropic introduced it, but it is an open protocol with a public specification, and the official architecture guide uses Visual Studio Code as its example host. Block's Goose is another MCP client, and many companies publish MCP servers for their own products.
Does an MCP server need OAuth?
Authorization is optional in the specification. When a server runs over HTTP and requires authorization, the specification builds on OAuth 2.1. A local server started over standard input and output should not use that flow and instead gets credentials from its environment.
What is the difference between an MCP tool and a resource?
A tool is a function the AI application can call to take an action or run a query. A resource is data the application can read for context, such as a file or a database record. Prompts are a third primitive: reusable templates a server offers to structure an interaction.

From the conversation

This explainer is drawn from these episodes — each carries its full transcript.

Concepts in this explainer

Model Context Protocol (MCP)Agent2Agent ProtocolAI AgentHuman in the LoopTool Use (Function Calling)