MCP Roadmap 2026 Stateless Tasks Sandbox PoC
Goal
Build a small local sandbox that demonstrates the MCP roadmap ideas developers need to reason about before the next protocol cycle:
- Per-request protocol metadata instead of relying on a prior initialization session.
- A
server/discoverstyle RPC for supported versions and capabilities. - A
.well-knownserver-card endpoint for HTTP discovery. - A task-style
tools/callresponse that returns a task handle first, then supportstasks/getandtasks/result. - Simulated horizontal scaling by creating a task on worker A and polling it from worker B through a shared task store.
This is not a conformance test and does not claim to implement the final MCP draft. It is a local PoC shaped by the official roadmap, SEP-2575, SEP-1686, SEP-2243, and the 2025-11-25 tasks documentation.
No production credentials, model API keys, paid APIs, or external services were used.
Sources Checked
https://modelcontextprotocol.io/development/roadmaphttps://blog.modelcontextprotocol.io/posts/2026-mcp-roadmap/https://modelcontextprotocol.io/seps/2575-stateless-mcphttps://github.com/modelcontextprotocol/modelcontextprotocol/issues/1686https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/taskshttps://modelcontextprotocol.io/specification/2025-06-18/basic/transportshttps://modelcontextprotocol.io/seps/2243-http-standardizationhttps://blog.modelcontextprotocol.io/posts/2025-12-19-mcp-transport-future/
Commands Run
mkdir -p /tmp/effloow-mcp-roadmap-poc
node --version
uname -a
node /tmp/effloow-mcp-roadmap-poc/server.mjs
Environment output:
v25.9.0
Darwin Kim-Jangwook---Private-Mac-Book-Pro.local 24.6.0 Darwin Kernel Version 24.6.0: Mon Jul 14 11:30:34 PDT 2025; root:xnu-11417.140.69~1/RELEASE_ARM64_T8103 arm64
The sandbox server file is temporary-only at /tmp/effloow-mcp-roadmap-poc/server.mjs. It uses Node's built-in http, crypto, and fs/promises modules. It does not install packages.
What The Sandbox Implemented
GET /.well-known/mcp/server-card.jsonPOST /mcpJSON-RPC handler- Header/body version check:
MCP-Protocol-Versionparams._meta["io.modelcontextprotocol/protocolVersion"]
- Header/body method check:
Mcp-Methodbody.method
server/discovertools/list- task-augmented
tools/call tasks/gettasks/result
The task store is a JSON file at /tmp/effloow-mcp-roadmap-poc/tasks.json, which lets the same process simulate two independently routed workers. Requests sent with X-Worker: A and X-Worker: B prove that task status is not tied to one worker-local in-memory session.
Relevant Output
{
"discover": {
"jsonrpc": "2.0",
"id": 1,
"result": {
"supportedVersions": [
"2026-03-roadmap-poc"
],
"capabilities": {
"tools": {},
"tasks": {
"requests": {
"tools/call": {}
}
}
},
"serverInfo": {
"name": "effloow-mcp-roadmap-poc",
"version": "0.1.0"
},
"instructions": "Demonstrates stateless discovery and task polling for article evidence.",
"servedBy": "A"
}
},
"tools": {
"jsonrpc": "2.0",
"id": 2,
"result": {
"tools": [
{
"name": "summarize_log",
"description": "Pretend long-running log summarization task.",
"inputSchema": {
"type": "object",
"properties": {
"lines": {
"type": "array"
}
}
}
}
],
"servedBy": "B"
}
},
"call": {
"jsonrpc": "2.0",
"id": 3,
"result": {
"task": {
"taskId": "c6579dd0-55b2-4f6e-8e94-b868bc4355fa",
"status": "working",
"createdAt": "2026-05-17T00:04:55.457Z",
"lastUpdatedAt": "2026-05-17T00:04:55.457Z",
"ttl": 30000,
"pollInterval": 100
},
"servedBy": "A"
}
},
"status": {
"jsonrpc": "2.0",
"id": 4,
"result": {
"taskId": "c6579dd0-55b2-4f6e-8e94-b868bc4355fa",
"status": "completed",
"createdAt": "2026-05-17T00:04:55.457Z",
"lastUpdatedAt": "2026-05-17T00:04:55.686Z",
"ttl": 30000,
"pollInterval": 100,
"createdBy": "A",
"servedBy": "B"
}
},
"result": {
"jsonrpc": "2.0",
"id": 5,
"result": {
"content": [
{
"type": "text",
"text": "summarized 3 log lines"
}
],
"isError": false,
"_meta": {
"io.modelcontextprotocol/related-task": {
"taskId": "c6579dd0-55b2-4f6e-8e94-b868bc4355fa"
}
},
"servedBy": "A"
}
},
"card": {
"name": "effloow-mcp-roadmap-poc",
"description": "Local server card used for Effloow Lab roadmap article evidence.",
"protocolVersions": [
"2026-03-roadmap-poc"
],
"transports": [
{
"type": "streamable-http",
"endpoint": "http://127.0.0.1:48765/mcp"
}
],
"capabilities": {
"tools": [
"summarize_log"
],
"tasks": true
}
}
}
What Worked
- The PoC accepted
server/discoverwithout any prior initialization handshake. - Every JSON-RPC request carried protocol version, client identity, and client capabilities in
_meta. - The HTTP
MCP-Protocol-Versionheader had to match the_metaprotocol version. - The HTTP
Mcp-Methodheader had to match the JSON-RPC method, mirroring the routing idea in SEP-2243. - The task was created by simulated worker A and polled to
completedby simulated worker B. - The final result referenced the task through
io.modelcontextprotocol/related-task. - The server card was retrievable through a
.well-knownpath without opening a JSON-RPC connection.
What Failed Or Was Not Implemented
- This PoC does not implement the official MCP SDK.
- It does not implement real Streamable HTTP SSE behavior.
- It does not implement authentication, authorization, retry policy, expiry cleanup, cancellation, or
input_required. - It does not verify adoption claims for specific clients such as Claude Desktop or Cursor. That remained
[DATA NOT AVAILABLE]for this run. - It does not prove final MCP draft compatibility because parts of the roadmap are still evolving.
Limitations
The useful evidence from this run is architectural, not benchmark-oriented. It proves that the roadmap pattern can be modeled with plain HTTP, per-request metadata, explicit task handles, and an externally shared task store. It does not prove production readiness, compliance, latency, throughput, security, or interoperability with existing MCP clients.
Read the article
This note supports the public article and records what was actually checked.