Model Context Protocol (MCP): A Universal Standard for AI Application Extensions

anthropic · Tech · 2024 · source Agentic: yes · promotional bias: low · source-backed · extracted with prompt 0.5.6 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: AI application extension protocols

AI applications needed a standard way to connect models to tools, data, prompts, memory, and external systems without every client and integration pair building custom one-off adapters.

Constraints:

Architecture

MCP defines a client-server protocol for AI applications to consume external capabilities through standardized primitives. Clients are AI applications such as IDEs, Claude Desktop, coding agents, or chat interfaces; servers expose tools, resources, prompts, and later capabilities such as sampling. Tools are model-initiated actions, resources are URI-addressed data/context that may be user-, app-, or model-controlled, and prompts are user-initiated templates or command-like message bundles. The protocol uses JSON-RPC, takes design inspiration from LSP, supports bidirectional communication, and is evolving from long-lived SSE toward streamable HTTP with session resumption. Authorization is based on OAuth-style transport-layer flows, while server trust is treated as an open supply-chain governance problem.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  UI["User interface"] --> Client["AI application client"]
  Client --> Transport["Transport layer"]
  Transport --> Server["MCP server"]
  Server --> Tools["Tools primitive"]
  Server --> Resources["Resources primitive"]
  Server --> Prompts["Prompts primitive"]
  Server --> Sampling["Sampling capability"]
  Server --> External["External service"]
  Server --> Recursive["Recursive MCP client"]
  Recursive --> External
  Client --> Model["Model completion"]
  Tools --> Model
  Sampling --> Client
  Auth["Authorization layer"] --> Transport
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
AI application client Host application such as an IDE, Claude Desktop, coding agent, or chat interface that controls model interaction and user experience. MCP server, User interface, Model completion
MCP server Integration endpoint that exposes tools, resources, prompts, sampling requests, or composed server capabilities. AI application client, Tools primitive, Resources primitive, Prompts primitive, Sampling capability, External service, Recursive MCP client
Tools primitive Model-controlled actions such as SQL queries, API calls, file operations, or other function-calling style capabilities. AI application client, MCP server, Model completion
Resources primitive URI-identified data or context that can be attached, retrieved, indexed, or interpreted by the application. AI application client, MCP server, User interface
Prompts primitive User-initiated prompt or message templates, analogous to slash commands or autocomplete macros. AI application client, User interface, Model completion
Sampling capability Mechanism for servers to request model completions from the client while remaining model-independent. MCP server, AI application client, Model completion
Recursive MCP client A server-side MCP client that consumes other MCP servers to build composed workflows or DAG-like integrations. MCP server, External service
External service Filesystem, IDE, database, API, memory store, Sentry, 3D printer, Reddit, or other service exposed through MCP. MCP server
Authorization layer Transport-level OAuth-style authorization and local-server auth handling for remote or local servers. AI application client, MCP server, Transport layer
Transport layer JSON-RPC over transports such as stdio, SSE, and streamable HTTP with optional session resumption. AI application client, MCP server
User interface Application surface that lets users attach resources, trigger prompts, filter tools, approve scopes, or choose feature sets. AI application client, Resources primitive, Prompts primitive
Model completion LLM invocation owned by the client application and used for tool selection, resource use, sampling, and agentic behavior. AI application client, Tools primitive, Sampling capability

Data flow

An AI application connects to one or more MCP servers. The server advertises primitives such as tools, resources, prompts, and sampling capabilities. The client decides how to surface those primitives to the user and model: tools become model-invoked actions, resources can be attached or retrieved into context, prompts become user-triggered templates, and sampling lets servers ask the client for model completions without owning model API keys. Results return through the client-controlled application, and recursive server/client designs can compose multiple MCP servers into richer workflows.

3 supporting quotes
“We use this client server terminology and we can talk about why that is and where that came from”transcript, stated
“tools which we've already talked about is like adding adding tools directly to the model or function calling as sometimes called”transcript, stated
“resources which is basically like bits of data or context that you might want to add to the context”transcript, stated

Why this architecture

MCP follows LSP's standardization move: make applications and integrations speak a common protocol so each side can specialize. The team chose JSON-RPC because it is boring infrastructure, then focused design energy on primitives and presentation semantics. Distinguishing tools, resources, and prompts lets application developers build different UI affordances instead of forcing all extension behavior through model-initiated tool calls. Stateful and bidirectional capabilities are retained because the creators expect richer AI applications, agents, and modalities to need state over time.

3 supporting quotes
“you have multiple like applications and multiple integrations you want to build and like what is better there to fix this than using a protocol”transcript, stated
“we did take JSON RPC and we took this idea of birectionality but I think we quickly took it down a different route”transcript, stated
“thinking and like offering different primitives not because necessarily the semantics of them are very different but because you want them to show up in the application differently”transcript, stated

Models used: Claude · large language models · smaller/faster filtering models · agent frameworks

Scale

Alternatives considered (roads not taken)

Build one-off integrations for every application and service pair

Rejected because: That recreates the M by N problem MCP was designed to solve.

“this is clearly like an M* N problem. Like you have multiple like applications and multiple integrations you want to build”transcript, stated

Treat tool calling as the solution for every integration

Rejected because: The creators argue tools are necessary but insufficient; resources and prompts need different application/UI behavior.

“tool calling is necessary but very insufficient like there are many other things you would want to do besides just get tools”transcript, stated
“resources are more flexible basically”transcript, stated

Use OpenAPI alone as the LLM integration layer

Rejected because: OpenAPI is useful for APIs, but the speakers say it is too granular and does not express AI-specific primitives.

“we think that they're just like too granular for what you want to do with LLMs”transcript, stated
“they don't express higher level AI specific concepts like this whole mental model that we've talked about with the primitives of MCP”transcript, stated

Require long-lived SSE connections for all remote servers

Rejected because: Persistent connections are operationally hard at scale, so streamable HTTP allows plain HTTP, streaming, server requests, and session resumption.

“it requires this like longived persistent connection”transcript, stated
“you get kind of the best of both worlds where it can still be this stateful interaction and and stateful server but allows you to like horizontally scale”transcript, stated

Add every requested feature directly into the protocol

Rejected because: The team prefers conservative additions because removal is hard once clients and servers depend on a feature.

“when when you're designing a protocol, you have to be extremely conservative”transcript, stated
“it's far easier to like only accept things or like only add things that you're extremely certain about”transcript, stated

Patterns

tool-use-orchestration (architecture)

MCP standardizes model-controlled tools so AI applications can invoke external actions through server-provided capabilities.

“tools are always meant to be initiated by the model”transcript, stated
“LLM the ability to run a SQL queries for example that makes sense as a tool”transcript, stated

context-engineering (context)

MCP separates resources and prompts from tools so applications can curate data, schemas, documents, backtraces, and prompt templates into model context through user or app affordances.

“resources which is basically like bits of data or context that you might want to add to the context”transcript, stated
“a user just like drops a a URI in and then you like automatically figure out how to interpret that”transcript, stated

rag-retrieval (retrieval)

The designers explicitly envision clients building RAG indexes over documents exposed by MCP resource servers.

“an MCP server exposes you know a set of documents that you have your database whatever you might want to as a set of resources”transcript, stated
“then like a client application would build a full rag index around this right”transcript, stated

agent-memory (memory)

A reference memory server demonstrates cross-conversation memory as an MCP-provided capability rather than a baked-in model feature.

“the memory MCP server which gives the LLM the ability to remember things across conversations”transcript, stated
“if you need to scale it up, you should probably do some some more battle tested thing”transcript, stated

safety-policy-enforcement (governance)

MCP keeps client applications and users in control, adds transport-layer authorization, and treats server trust as a supply-chain security problem.

“the client application and by extension the user ultimately they should be in full control of absolutely everything that's happening via MCP”transcript, stated
“you want to make sure that you're not using ones that are really like sus right”transcript, stated

structured-output-contract (protocol)

The protocol uses JSON-RPC and named primitives as a structured contract between clients and servers.

“we did take JSON RPC and we took this idea of birectionality”transcript, stated
“focus on how features manifest more than the semantics of things”transcript, implied

Tradeoffs

Innovate in primitives while keeping transport boring.

Chose JSON-RPC plus MCP-specific tools, resources, prompts, and sampling over A novel transport or generic API wrapper layer.

Rationale: The team wanted to spend design energy on AI-application primitives and presentation behavior, not on the bytes on the wire.

“you kind of want to pick the areas you want to innovate in but you kind of want to be boring about the other parts”transcript, stated
“the innovation is on the the primitive you choose and these type of things”transcript, stated

Retain statefulness while reducing operational burden.

Chose Streamable HTTP with optional streaming, server requests, and session resumption over Pure stateless request/response or always-on SSE.

Rationale: The designers believe richer AI applications will become more stateful, but servers still need simpler deployment and horizontal scaling.

“if the future looks more stateful we we don't want to move away from that paradigm completely”transcript, stated
“balance the belief that statefulness is important with sort of simpler operation and maintenance”transcript, stated

Keep client applications in control.

Chose Client/user control over filtering, presentation, model selection, and sampling over Server-defined behavior that dictates the whole interaction.

Rationale: Application developers need differentiated experiences and users need control over what MCP does on their behalf.

“application developers don't want to be commoditized they don't want their application to end up the same as every other AI application”transcript, stated
“We we really want the client applications to have full control in the MCP paradigm”transcript, stated

Favor open community governance without formal standardization too early.

Chose Collaborative, merit-driven open-source stewardship over Immediate foundation or standards-body process.

Rationale: The team wants broad participation while avoiding process overhead that slows a fast-moving AI protocol.

“we genuinely we are very genuine in our desire to have this be an open project”transcript, stated
“We worry about processes that are slowing us down”transcript, stated

Gotchas (what bit them)

Overloading tools loses important application semantics.

Root cause: Many developers default to tool calling for databases, prompts, documents, and context even when resources or prompts would produce a better user experience.

Resolution: Choose primitives based on who should control the interaction: tools for model actions, resources for contextual data, and prompts for user-initiated templates.

“everybody just you know has a hammer and wants to do tool calling on everything”transcript, stated
“tools are always meant to be initiated by the model”transcript, stated

Too many overlapping tools can confuse the model.

Root cause: Tool selection quality depends on model capability, naming, descriptions, and overlap between servers such as GitHub and GitLab.

Resolution: Filter at the application layer, use smaller models to select relevant tools, use proxy servers, or give users contextual enable/disable affordances.

“the overlap is quite significant because they look very similar to the model and confusion becomes easier”transcript, stated
“maybe in your client application like the AI application you do some filtering over the tool set”transcript, stated

Naive remote transports make production operation harder.

Root cause: The original SSE model assumed long-lived persistent connections, which are difficult to operate and scale.

Resolution: Use streamable HTTP with gradual enhancement, streaming, server-initiated requests, and session resumption.

“that's like a tall order for anyone operating at scale”transcript, stated
“server and client both support the ability to like resume sessions”transcript, stated

Registry trust can create a supply-chain attack surface.

Root cause: Trusted server listings, downloads, likes, or reviews can be gamed, and updates can compromise previously trusted packages.

Resolution: Treat MCP server discovery like open-source supply-chain security and inspect traffic or server behavior rather than relying only on social proof.

“The next update can compromise a trusted package and actually that's the one that does the most damage”transcript, stated
“it's like this very classic just supply chain problem that like all registries effectively have”transcript, stated

Evaluation

The source evaluates MCP through adoption, implemented clients and SDKs, protocol ergonomics, community contribution, client support for primitives, operational deployability, and whether the protocol avoids known LSP and supply-chain pitfalls.

Metrics: number of clients supporting primitives · SDK coverage across languages · time to build a simple server · number of tools handled without confusion · community contribution quality · remote transport deployability · authorization coverage · server trust and vetting

3 supporting quotes
“build a server in like half an hour in the language of your choice and and how the model interacts with the things that matter to you”transcript, stated
“more clients that support the full breadth of the spec would be amazing”transcript, stated
“it's marriage driven in the sense that if you have done work and if you if you showcase this with like practical examples”transcript, stated

Outcomes

This is a protocol and ecosystem case rather than a single production deployment. Its scale is reflected in multi-language SDKs, many community servers and registries, hundreds-of-tools discussions, and contributions from multiple companies.

3 supporting quotes
“there's plenty of people not anthropic employees who have commit access and admin access to the repositories”transcript, stated
“the C one is done by Microsoft. It's a very recent addition last week and and they do everything there”transcript, stated
“The same goes with JetBranch doing the Cotlin one and Spring AI doing the Java one”transcript, stated