MCP009 — subscriptions/listen is missing despite advertised listChanged capabilities
| 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 4 (SEP-2575) |
Why this changed
A server that advertises listChanged is promising to tell clients when its
listings change. Under 2026-07-28 the only way to deliver on that promise is
subscriptions/listen, so advertising one without the other is a broken
contract rather than a style issue.
Running just this check
npx mcp-stateless --stdio "node dist/server.js" --only MCP009Suppressing it
If this check does not apply to your server, skip it:
npx mcp-stateless --stdio "node dist/server.js" --skip MCP009Rule ids are permanent and are never reissued, so a suppression cannot start silently matching a different check later.
Generated from src/rules/MCP009.ts by
scripts/gen-rule-docs.mjs. Edit the rule source, not this page.