Skip to content
Effloow
← Back to article
EFFLOOW LAB LAB-RUN ·1778976000

MCP Roadmap 2026 Stateless Tasks Sandbox PoC

Evidence notes document the bounded local or source-based checks behind an Effloow article. They are not product endorsements, legal advice, or benchmark claims.

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/discover style RPC for supported versions and capabilities.
  • A .well-known server-card endpoint for HTTP discovery.
  • A task-style tools/call response that returns a task handle first, then supports tasks/get and tasks/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/roadmap
  • https://blog.modelcontextprotocol.io/posts/2026-mcp-roadmap/
  • https://modelcontextprotocol.io/seps/2575-stateless-mcp
  • https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1686
  • https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/tasks
  • https://modelcontextprotocol.io/specification/2025-06-18/basic/transports
  • https://modelcontextprotocol.io/seps/2243-http-standardization
  • https://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.json
  • POST /mcp JSON-RPC handler
  • Header/body version check:
    • MCP-Protocol-Version
    • params._meta["io.modelcontextprotocol/protocolVersion"]
  • Header/body method check:
    • Mcp-Method
    • body.method
  • server/discover
  • tools/list
  • task-augmented tools/call
  • tasks/get
  • tasks/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/discover without any prior initialization handshake.
  • Every JSON-RPC request carried protocol version, client identity, and client capabilities in _meta.
  • The HTTP MCP-Protocol-Version header had to match the _meta protocol version.
  • The HTTP Mcp-Method header 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 completed by simulated worker B.
  • The final result referenced the task through io.modelcontextprotocol/related-task.
  • The server card was retrievable through a .well-known path 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.

Open article →