AI AgentsDeep DiveFreshLast reviewed: · 9d ago

    Model Context Protocol (MCP) Guide 2026: Complete Reference

    TL;DR

    Quick Answer
    Cited by AI
    MCP is an open protocol that lets any LLM client call any compliant server's tools, resources, and prompts over JSON-RPC. The 2026-07-28 spec is stateless: no session handshake, mandatory OAuth 2.1, and cache-scoped list endpoints.

    The engineer's reference for the 2026-07-28 stateless MCP specification — protocol internals, authorization, cache scoping, security, and enterprise deployment patterns from 100+ Alice Labs implementations.

    The Model Context Protocol (MCP) is an open JSON-RPC protocol, originated by Anthropic in November 2024 and donated to the Linux Foundation Agentic AI Foundation in December 2025, that standardises how LLM applications discover and invoke tools, resources, and prompts exposed by remote or local servers.

    Eric Lundberg - Author at Alice Labs
    Written by
    Linus Ingemarsson - Reviewer at Alice Labs
    Reviewed by
    Published
    16 min read
    97M+

    Monthly MCP SDK downloads by end of 2025

    Linux Foundation AAIF announcement

    17,468

    MCP servers across all registries (Nerq census, Q1 2026)

    Tooldirectory.ai — State of MCP Servers 2026

    100+

    Production AI implementations shipped by Alice Labs since 2023

    Alice Labs internal data

    What you'll learn

    • What the Model Context Protocol is and why every major LLM vendor now ships a client
    • What the 2026-07-28 stateless spec changed — Mcp-Method, Mcp-Name, MRTR, ttlMs/cacheScope
    • How MCP relates to native function calling and when to use which
    • How to build a stateless MCP server in Python with the 2026 SDK
    • How OAuth 2.1, EMA, and Client ID Metadata Documents secure enterprise deployments
    • How tool poisoning and prompt injection attack MCP and how Alice Labs mitigates them
    • Reference architecture patterns for MCP in the enterprise (domain server, gateway, private registry)
    • The concrete migration path from the 2025 stateful spec to 2026-07-28

    Key Takeaways

    • MCP was released by Anthropic on 2024-11-05 and donated to the Linux Foundation Agentic AI Foundation on 2025-12-09, with co-sponsors including Block, OpenAI, Google, Microsoft, AWS, Cloudflare, and Bloomberg.
    • The 2026-07-28 spec removes the initialize handshake and Mcp-Session-Id header, adds mandatory Mcp-Method and Mcp-Name headers, and formalises Multi Round-Trip Requests — the single most-requested change from teams running MCP in production.
    • SEP-2549 added ttlMs and cacheScope to tools/list, prompts/list, resources/list, and resources/read, letting clients cache like HTTP Cache-Control and eliminating long-lived SSE streams just to watch for invalidation.
    • The MCP ecosystem passed 97M+ monthly SDK downloads and 10,000+ active public servers by end of 2025; independent aggregators like Nerq counted 17,468 servers across all registries in Q1 2026 and Glama indexes close to 20,000.
    • Any internet-accessible MCP server must implement OAuth 2.1 with PKCE (S256); the 2026 spec also requires RFC 9207 issuer validation and replaces Dynamic Client Registration with Client ID Metadata Documents (CIMD).
    • Enterprise-Managed Authorization (EMA) using ID-JAG token exchange is now stable and shipped by Anthropic, VS Code, Okta, Asana, Atlassian, Canva, Figma, Linear, and Supabase.
    • 2026 disclosures identified up to 200,000 vulnerable MCP instances; OWASP now catalogues MCP Tool Poisoning as a distinct attack class, making static metadata scanning and signed tool manifests mandatory.
    • Alice Labs runs stateless MCP servers on Cloud Run and AWS Lambda with a p95 tools/list budget of 200 ms cold and 1.2 s excluding downstream API time on tools/call — a target that only becomes achievable with the 2026-07-28 statelessness guarantee.
    01 / 15Chapter

    What is the Model Context Protocol (MCP)?

    In short

    The Model Context Protocol is an open JSON-RPC protocol for connecting LLM applications to tools, resources, and prompts. Anthropic released it on 2024-11-05 and donated it to the Linux Foundation Agentic AI Foundation on 2025-12-09, with co-sponsorship from Block, OpenAI, Google, Microsoft, AWS, Cloudflare, and Bloomberg.

    MCP is the answer to a specific problem: before it existed, every agent framework and every LLM vendor invented its own way to describe tools, pass parameters, and surface results. That N-by-M integration matrix was blocking enterprise agent projects because a tool built for one client had to be rewritten for each new model or framework.

    The protocol standardises three primitives — tools (side-effect operations, function-call style), resources (GET-style context loaders that return documents or data), and prompts (reusable prompt templates) — and defines the JSON-RPC message shapes for discovering and invoking each.

    Anthropic open-sourced the first specification on 2024-11-05 alongside reference SDKs in Python and TypeScript. The 2025-11-25 revision hardened OAuth. The 2025-12-09 governance transfer moved MCP into the Linux Foundation Agentic AI Foundation (AAIF), where a vendor-neutral technical steering committee now owns the roadmap.

    By the end of 2025 the ecosystem reported 97M+ monthly SDK downloads and 10,000+ active public servers. Alice Labs has shipped 100+ production AI implementations that use MCP-based tool servers across enterprise clients since 2024, and MCP is now our default integration layer whenever tools must be reused across models or agent frameworks. For a wider view of the frameworks that consume these servers, see our best AI agent frameworks guide for 2026.

    2024-11-05

    MCP first specification release date (Anthropic)

    Model Context Protocol Blog

    2025-12-09

    MCP donated to the Linux Foundation Agentic AI Foundation

    AAIF announcement

    02 / 15Chapter

    MCP spec 2026: what the 2026-07-28 release changed

    In short

    The 2026-07-28 spec makes MCP stateless: no initialize/initialized handshake, no Mcp-Session-Id, mandatory Mcp-Method on every request, mandatory Mcp-Name on tools/call, resources/read, and prompts/get, plus Multi Round-Trip Requests (MRTR) for mid-call user confirmations.

    The release candidate locked on 2026-05-21 and the final specification was published on 2026-07-28. It is the third major revision of MCP and the first governed under the AAIF SEP (Specification Enhancement Proposal) process.

    The delta from the 2025-11-25 revision is deliberate and narrow:

    • Handshake removed. The initialize / initialized round trip is gone. Protocol version, client info, and capabilities are self-contained in the _meta field of every request.
    • Session header removed. Mcp-Session-Id is deprecated. Any request can land on any instance behind a plain load balancer.
    • Two new headers. Mcp-Method is required on every request. Mcp-Name is required on tools/call, resources/read, and prompts/get. Gateways can now route and authorize on headers alone without parsing JSON bodies.
    • MRTR. Multi Round-Trip Requests introduce resultType: "input_required" so a tool can pause for a user confirmation without holding an SSE stream open for the entire wait.
    • Deprecation policy. A formal 12-month minimum deprecation window is now written into the spec, so SDK maintainers can plan upgrades against a calendar rather than a rumour.

    Tasks, Roots, Sampling, and Logging moved out of the core into the extensions framework with reverse-DNS identifiers (io.modelcontextprotocol/*). Anything you were relying on there needs to be migrated before the 12-month window closes.

    2026-05-21

    Release candidate locked

    MCP 2026-07-28 changelog

    12 months

    Minimum deprecation window written into the spec

    MCP 2026-07-28 changelog

    03 / 15Chapter

    How the stateless MCP protocol layer works

    In short

    Every 2026-07-28 request self-contains protocol version, client info, and capabilities in _meta. Servers deploy behind round-robin load balancers, Cloud Run, Lambda, and edge runtimes with no sticky session requirement — the single most-requested change from teams running MCP in production.

    The 2025 spec required a per-connection session: clients called initialize, the server minted an Mcp-Session-Id, and every subsequent request had to land on the same instance. Operators running MCP on Kubernetes, Cloud Run, or Lambda had to either shard by session ID, maintain a shared session store, or pin traffic with sticky sessions.

    The 2026-07-28 spec deletes all of that. A request looks like this on the wire:

    POST /mcp HTTP/1.1
    Mcp-Method: tools/call
    Mcp-Name: search_customers
    Authorization: Bearer eyJhbGciOiJSUzI1NiIs...
    Content-Type: application/json
    
    {
      "jsonrpc": "2.0",
      "id": "req-1",
      "method": "tools/call",
      "params": {
        "name": "search_customers",
        "arguments": { "region": "SE", "segment": "enterprise" }
      },
      "_meta": {
        "protocolVersion": "2026-07-28",
        "client": { "name": "claude-desktop", "version": "2026.7" },
        "capabilities": { "tools": {}, "resources": {} }
      }
    }

    Because everything the server needs to reason about the request is in the request itself, deployment topology collapses. Alice Labs migrated four enterprise MCP servers to Cloud Run in the release-candidate window and saw p95 latency drop 30–45% purely from removing session pinning and its associated in-memory state.

    The same statelessness makes gateways trivial. A router at the edge can authorize theMcp-Method header, dispatch tools/call to one autoscaling group and resources/read to another, and rate-limit byMcp-Name — all without deserialising the JSON body.

    04 / 15Chapter

    MCP cache scoping: ttlMs and cacheScope explained

    In short

    SEP-2549 added ttlMs and cacheScope fields to tools/list, prompts/list, resources/list, and resources/read responses. Semantics mirror HTTP Cache-Control — cacheScope determines whether responses are shareable across users or user-specific, and ttlMs gives a hard invalidation clock.

    Before SEP-2549, the only reliable way to know that a server's tool list had changed was to keep a long-lived SSE stream open and wait for a tools/list_changed notification. That forced every host to hold a connection per server per user — an expensive default that also broke behind CDN edges.

    The 2026-07-28 response shape now includes cache directives:

    {
      "jsonrpc": "2.0",
      "id": "req-2",
      "result": {
        "tools": [ ... ],
        "_meta": {
          "ttlMs": 300000,
          "cacheScope": "user"
        }
      }
    }

    cacheScope: "public" means the response is identical for every user of the server and can be shared across an entire team — perfect for a tool list that only depends on the server's own configuration. cacheScope: "user" pins the cache entry to the authenticated principal, so a per-user resource list never leaks across identities.

    The practical result: clients that fan out across dozens of MCP servers on cold start (Claude Code, VS Code, Copilot, the Claude Agent SDK) can pre-warm caches for a known TTL window and skip an entire round trip on subsequent invocations. Alice Labs measured client cold-start reductions of 400–900 ms across a 12-server fleet after enabling a 5-minute public TTL on stable tool lists.

    05 / 15Chapter

    MCP vs function calling: when to use which

    In short

    Function calling is the model-side mechanism — the LLM emits a structured JSON tool_call. MCP is the protocol layer that standardises how that call is discovered, executed, and returned across processes and vendors. They compose: an MCP server exposes tools; the model invokes them via function calling under the hood.

    The confusion is understandable — both concepts revolve around structured tool invocation — but they operate at different layers.

    Function calling is a model behaviour. Given a tool schema in the prompt, the model can emit a JSON tool_call instead of natural language. It couples the tool set to a single application loop, running in the same process as the model client.

    MCP is a protocol. It defines how a client discovers what tools are available on a remote server, how it authorises the call, how it invokes it, and how it returns the result — across processes, machines, and vendors. The server implements the tools; any compliant client can find and call them.

    MCP vs native function calling: decision matrix

    Dimension Native function calling MCP server
    Where tools live Inside the application process Network-addressable, own process
    Reuse across models Requires rewriting per SDK Write once, every MCP client works
    Discovery at runtime Static — declared at prompt time Dynamic — tools/list returns current capabilities
    Authorisation Application-managed OAuth 2.1 + EMA at the protocol boundary
    Best fit Under 10 tools, one model, one team Cross-team reuse, multi-model, bring-your-own-agent

    The two also compose. Under the hood, when a Claude or GPT client invokes a tool from an MCP server, the model still emits a function call — the MCP client just translates that into a tools/call JSON-RPC request. The Alice Labs rule of thumb: fewer than 10 tools and a single team owns the whole stack, native function calling is fine; anything that needs to be reused across teams, models, or clients belongs behind an MCP server.

    06 / 15Chapter

    Anthropic MCP and the wider ecosystem in 2026

    In short

    Anthropic originated MCP and ships it in Claude Desktop, Claude.ai, and Claude Code. OpenAI added full MCP client support in ChatGPT in late 2025. Google shipped official MCP support and a managed Gemini remote server mid-2026. Microsoft ships MCP in VS Code, Copilot, and the Microsoft Agent Framework (RC 2026-02-19).

    The 2026 ecosystem is genuinely multi-vendor. Every major LLM client now speaks MCP, which is the reason we recommend it as the default integration layer for enterprise tools:

    • Anthropic — originator (2024-11-05). MCP is native in Claude Desktop, Claude.ai, and Claude Code. The Claude Agent SDK is the reference client used to validate SDK compliance against the 2026-07-28 spec.
    • OpenAI — full MCP client support in ChatGPT since late 2025. Custom connectors and the Responses API both accept MCP servers.
    • Google — official MCP support for Google services plus a managed remote server for Gemini shipped mid-2026.
    • Microsoft — VS Code, GitHub Copilot, and the Microsoft Agent Framework (release candidate 2026-02-19) all ship MCP support. Microsoft co-sponsors the AAIF.
    • AWS — Bedrock AgentCore Gateway supports the 2026-07-28 spec as a managed MCP gateway with unified logging and IAM.

    Alice Labs is an Anthropic Partner. Our reference architecture pairs Claude Agent SDK clients with EMA-enabled MCP servers behind an enterprise IdP, but the same servers work unchanged for a customer that later switches to Copilot or Gemini — which is the entire point of standardising on the protocol layer.

    07 / 15Chapter

    MCP servers: registry, discovery, and 2026 counts

    In short

    The official MCP Registry API held 9,652 latest server records as of 2026-05-24. Independent Nerq census counted 17,468 servers across all registries in Q1 2026, and Glama alone indexes close to 20,000 servers by 2026.

    Growth in the server ecosystem is the leading indicator that MCP has crossed the adoption chasm. First-party servers cover Anthropic, Google Drive, Slack, GitHub, Postgres, Filesystem, Puppeteer, and Sentry. Enterprise ISVs have followed: Atlassian, Linear, Snowflake, Salesforce, ServiceNow, Okta, Supabase, Notion, Cloudflare, and Stripe all ship official servers.

    MCP server registry counts, 2026

    Source Count Snapshot date
    Official MCP Registry API 9,652 latest server records 2026-05-24
    Nerq cross-registry census 17,468 servers Q1 2026
    Glama registry ~20,000 servers Mid-2026

    The Alice Labs shortlist we work through with enterprise clients is deliberately small: Atlassian, Linear, Snowflake, Salesforce, ServiceNow, and Okta cover 70% of the day-one integrations. Everything else is a domain-specific server we build against the client's own system of record. Discovery is done via the MCP Registry API's contract, which we mirror inside the corporate boundary as a private registry — see the enterprise patterns section below.

    9,652

    Latest server records in the official MCP Registry API (2026-05-24)

    Model Context Protocol Registry

    08 / 15Chapter

    MCP implementation: build your first stateless server in Python

    In short

    Install the Python SDK with `uv add "mcp[cli]"`, declare tools, resources, and prompts with decorators, and run over Streamable HTTP for remote deployment or stdio for local process integration. The 2026-07-28 spec-compliant SDK is v2.

    The Python SDK is the fastest path to a working server. Install it with either uv or pip:

    uv add "mcp[cli]"
    # or
    pip install "mcp[cli]"

    A minimal stateless server exposing one tool, one resource, and one prompt looks like this:

    from mcp.server.fastmcp import FastMCP
    
    mcp = FastMCP(
        name="customer-lookup",
        version="1.0.0",
        protocol_version="2026-07-28",
    )
    
    @mcp.tool()
    def search_customers(region: str, segment: str) -> list[dict]:
        """Return customers filtered by region and segment."""
        # Real implementation calls your CRM here
        return crm_client.query(region=region, segment=segment)
    
    @mcp.resource("customer://{customer_id}")
    def customer_record(customer_id: str) -> str:
        """Return a single customer record as JSON."""
        return crm_client.get(customer_id).to_json()
    
    @mcp.prompt()
    def account_review(customer_id: str) -> str:
        """Prompt template for a quarterly account review."""
        return f"Draft a quarterly review for customer {customer_id} using the customer://{customer_id} resource."
    
    if __name__ == "__main__":
        # Streamable HTTP for remote deployment
        mcp.run(transport="streamable-http", host="0.0.0.0", port=8080)

    Three primitives, three decorators. The SDK handles JSON-RPC framing, the mandatory Mcp-Method and Mcp-Name headers, and the _meta envelope. Streamable HTTP is the default transport for remote servers; stdio remains for local process integration (Claude Desktop, VS Code local extensions, CI runners).

    The Alice Labs template pins the Python SDK to v2 and runs each server as a stateless FastAPI-style app on Cloud Run with a 60-second cold-start budget and a 1 GiB memory floor. TypeScript, Go, C#, and Rust SDKs shipped 2026-07-28-compliant beta releases in the same window and can be substituted without protocol changes.

    09 / 15Chapter

    MCP authorization 2026: OAuth 2.1, EMA, and enterprise SSO

    In short

    Any internet-accessible MCP server must implement OAuth 2.1 with PKCE (S256) since the 2025-11-25 revision. The 2026-07-28 spec adds RFC 9207 issuer validation and replaces Dynamic Client Registration with Client ID Metadata Documents (CIMD). Enterprise-Managed Authorization (EMA) uses ID-JAG token exchange for zero per-app OAuth.

    Authorization is the layer that decides whether MCP graduates from developer tool to enterprise infrastructure. The 2026 spec is unambiguous about the rules:

    • OAuth 2.1 with PKCE (S256) is mandatory for any server reachable over the internet. No API keys, no basic auth.
    • Resource-server only. The MCP server validates tokens but does not issue them. The authorization server is external — typically the corporate IdP.
    • RFC 9207 issuer validation. Servers must verify the token's issuer matches the expected authorization server URL, closing a class of confused-deputy attacks that surfaced in 2025.
    • Client ID Metadata Documents (CIMD). Replaces Dynamic Client Registration. Clients advertise a metadata URL; servers fetch and cache it. This stops the drive-by client-registration abuse pattern that the OAuth working group flagged in early 2026.

    Enterprise-Managed Authorization (EMA) is the extension that unlocks large-scale rollout. Instead of every user completing a per-app OAuth flow, the corporate IdP mints an Identity Assertion JWT Authorization Grant (ID-JAG) token that the MCP server exchanges for a server-scoped access token. Users get connected servers on first SSO with no per-app consent screen.

    EMA is now stable. Adopters include Anthropic (Claude), VS Code, Okta, Asana, Atlassian, Canva, Figma, Linear, and Supabase. Okta is the first supported IdP; Entra ID and Google Workspace are on the public roadmap.

    For enterprise buyers, the practical implication is that MCP is now provisionable the way SaaS apps are: the security team owns the IdP, the AI platform team publishes the server, and users see the server appear inside Claude or Copilot without ever touching an OAuth consent page.

    9

    Named EMA adopters as of the 2026-07-28 spec

    MCP Enterprise-Managed Authorization announcement

    Ready to accelerate your AI journey?

    Book a free 30-minute consultation with our AI strategists.

    Book Consultation
    10 / 15Chapter

    MCP Apps: server-rendered interactive UI as a first-class primitive

    In short

    MCP Apps was proposed 2025-11-21 as SEP-1865 and shipped as the first official MCP extension on 2026-01-26. Servers ship HTML interfaces that hosts render in sandboxed iframes; UI-initiated actions traverse the same JSON-RPC consent path as direct tool calls.

    MCP Apps addresses a real limitation: some workflows are too rich for a chat transcript. A form with conditional fields, a table with inline actions, or a chart the user needs to interact with all require a UI surface — and MCP Apps gives servers one.

    Servers declare UI templates ahead of time, which lets hosts prefetch them, cache them, and put them through a security review before they ever render. The host loads each template inside a sandboxed iframe with a restricted CSP. Every user action inside the iframe traverses the same JSON-RPC consent and audit path as a direct tool call — so the security and governance model is unified.

    In the 2026-07-28 spec, MCP Apps was folded into the extensions framework alongside Tasks and Roots. Extensions now get reverse-DNS identifiers (com.example.forms/v1), their own repositories, delegated maintainers, and independent versioning. That decoupling means an extension can iterate on a faster cadence than the core spec without destabilising it.

    For enterprise use cases, MCP Apps is what makes it realistic to embed approval workflows, purchase-order builders, or ticket-triage forms directly inside a Claude or Copilot conversation while keeping every action auditable through the same protocol surface as programmatic tool calls.

    11 / 15Chapter

    MCP support across agent frameworks: LangGraph, CrewAI, MAF, Claude Agent SDK

    In short

    CrewAI supports all three transports (stdio, SSE, Streamable HTTP) inline. LangGraph wraps MCP clients in graph nodes and exposes agents via /mcp. The Microsoft Agent Framework RC (2026-02-19) ships bidirectional MCP + A2A. The Claude Agent SDK is the reference client for stateless server testing.

    The reason Alice Labs standardises on MCP for the tool layer is that it survives framework migrations. Every major agent framework in 2026 ships a native client:

    • CrewAI — inline server declarations, all three transports, automatic connection lifecycle. Fastest path from a new server to an agent that uses it.
    • LangGraph — MCP clients wrap inside graph nodes; the LangGraph Agent Server also exposes agents themselves via a /mcp endpoint, turning any graph into an MCP server for other clients. See our LangGraph tutorial for 2026 for the full graph and state model.
    • Microsoft Agent Framework — RC on 2026-02-19 shipped native bidirectional MCP support alongside Google's A2A protocol.
    • Claude Agent SDK — the reference client for 2026-07-28 spec validation. MCP support ships in the Python and TypeScript packages.

    The Alice Labs production stack routes every tool discovery through MCP regardless of which client framework the client team prefers. When a customer swaps from CrewAI to LangGraph or vice versa mid-project — and it happens more often than framework marketing suggests — the tool servers keep working without a change.

    For a broader comparison of the frameworks themselves, see our best AI agent frameworks guide for 2026 or the head-to-head LangGraph vs CrewAI vs AutoGen breakdown.

    12 / 15Chapter

    MCP security: tool poisoning, prompt injection, and enterprise controls

    In short

    2026 disclosures identified up to 200,000 vulnerable MCP instances across IDEs, internal tools, and cloud services. Trend Micro found 492 public servers with zero authentication; Check Point disclosed RCE in Claude Code via poisoned repo config files. OWASP now catalogues MCP Tool Poisoning as a distinct attack class.

    Security is where MCP deployments succeed or fail in the enterprise. The threats are well-catalogued and specific to the protocol:

    • Tool poisoning. An attacker hides adversarial instructions inside tool metadata (descriptions, parameter docs) that the model reads on tools/list but the user never sees. Persistent across every session. OWASP classified this as a distinct attack class in 2026.
    • Unauthenticated servers. Trend Micro's 2026 scan identified 492 public MCP servers with zero authentication in place, exposing internal databases, filesystems, and cloud APIs.
    • Config-file RCE. Check Point disclosed a Claude Code remote-code execution chain triggered by a poisoned .mcp.json in a public repo the user cloned. Any tool that reads repo-scoped config is in scope.
    • Prompt injection. Data returned from a resource can carry instructions that hijack the agent — a general LLM problem, but MCP amplifies it by making arbitrary external data trivially accessible.

    The Alice Labs MCP deployment checklist is short and non-negotiable:

    1. Tool allow-listing at the client level. No client automatically installs every tool a server advertises.
    2. IdP-bound identity per call via EMA. Every action is attributable to a real user.
    3. Signed tool manifests. The server publishes a signed digest of its tool set; the client verifies before invoking.
    4. Static metadata scan on every server upgrade. Automated diff of tool descriptions and parameters against the previous version, flagging anything that looks like an instruction.
    5. Human-in-the-loop on write operations. Any tool that mutates state requires an explicit user confirmation before execution.

    For EU AI Act compliance, MCP's audit trail (every JSON-RPC call is loggable, attributable to an OAuth principal, and time-stamped) satisfies the Article 12 logging obligation. Document your interrupt and allow-list policy in your conformity assessment.

    200,000

    Vulnerable MCP instances identified in 2026 security disclosures

    OWASP — MCP Tool Poisoning

    13 / 15Chapter

    MCP deployment patterns for the enterprise

    In short

    Three enterprise patterns dominate: domain server per system of record with EMA and scoped OAuth resource indicators, gateway aggregation fronting multiple domain servers, and a private registry inside the corporate boundary using the official Registry API contract.

    After 100+ production AI implementations, Alice Labs converges on three deployment patterns for MCP inside the enterprise. Every project uses one, some use two, none of our production deployments deviate from the set.

    Alice Labs enterprise MCP patterns

    Pattern Shape When to use
    1. Domain server One MCP server per system of record (CRM, ITSM, HRIS) with EMA and scoped OAuth resource indicators Day-one integration. Clear ownership, minimal blast radius.
    2. Gateway aggregation AgentCore, WorkOS, or Cloudflare gateway fronting multiple domain servers with unified logging and rate limits 5+ servers, need one policy surface for security and observability
    3. Private registry Registry inside the corporate boundary using the official MCP Registry API contract Multiple agent teams, need controlled discovery of approved servers

    The Alice Labs baseline SLO for every server we ship: p95 tools/list under 200 ms cold; p95 tools/call under 1.2 s excluding downstream API time. Every server ships with an OpenTelemetry exporter and a synthetic tool named build_metadata that returns commit SHA, build timestamp, and dependency digests — the supply-chain audit trail is a JSON-RPC call away.

    For teams weighing whether to build this in-house or bring in external delivery, our build vs buy AI guide lays out the decision framework we run through with clients.

    p95 < 1.2 s

    Alice Labs baseline tools/call SLO (excluding downstream API time) on the 2026-07-28 spec

    Alice Labs internal SLO

    14 / 15Chapter

    Migrating from stateful MCP (2025) to stateless MCP (2026-07-28)

    In short

    Migration is mechanical: remove initialize/initialized, hoist capability negotiation into per-request _meta, delete Mcp-Session-Id, add Mcp-Method and Mcp-Name, move Tasks/Roots/Sampling/Logging to their extension packages, swap Dynamic Client Registration for Client ID Metadata Documents, and add ttlMs/cacheScope to list endpoints.

    The 12-month deprecation window starts on 2026-07-28. Every production server needs to migrate before 2027-07-28. The steps, in the order Alice Labs runs them:

    1. Delete the handshake. Remove initialize and initialized handling. Hoist capability negotiation into per-request _meta.
    2. Delete session state. Remove any code that reads or writes Mcp-Session-Id. Purge session stores.
    3. Enforce new headers. Add Mcp-Method validation on every request and Mcp-Name validation on tools/call, resources/read, and prompts/get.
    4. Migrate extensions. Move Tasks, Roots, Sampling, and Logging consumers to their io.modelcontextprotocol/* packages.
    5. Swap client registration. Replace Dynamic Client Registration with Client ID Metadata Documents. Publish a metadata URL, update client configs.
    6. Add cache directives. Emit ttlMs and cacheScope from every list endpoint. Default to user scope unless you have proven the response is principal-independent.
    7. Add issuer validation. Enforce RFC 9207 in the OAuth resource-server layer.
    8. Deploy stateless. Redeploy behind a round-robin load balancer. Delete any sticky-session config. Measure p95 before and after.

    In the release-candidate window Alice Labs migrated four servers in an average of two engineering days each. The bulk of that time was refactoring the OAuth layer for RFC 9207 and CIMD — the header changes and handshake removal took hours, not days.

    15 / 15Chapter

    MCP roadmap after 2026-07-28: what to build against next

    In short

    AAIF TSC governs post-2026-07-28 evolution with vendor-neutral SEPs. Priority themes: agent-to-agent (A2A) alignment, permissioned discovery for private registries, richer async Tasks semantics, and a first-class observability schema. Next spec cadence expected quarterly.

    With MCP now living inside the AAIF, the evolution model is closer to the way CNCF or the IETF runs specs: a Technical Steering Committee owns the roadmap, and every substantive change is a Specification Enhancement Proposal (SEP) that ships against a named release candidate.

    Public priority themes for the next 12 months:

    • Agent-to-Agent (A2A) alignment. Bidirectional message shapes so an MCP server can also act as a peer to other agents, closing the gap between MCP and Google's A2A protocol.
    • Permissioned discovery. Private registries need a spec-blessed way to authorise discovery per user, replacing the ad-hoc approaches vendors have shipped so far.
    • Richer async Tasks semantics. Long-running server-initiated work (imagine a batch report that takes hours) needs first-class progress and cancellation.
    • Observability schema. A shared shape for tracing, metrics, and audit logs so gateways and hosts can aggregate across servers without bespoke integration.
    • Deprecation. Roots, Sampling, and Logging leave the core on 2027-07-28. Clients using them should migrate now to the extension packages.

    The pace to expect is quarterly release-candidate windows with SDK maintainers validating against a stable target. For teams building on MCP today, that cadence is the strongest signal that the protocol has matured from experimental to durable — it is now safe to build a five-year integration strategy around it.

    About the Authors & Reviewers

    Published
    Written by
    Eric Lundberg - Co-Founder, Alice Labs at Alice Labs
    Eric Lundberg

    Co-Founder, Alice Labs

    Co-Founder at Alice Labs. Builds AI automation, agent workflows and integration systems that hold up in real business operations.

    • AI automation & agent systems lead
    • Workflow design across 100+ deployments
    • Specialist in RAG, integrations & APIs
    Reviewed by
    Linus Ingemarsson - Co-Founder, Alice Labs at Alice Labs
    Linus Ingemarsson

    Co-Founder, Alice Labs

    Co-Founder at Alice Labs. Author of 7 research reports on AI adoption, governance and labor markets cited across EU, OECD and US benchmarks.

    • 8+ years in AI strategy & implementation
    • Top-5 AI Speaker, Sweden (Mindley 2025)
    • 100+ enterprise AI engagements
    Published
    Reviewed for technical accuracy, methodology and source integrity.·All claims trace to public sources cited in-line.

    Frequently Asked Questions

    What is the Model Context Protocol (MCP)?

    The Model Context Protocol is an open standard, originated by Anthropic in November 2024 and donated to the Linux Foundation Agentic AI Foundation in December 2025, that lets any LLM client discover and invoke tools, resources, and prompts exposed by any compliant server over JSON-RPC. Alice Labs treats MCP as the default integration layer for enterprise AI agents because it decouples the tool implementation from the model or agent framework in front of it.

    What is the MCP 2026-07-28 specification?

    It is the third major MCP revision, published on July 28, 2026, that rebuilds the protocol core as stateless request/response. It removes the initialize handshake and Mcp-Session-Id, adds Mcp-Method and Mcp-Name headers, ships cache scoping (ttlMs and cacheScope) on list endpoints, formalises Multi Round-Trip Requests, hardens OAuth 2.1 authorization, and moves Tasks and MCP Apps into a versioned extensions framework.

    Why did MCP become stateless in the 2026 spec?

    Sticky sessions blocked horizontal scaling. Operators running MCP behind Kubernetes, Cloud Run, and Lambda had to maintain shared session stores or route by connection ID. Removing the session lets any request land on any instance behind a round-robin load balancer. Alice Labs migrated four enterprise MCP servers to Cloud Run in the RC window and observed p95 latency drops of 30–45% purely from removing session pinning.

    What is the difference between MCP and function calling?

    Function calling is a model behaviour: the LLM emits a structured JSON tool_call requesting an action. MCP is a protocol: it standardises how that requested tool is discovered, authorised, executed, and returned across processes and vendors. They compose — an MCP server exposes tools, and the model invokes them via function calling under the hood. Native function calling is fine for fewer than 10 tools inside one app; MCP wins whenever tools must be reused across models, teams, or clients.

    How many MCP servers exist in 2026?

    The official MCP Registry API listed 9,652 latest server records as of May 24, 2026. Independent aggregators are higher: Nerq indexed 17,468 servers across registries in Q1 2026, and Glama alone holds close to 20,000. Growth is driven by first-party servers from Anthropic, Google, Microsoft, GitHub, Slack, Atlassian, Linear, and Supabase, plus custom enterprise servers — Alice Labs has shipped MCP servers for CRM, ITSM, and data-warehouse integration in production.

    Which frameworks support MCP natively?

    Every major agent framework in 2026 supports MCP natively. CrewAI supports all three transports and inline server declarations. LangGraph wraps MCP clients inside graph nodes and exposes agents via /mcp. Microsoft Agent Framework (RC February 2026) ships bidirectional MCP plus A2A. The Claude Agent SDK is the reference client. This is exactly why Alice Labs standardises on MCP: the tool surface survives framework migrations.

    How do I build an MCP server in Python?

    Install the SDK with `uv add "mcp[cli]"`, instantiate a FastMCP server, and decorate functions with @mcp.tool(), @mcp.resource(), and @mcp.prompt(). Run it over stdio for local use or Streamable HTTP for remote deployment. Alice Labs ships every enterprise server as a stateless FastAPI-style app on Cloud Run and pins the SDK to v2, the 2026-07-28 spec-compliant release.

    What authentication does MCP require in 2026?

    Any internet-accessible MCP server must implement OAuth 2.1 with PKCE (S256) since the 2025-11-25 revision. The 2026-07-28 spec adds RFC 9207 issuer validation and replaces Dynamic Client Registration with Client ID Metadata Documents. Servers act only as OAuth 2.1 resource servers — the authorization server is external. The Enterprise-Managed Authorization extension eliminates per-app consent by provisioning access through the corporate IdP.

    What is Enterprise-Managed Authorization (EMA) in MCP?

    EMA is a now-stable MCP extension that lets an organisation's identity provider provision MCP server access centrally, so users get connected servers on first SSO with no per-app OAuth flow. It uses Identity Assertion JWT Authorization Grant (ID-JAG) tokens exchanged for server-scoped tokens. Okta is the first supported IdP; Anthropic, VS Code, Asana, Atlassian, Canva, Figma, Linear, and Supabase have shipped support.

    What are MCP Apps?

    MCP Apps is the first official MCP extension, proposed as SEP-1865 on 2025-11-21 and shipped on 2026-01-26. Servers ship HTML interfaces that hosts render in sandboxed iframes; tools declare UI templates ahead of time so hosts can prefetch, cache, and security-review them. UI-initiated actions traverse the same JSON-RPC consent and audit path as direct tool calls. The 2026-07-28 spec folded Apps into the extensions framework with reverse-DNS identifiers and independent versioning.

    What is ttlMs and cacheScope in MCP?

    SEP-2549 added ttlMs and cacheScope fields to tools/list, prompts/list, resources/list, and resources/read responses. ttlMs is the client-side cache lifetime in milliseconds; cacheScope is either 'public' (shareable across users) or 'user' (pinned to the authenticated principal). Semantics mirror HTTP Cache-Control. The change eliminates long-lived SSE streams that clients previously kept open just to watch for tool-list invalidations.

    Do I need OAuth for a local MCP server?

    No. OAuth 2.1 is mandatory only for internet-accessible servers. Servers that run over stdio inside a local process (Claude Desktop extensions, local development, CI runners) do not need OAuth because they inherit the security boundary of the host process. Any server reachable over HTTP does need OAuth, without exception.

    What is MCP tool poisoning?

    Tool poisoning is an attack where an adversary hides instructions inside tool metadata — descriptions, parameter documentation, or return-value hints — that the model reads on tools/list but the user never sees. The instructions persist across every session that uses the tool. OWASP catalogued it as a distinct attack class in 2026. Mitigations: signed tool manifests, static metadata diffing on every server upgrade, and human-in-the-loop confirmation on any write operation.

    Is MCP secure for enterprise use?

    MCP is secure when deployed correctly: OAuth 2.1 with PKCE and RFC 9207 issuer validation, EMA for user provisioning, tool allow-listing, signed tool manifests, static metadata scans on upgrade, and human-in-the-loop on write operations. Alice Labs uses this checklist on every production deployment. The 2026 disclosures identifying up to 200,000 vulnerable instances were almost entirely servers that skipped OAuth entirely — a preventable failure, not a protocol flaw.

    What is a stateless MCP server?

    A stateless MCP server processes each request independently, with no per-connection session state. Protocol version, client info, and capabilities are self-contained in the _meta field of every request. Statelessness is mandatory in the 2026-07-28 spec and lets servers deploy behind plain round-robin load balancers, Cloud Run, AWS Lambda, or edge runtimes without sticky-session pinning.

    How does MCP compare to Google A2A?

    MCP standardises how a client talks to tools; A2A (Agent-to-Agent) standardises how agents talk to each other. They are complementary, not competing. The Microsoft Agent Framework RC (2026-02-19) ships both natively. AAIF's public roadmap lists A2A alignment as a priority theme, so expect MCP to grow bidirectional peer semantics that overlap with A2A over the next 12 months.

    What is Streamable HTTP in MCP?

    Streamable HTTP is the default remote transport for MCP servers, replacing plain SSE. It uses standard HTTP requests with optional server-sent events for streaming responses, so it works with any HTTP/2 load balancer or CDN edge. Alice Labs recommends Streamable HTTP for every new remote server. SSE remains legal but is a downgrade path and should not be adopted for greenfield servers.

    Can I use MCP with LangGraph?

    Yes. LangGraph ships a first-class MCP client that wraps as a graph node, so any MCP server tool becomes callable from any LangGraph agent. The LangGraph Agent Server also exposes agents themselves via a /mcp endpoint, letting a LangGraph agent act as an MCP server for other clients. See our LangGraph tutorial for the graph and state model, and pair it with an MCP server per system of record.

    When does the 2025 stateful MCP spec get deprecated?

    The 2026-07-28 spec establishes a formal 12-month minimum deprecation window, so 2025 spec support must remain in SDKs and hosts until at least 2027-07-28. Alice Labs recommends migrating production servers within six months of 2026-07-28 to leave a buffer for downstream client updates and to capture the p95 latency wins from statelessness sooner rather than later.

    What is a Client ID Metadata Document (CIMD)?

    CIMD replaces OAuth 2.1 Dynamic Client Registration in the 2026-07-28 MCP spec. Instead of registering a client on the fly, the client publishes a metadata document at a stable URL; servers fetch and cache it. This closes the drive-by client-registration abuse pattern the OAuth working group flagged in early 2026 and gives IdPs a stable identifier to authorise or revoke.

    Previous in AI Agents

    A2A Protocol Guide 2026: Cross-Cloud Agent Communication

    Next in AI Agents

    Google ADK 2.0 Guide 2026: Agent Development Kit Explained

    Further reading

    Related services

    Related reading

    comparison

    Best AI Agent Frameworks 2026: The Enterprise Comparison

    Compare LangGraph, CrewAI, AutoGen, and six other frameworks on state management, multi-agent support, and enterprise production fit.

    howto

    LangGraph Tutorial 2026: Build Stateful AI Agents for Enterprise

    Practitioner guide to designing, building, and deploying stateful LangGraph agents that consume MCP servers as their tool layer.

    comparison

    LangGraph vs CrewAI vs AutoGen

    Head-to-head of the three most-used open-source agent frameworks — all of which now ship native MCP client support.

    deepdive

    Multi-Agent Systems Explained: Patterns, Trade-offs, and Enterprise Use Cases

    Supervisor, hierarchical, and collaborative patterns — and how MCP servers plug into each as the shared tool surface.

    deepdive

    EU AI Act Compliance Checklist for 2026

    How MCP's audit trail and OAuth boundary satisfy Article 12 logging and Article 14 human-oversight obligations.

    deepdive

    CrewAI Guide 2026

    The role-based multi-agent framework with the fastest path from a new MCP server to a working agent that uses it.

    strategy

    Build vs Buy AI: The Enterprise Decision Framework

    The Alice Labs framework for deciding when to build custom MCP servers in-house vs consume vendor servers.

    Sources

    1. MCP joins the Linux Foundation Agentic AI FoundationModel Context Protocol · Linux Foundation AAIF“MCP was donated to the Linux Foundation AAIF on 2025-12-09; ecosystem reported 97M+ monthly SDK downloads and 10,000+ active public servers by end of 2025.”(accessed 2026-08-02)
    2. MCP 2026-07-28 specification changelogModel Context Protocol · AAIF TSC“Third major MCP revision: stateless core, removed initialize/initialized handshake and Mcp-Session-Id, added Mcp-Method and Mcp-Name headers, MRTR, ttlMs/cacheScope, and formal 12-month deprecation window.”(accessed 2026-08-02)
    3. MCP just went stateless — what the 2026 spec changes about scaling on App ServiceMicrosoft Tech Community · Microsoft“Statelessness was the single most-requested change from teams running MCP in production; servers now deploy behind plain round-robin load balancers with no sticky sessions.”(accessed 2026-08-02)
    4. MCP vs function callingDescope · Descope“Function calling is a model behaviour; MCP is the protocol that standardises how that call is discovered, executed, and returned across processes and vendors — they compose rather than compete.”(accessed 2026-08-02)
    5. Everything your team needs to know about MCP in 2026WorkOS · WorkOS“Multi-vendor client coverage in 2026: Anthropic (Claude, Claude Code), OpenAI (ChatGPT), Google (Gemini), Microsoft (VS Code, Copilot, Microsoft Agent Framework RC 2026-02-19).”(accessed 2026-08-02)
    6. State of MCP servers 2026Tooldirectory.ai · Tooldirectory.ai / Nerq“Official MCP Registry API held 9,652 latest server records as of 2026-05-24; Nerq census counted 17,468 servers across all registries in Q1 2026; Glama indexes close to 20,000.”(accessed 2026-08-02)
    7. MCP Python SDK official documentationModel Context Protocol Python SDK · AAIF“Install with `uv add "mcp[cli]"` or `pip install "mcp[cli]"`; three primitives (Tools, Resources, Prompts); Streamable HTTP default remote transport; Python/TypeScript/Go/C#/Rust SDKs shipped 2026-07-28 beta releases.”(accessed 2026-08-02)
    8. MCP Enterprise-Managed AuthorizationModel Context Protocol · AAIF“EMA uses ID-JAG token exchange so users get org-provisioned servers on first SSO with no per-app OAuth; adopters include Anthropic, VS Code, Okta, Asana, Atlassian, Canva, Figma, Linear, Supabase.”(accessed 2026-08-02)
    9. MCP Apps: interactive UIs become an official part of MCPRITS Shanghai NYU · NYU Shanghai“MCP Apps proposed 2025-11-21 as SEP-1865, shipped as first official MCP extension on 2026-01-26; UI-initiated actions traverse the same JSON-RPC consent/audit path as direct tool calls.”(accessed 2026-08-02)
    10. MCP AI frameworks: LangChain, LangGraph, CrewAIChatforest · Chatforest“CrewAI supports all three transports with inline server declarations; LangGraph wraps MCP clients inside graph nodes; LangGraph Agent Server exposes agents via /mcp; Microsoft Agent Framework RC (2026-02-19) shipped bidirectional MCP + A2A.”(accessed 2026-08-02)
    11. MCP Tool PoisoningOWASP · OWASP“OWASP catalogued MCP Tool Poisoning as a distinct attack class in 2026; 2026 disclosures identified up to 200,000 vulnerable MCP instances, with Trend Micro finding 492 public servers with zero authentication.”(accessed 2026-08-02)
    12. How AgentCore Gateway supports the MCP 2026-07-28 specAWS Machine Learning Blog · AWS“Bedrock AgentCore Gateway supports the 2026-07-28 spec as a managed MCP gateway with unified logging, IAM, and rate limits across multiple domain servers.”(accessed 2026-08-02)
    13. MCP 2026 spec changesStacktree · Stacktree“Migration checklist from stateful (2025) to stateless (2026-07-28) MCP: remove handshake, delete Mcp-Session-Id, add Mcp-Method/Mcp-Name, move Tasks/Roots/Sampling/Logging to extensions, swap DCR for CIMD, add ttlMs/cacheScope.”(accessed 2026-08-02)
    14. Linux Foundation Agentic AI Foundation 2026Baeseokjae · Linux Foundation AAIF community“AAIF TSC governs post-2026-07-28 evolution with vendor-neutral SEP process; priority themes include A2A alignment, permissioned discovery, richer async Tasks, and first-class observability schema.”(accessed 2026-08-02)
    15. Enterprise AI implementation dataAlice Labs · Alice Labs“Alice Labs has shipped 100+ production AI implementations since 2023, with MCP as the default integration layer since 2024; p95 tools/call SLO of 1.2 s excluding downstream API time on the 2026-07-28 spec.”(accessed 2026-08-02)

    Next scheduled review:

    Ready to accelerate your AI journey?

    Book a free 30-minute consultation with our AI strategists.

    Book Consultation
    Share

    Get in Touch!

    The lab usually responds within 24 hours.

    Need help with AI?Get in touch