Skip to content

MCP021 — Tasks are still served from the core protocol, not the tasks extension

Severity error
Fixed by Upgrading your MCP SDK to a release targeting 2026-07-28
Transports stdio, http
Specification 2026-07-28
Changelog entry Major change 6 (SEP-2663)

Why this changed

SEP-2663 moved tasks out of the core protocol into the official io.modelcontextprotocol/tasks extension, and redesigned them on the way: polling through tasks/get replaced the blocking tasks/result, and tasks/list was removed. A client now learns that a server supports tasks only from the extension entry in server/discover — the core tasks capability means nothing to it.

What the reference implementation does, which is what these checks are calibrated against: the 2026-07-28 TypeScript SDK serves no core task methods and strips a core tasks capability before answering a 2026 client, and the ext-tasks client recognises support only from the extension entry. Capabilities are read from server/discover alone. The legacy initialize result is a 2025-11-25 answer, where a core tasks key is correct, so a dual-era server is not faulted for it.

Running just this check

Terminal window
npx mcp-stateless --stdio "node dist/server.js" --only MCP021

Suppressing it

If this check does not apply to your server, skip it:

Terminal window
npx mcp-stateless --stdio "node dist/server.js" --skip MCP021

Rule ids are permanent and are never reissued, so a suppression cannot start silently matching a different check later.


Generated from src/rules/MCP021.ts by scripts/gen-rule-docs.mjs. Edit the rule source, not this page.