The Model Context Protocol roadmap for 2026 was published on 9 March 2026 and the companion roadmap page on modelcontextprotocol.io is dated 5 March 2026. Both name the same four priorities: transport evolution and scalability, agent communication, governance maturation, and enterprise readiness. PDF4.dev runs an MCP server with 14 tools, 4 resources, and 3 prompts, so the roadmap directly shapes how we build. This article walks through what the roadmap actually says, what it means for anyone shipping an MCP server today, and the concrete patterns we already use.
What the 2026 MCP roadmap actually says
The roadmap is a priority document, not a release calendar. The maintainers explicitly moved away from "release-oriented" planning toward priority areas, citing "uncertainty inherent in a fast-growing project." Four areas get expedited SEP review and the highest chance of acceptance. Everything outside these areas faces longer reviews and a higher justification bar.
The four areas are:
| Pillar | What it solves | Working group |
|---|---|---|
| Transport evolution and scalability | Streamable HTTP gaps around horizontal scaling, statelessness, and discovery | Transports WG, Server Card WG |
| Agent communication | Lifecycle gaps in the Tasks primitive (SEP-1686): retry semantics, expiry policies | Agents WG |
| Governance maturation | Bottlenecks in SEP review and a clear path to leadership | Governance WG |
| Enterprise readiness | Audit trails, SSO-integrated auth, gateway behavior, configuration portability | Enterprise WG (expected to form) |
The roadmap is dated 5 March 2026 ("Last updated: 2026-03-05") and the companion blog post landed four days later. The maintainers are clear about scope: "These ideas are not commitments. We may solve these challenges differently than described."
Transport scalability: making Streamable HTTP stateless
Streamable HTTP gave MCP a production-ready transport in 2025, but running it at scale exposed three concrete gaps. Sessions are stateful, which conflicts with load balancers and horizontal scaling. There is no standard way to migrate a session across server restarts. And capability discovery requires a live connection, which makes registries and crawlers awkward.
The Transports WG owns this work as a series of SEPs covering the wire format, the session model, and a resumption protocol, with conformance guidance for SDK authors. The Server Card WG owns a separate but related deliverable: a standard for exposing structured server metadata via a .well-known URL so clients, browsers, and registries can read a server's capabilities without connecting to it. This is the same shape as RFC 9727 API Catalog and complements it rather than replacing it.
What the roadmap does NOT do: introduce a new official transport. The wording is direct: "We will not be introducing additional official transports this cycle. Keeping the set small protects ecosystem compatibility; the community should experiment via custom transports." If you have been waiting for an official WebTransport or QUIC binding, the WG has not committed a date.
For server builders today, this means two things. First, build for stateless front-end behavior even if your storage is stateful. The session-resumption SEP will assume you can lose a connection and pick up by ID. Second, start publishing a Server Card at a well-known URL now, even if the schema is still evolving. The Cloudflare Agent Readiness pattern (a /.well-known/mcp/server-card.json route alongside an api-catalog and an agent-skills index) is already in use across production deployments and lines up with where the spec is going.
Agent communication: closing the Tasks primitive lifecycle
The Tasks primitive shipped under SEP-1686 in 2025 and gave agents a reliable call-now / fetch-later pattern for long-running operations. Production deployments surfaced two lifecycle gaps the Agents WG is now closing.
Retry semantics: when a task fails transiently, the spec does not say whether the client retries, the server retries, or the orchestration layer retries. This matters because retries on a non-idempotent task can double-charge a customer or duplicate a side effect. The WG is expected to define explicit retry boundaries.
Expiry policies: results currently sit somewhere with no defined retention. Clients have no protocol-level way to learn that a result has expired, which leaves them either polling forever or guessing. The WG output here will tell servers how long to retain results and how to surface expiry to clients.
The Agents WG should also collect operational issues from production Tasks deployments. The roadmap is honest that this list will grow.
What is NOT in this pillar, despite frequent confusion, is the Triggers and Events story. Server-initiated callbacks (webhooks, push notifications) sit under "On the horizon" in the roadmap, not under Agent Communication. The text reads: "clients currently learn about server-side state changes by polling or holding an SSE connection open. A standardized callback mechanism (webhooks or similar) would let servers proactively notify clients when new data is available, with defined ordering guarantees across all transports." There is community interest, but the roadmap does not put a working group on it for this cycle. If you need event-driven behavior today, you build it as a custom extension and accept that the eventual standard may break it.
The intersection with Google's A2A protocol is real but narrow. A2A handles agent-to-agent message passing across organizational boundaries; MCP Tasks handle a single agent calling a tool that runs longer than a request. They compose, they do not replace each other.
Governance maturation: working groups, not heroics
MCP graduated to the Linux Foundation under the Agentic AI Foundation in December 2025, with Anthropic, OpenAI, and Block as co-founders. SEP-1302 formalized Working Groups and Interest Groups. SEP-2085 established succession and amendment procedures. The 2026 roadmap targets the next obvious bottleneck: every SEP currently requires full Core Maintainer review, regardless of domain.
The Governance WG should deliver three artifacts:
- A Contributor Ladder SEP defining the path from community participant to WG contributor, WG facilitator, lead maintainer, and core maintainer, with explicit nomination and review criteria at each step
- A delegation model letting WGs with a proven track record accept SEPs and publish extension updates within their domain without a full core-maintainer review
- A charter template every WG and IG maintains publicly: scope, active deliverables, success criteria, and retirement conditions, reviewed quarterly
On 8 April 2026 the maintainer team announced that Den Delimarsky was promoted from Core Maintainer to Lead Maintainer, joining David Soria Parra. Clare Liguori, a Senior Principal Engineer at AWS who works on Kiro and the Strands Agents SDK, joined the Core Maintainer group at the same time. Den co-authored the MCP authorization spec; Clare brings agent-runtime production experience that has shaped the unsolicited-tasks discussion. This expansion is the practical proof that governance is moving from a small handful of people to a tiered structure.
For server builders, the practical effect is simple. If your work touches a priority area (transport, agents, enterprise, governance), discuss your SEP in the relevant WG before opening a PR and bring the WG's backing with you. SEPs with WG support move fastest. SEPs outside the priorities are not rejected, but the review timeline is longer and the justification bar is higher.
Enterprise readiness: audit, SSO, gateways, portability
This is the least-defined of the four pillars. The roadmap says so directly: there is no Enterprise WG yet. The maintainers are asking contributors with enterprise infrastructure experience to help shape the work. Four problem areas are named, all of them familiar to anyone who has tried to ship MCP behind a corporate IT review:
- Audit trails and observability: end-to-end visibility into what a client requested and what a server did, in a form that feeds existing logging and compliance pipelines
- Enterprise-managed auth: paved paths away from static client secrets, toward SSO-integrated flows like Cross-App Access (xaa.dev), so IT manages MCP access the same way it manages every other corporate tool
- Gateway and proxy patterns: well-defined behavior when a client routes through an intermediary, including authorization propagation, session semantics, and what the gateway is allowed to see
- Configuration portability: configure a server once, have that configuration work across different MCP clients
The roadmap notes that "much of the output will likely land as extensions rather than core specification changes." If you build for enterprise customers, expect to ship audit and SSO behavior as extensions referenced in your Server Card, not as patches to the core spec. SEP-1932 (DPoP) and SEP-1933 (Workload Identity Federation) are already in flight under the security-and-authorization on-the-horizon area and feed into this story directly.
What MCP server builders should do today
The roadmap is a forward-looking document. The patterns that align with it already exist in the spec and the SDK. Here is what to start and stop doing in 2026, with no waiting required.
Start today:
- Register every tool with an
outputSchemaand returnstructuredContent. Modern clients parse it directly without aJSON.parseof the text block. - Use structured error envelopes with a stable shape:
error.type,error.code,error.message. This matches what the REST API community converged on and avoids forcing the agent to scrape natural-language errors. - Expose resources and prompts, not just tools. The spec has had three primitives since the start, but most servers only ship tools. Resources let the agent pull in your docs without a tool call. Prompts give the agent a starting point that you, the server author, control.
- Carry auth through
AsyncLocalStorage(or your runtime's equivalent context) instead of threading the bearer token through every handler signature. This is the pattern the Vercelmcp-handleruses and it keeps tool code clean. - Publish a Server Card at
/.well-known/mcp/server-card.jsonwith your transport endpoint, capabilities, and auth method. The Server Card WG schema will evolve, but starting now means clients and registries can already discover your server. - Add MCP annotations to every tool:
readOnlyHint,destructiveHint,idempotentHint,openWorldHint. Clients use these to decide what to confirm with the user before invoking.
Stop today:
- Stop putting session IDs in URLs. The 2025 retrospective from Pento called out that session IDs in URLs violated security standards, and the new transport SEPs assume you do not.
- Stop assuming a single server instance. The transport work explicitly targets stateless horizontal scaling. If your server holds in-process state today, plan the migration to external storage now.
- Stop relying on "no auth at all" as the default. The Pento retrospective noted that "minimal guidance on authentication, and many implementations default to no auth at all." The 2026 enterprise pillar makes that posture untenable for any non-toy server.
- Stop scraping tool output as plain text. If a client needs a structured field, give it
structuredContentand let the client parse the schema. - Stop waiting for an official second transport. The roadmap says it is not coming this cycle.
Here is the canonical shape of a tool registration with outputSchema and a structured-result helper, the pattern we use in our own handler:
import { z } from "zod";
server.registerTool(
"list_templates",
{
description: "List the templates available to the authenticated user.",
inputSchema: {
api_key: z.string().optional(),
},
outputSchema: {
templates: z.array(templateSummarySchema),
},
annotations: {
readOnlyHint: true,
destructiveHint: false,
idempotentHint: true,
},
},
async ({ api_key }) => {
const auth = await resolveAuth(api_key);
if (!auth) return authError();
const templates = listTemplates(auth.organizationId);
return structuredResult({ templates });
}
);Two details matter. First, the outputSchema lives next to the tool definition, so the client receives a typed structuredContent payload instead of a JSON-encoded text block it has to parse. Second, authError() returns a structured envelope (error.type, error.code, error.message) with isError: true, matching the shape the REST API uses. Sharing helpers across success and error paths keeps tool code DRY and makes the error contract auditable.
How PDF4.dev's MCP server already aligns
We started building our MCP server in late 2025 and the 2026 roadmap mostly confirmed the choices we made. The current state, as of this article:
- 14 tools, all registered via
server.registerTool(not the deprecatedserver.tool) so each one carries anoutputSchema. The shared Zod shapes (templateSummarySchema,templateFullShape,componentFullSchema,logEntrySchema,statsSchema) keep structured content consistent across tools. - Every tool returns through
structuredResult(), which wraps the data in the MCPstructuredContentenvelope. The single exception ispreview_template, which returns an MCP image content (binary PNG) instead of JSON. - Every tool carries MCP annotations (
readOnlyHint,destructiveHint,idempotentHint,openWorldHint), so a host can warn the user appropriately before any write or render call. - Errors are structured.
authError(),permissionError(),notFoundError(),invalidRequestError(), andapiError()all return{error: {type, code, message}}withisError: true, matching the REST API shape and keeping the contract identical whether the agent calls us through MCP or the REST API. - Auth is carried through
AsyncLocalStoragefrom the request bearer token to the tool handler. TheAuthorization: Bearerheader is the recommended path; anapi_keytool parameter is a fallback. - Four resources are exposed under
pdf4dev://docs/...(quickstart, Handlebars helpers, format presets, components), so an agent can read the docs through the same protocol it uses for tools. - Three prompts are exposed (
generate-invoice,create-template-from-description,debug-render-error), each with a Zod argsSchema and a step-by-step user message that names the exact tool calls the agent should make. - We publish a Server Card at
/.well-known/mcp/server-card.json, an Agent Skills index at/.well-known/agent-skills/index.json(auto-generated from the same single-source-of-truth used byllms.txtand the docs site), and an API Catalog at/.well-known/api-catalog. - The transport is Vercel's
mcp-handlerStreamable HTTP, deployed on Railway with stateless front-end behavior. SSE is disabled.
The roadmap items where we have follow-up work: the Tasks primitive, audit trails for enterprise, and a tighter SSO story. We treat these as scheduled rather than urgent because the spec text is still moving.
What to watch next
The next inflection points are concrete and dated where we can see them:
- The Transports WG SEPs on stateless session handling and resumption. No date committed; the WG has not posted one publicly.
- The Server Card WG schema. The current
/.well-known/mcp/server-card.jsonshape will harden into a spec extension. - The Contributor Ladder SEP from the Governance WG. This will name the rungs and define how the next round of maintainers gets nominated.
- The Enterprise WG forming. The roadmap explicitly invites contributors with enterprise infrastructure experience to help charter it.
- The next spec revision after
2025-11-25. The Transports WG and Agents WG outputs will likely land together rather than separately.
If you maintain an MCP server, the practical advice is short: align with the four priority areas, follow the patterns above, and watch the WG channels rather than the release notes. The 2026 roadmap is explicit that priority-area SEPs move fastest and that everything else takes longer. Build accordingly.
Sources:
- The 2026 MCP Roadmap (blog.modelcontextprotocol.io, 9 March 2026)
- Roadmap (modelcontextprotocol.io/development/roadmap, last updated 5 March 2026)
- Maintainer team expansion (blog.modelcontextprotocol.io, 8 April 2026)
- MCP specification (modelcontextprotocol.io/specification, revision 2025-11-25)
- A year of MCP, 2025 review (Pento)
Start generating PDFs
Build PDF templates with a visual editor. Render them via API from any language in ~300ms.



