modelcontextprotocol / modelcontextprotocol/inspector
[Blocked upstream] Tasks requests over Streamable HTTP omit the required Mcp-Name header (SEP-2663)
@cliffhall is already working on this.
Since Aug 11, 2026.
- Dominant language
- TypeScript
- Stars
- 10.9k
- Forks
- 1.5k
- Avg merge
- 6h 17m
- Merged PRs (30d)
- 151
Description
Summary
When driving the io.modelcontextprotocol/tasks extension (protocol 2026-07-28),
Inspector sends tasks/get / tasks/update / tasks/cancel without the Mcp-Name
header. SEP-2663's Streamable HTTP binding makes that header a client MUST for
these methods, so a conforming server rejects every task poll with a JSON-RPC
-32020 (HeaderMismatch) and HTTP 400 — task-based tools are unusable from
Inspector against strict servers.
Spec citation (SEP-2663, Streamable HTTP transport binding)
When
tasks/get,tasks/update, ortasks/cancelis sent over the Streamable
HTTP transport, the client MUST set theMcp-Nameheader to the value of
params.taskId. This allows transport intermediaries and load balancers to route
subsequent requests for the same task to the server instance holding its state,
which is typically required for correctness. TheMcp-Methodheader is set to
the JSON-RPC method name per standard header conventions.
Note the MUST is unconditional: even against servers that keep task state in a
shared store (and don't need routing affinity for correctness), the client is
required to send the header so intermediaries can route for the servers that do.
Reproduction
- Start any 2026-07-28 server that validates transport routing headers and
exposes a task-augmented tool (observed against mocapi's
tasks example, which validates headers before dispatch per the transport prose). - In Inspector, call the task tool (the
tools/callitself succeeds — Inspector
correctly sendsMcp-MethodandMcp-Name: <tool name>there). - Inspector's follow-up
tasks/getpoll fails.
Actual — request is sent with Mcp-Method: tasks/get but no Mcp-Name;
server responds HTTP 400:
{"jsonrpc":"2.0","error":{"code":-32020,"message":"HeaderMismatch: missing required header Mcp-Name for method tasks/get"},"id":1}
Expected — per the SEP, the request carries:
Mcp-Method: tasks/get
Mcp-Name: <params.taskId>
and the poll succeeds.
Fix
Wherever Inspector builds Streamable HTTP requests for the tasks extension, set
Mcp-Name to params.taskId for all three methods (tasks/get, tasks/update,
tasks/cancel) — mirroring the existing behavior for tools/call (params.name),
prompts/get (params.name), and resources/read (params.uri).
(Possibly related to the header work tracked in #1628, which is closed.)
Environment
- Inspector: 2.0.0
- Protocol: 2026-07-28, tasks extension (SEP-2663)
- Server: mocapi 1.3.0-SNAPSHOT (Streamable HTTP, header validation per transport prose)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.