No
60% of the scoreboard.
Codex, Cursor, Claude Code, Grok, and OpenCode. Partial means opt-in, a subset, or experimental. Click a cell for the source.
| Feature | Codex | Cursor | Claude Code | Grok | OpenCode |
|---|---|---|---|---|---|
| Stateless spec Protocol revision 2026-07-28. No initialize handshake, no session id. Each request carries version and capabilities. | Partial Opt-in mcp_2026_07_28. Default remains 2025-06-18. Stdio also needs CODEX_MCP_PROTOCOL_VERSION. | No No public 2026-07-28 claim. Forum reports still show pre-stateless protocol versions. | Yes Negotiates 2026-07-28 by default: HTTP servers on every install including Bedrock, Vertex, and Foundry (2.1.274), stdio (2.1.292), claude.ai connectors (2.1.295). MCP_PROTOCOL_NEGOTIATION=legacy opts out. | No Grok Build pins the wire to 2025-11-25 so an rmcp bump cannot silently move it. | No SDK v2 client migration reverted 2026-07-28. Stock still uses the initialize handshake. |
| Elicitation A server can pause a tool call and ask the user for a form or an out-of-band URL. | Yes elicitation/create surfaces as mcpServer/elicitation/request. Form, URL, and openai/form. Opt-in 2026-07-28 MRTR InputRequiredResult currently errors (issue 40657). | Partial Support table lists Elicitation. Documented as JSON-schema forms. URL mode and 2026 MRTR not documented. ~60s timeout reported. | Yes Form or URL dialogs appear automatically. Elicitation hooks and Agent SDK onElicitation can answer without a dialog. | Yes Client advertises form (with schema validation) and URL elicitation. | No elicitation capability is commented out. No request handler. |
| Tasks Long-running work returns a durable task id. The client polls, supplies input, and resumes after a disconnect. | No Codex MCP docs cover stdio, Streamable HTTP, tools, OAuth, and approval_mode. No Tasks extension, tasks/get, or io.modelcontextprotocol/tasks. | No Support table is Tools, Prompts, Resources, Roots, Elicitation, Apps. Tasks is absent. Cursor's own Task/subagent tool is unrelated. | No Open request to implement MCP Tasks. Auto-background of a slow tools/call is not the extension. | No Client capabilities advertise elicitation and MCP UI mime types. No io.modelcontextprotocol/tasks. Grok's own background jobs are unrelated. | No tasks capability is commented out. Built-in task subagent is unrelated. |
| Code mode The model writes code that calls MCP tools. Intermediate results stay out of the prompt. | Partial code_mode surface exists next to direct and deferred. [features.code_mode] enabled = true; off by default and marked under development. | No No shipping Code Mode. Dynamic context discovery loads schemas from files; the model still calls tools directly. | No Claude Code connects MCP servers and calls their tools (Tool Search when the catalog is large). No native execute-code-against-MCP surface. The Anthropic code-execution article is a builder pattern, not a Claude Code feature. | No MCP goes through search_tool and use_tool, not model-written code that calls MCP. | Partial Ships in core behind OPENCODE_EXPERIMENTAL_CODE_MODE. MCP tools become child tools of execute. Default path still loads schemas into the prompt. |
| Deferred tool descriptions The model does not get every MCP tool's full JSON up front. Names or a short index first; schemas load when needed. | Yes Default since 2026-06-22: MCP tools sit behind tool_search. The first request does not include those tools. Older models and providers that cannot search still get the full schemas. | Yes Turn 1 is tool names only. Full descriptions are files in a folder per server; the agent reads or greps them. Not a tool_search API. agent mcp list-tools is a human listing. | Yes Tool Search is on by default. Definitions are withheld; the agent gets a summary and loads up to five matches. alwaysLoad keeps a tool in the prompt; alwaysLoad: false on a server defers all its tools (2.1.287). Foundry and some Vertex or proxy hosts load everything. | Yes search_tool finds MCP tools by name or description. use_tool calls them. The catalog is not dumped into the prompt. | Partial Default path puts MCP tools in the prompt. Docs warn GitHub MCP can blow the window. Experimental Code Mode puts a token-budgeted catalog in the prompt and searches for omitted signatures. Filter is allow/deny, not deferral. |
| Per-tool filter The user can disable a server or a single tool without deleting the config. | Yes enabled=false disables a server. enabled_tools allow list, disabled_tools deny list. | Yes Customize > MCPs toggles a server. Click a tool name in the chat tools list to turn it off. CLI: agent mcp enable|disable and permissions.deny Mcp(server:tool). | Yes disallowedTools can hide a tool. disabledMcpServers / allowedMcpServers / deniedMcpServers filter servers. allowedTools is auto-approval, not visibility, unless dontAsk. | Yes enabled on the server, grok mcp enable|disable, TUI /mcps Space toggle. MCPTool allow/deny rules. Per-tool registration in ToolBridge. | Yes mcp.<name>.enabled disables a server without deleting it. Permission rules can deny a prefixed MCP tool id. |
| tools/list pagination The client drains nextCursor on tools/list so a large catalog is not truncated on the wire. | Yes Drains nextCursor in both protocol modes. Default 2025-06-18 mode follows it since 0.162.0; opt-in 2026-07-28 mode already did. | Yes Oct 1, 2026 release: servers that paginate tools, prompts, or resources show every page, not just the first. | Yes v2.1.144 drains paginated tools/list. v2.1.147 paginates resources, templates, and prompts. | Yes Follows next_cursor on tool and resource lists until none remains. | Yes Follows cursors for tools, prompts, resources, and templates. Cycle detection, 1000-page cap. |
| MCP Apps A tool result can render interactive UI in the client. | Partial App-server advertises io.modelcontextprotocol/ui with text/html;profile=mcp-app and mcpAppResourceUri on tool calls. enable_mcp_apps is off by default. | Yes Support table lists Apps. Official extension matrix marks Cursor. CLI rendering not documented. | No Claude mobile, web, desktop, and Cowork render Apps. Claude Code CLI and VS Code show the text result. | Partial Advertises text/html;profile=mcp-app and recognizes app-only tools. No documented TUI renderer. | No Open request. No Apps host in core. |
| Skills over MCP An MCP server serves Agent Skills (SKILL.md directories) as skill:// resources. The client lists them with skills/list and reads them. | Partial Plugin Scan Tools imports a bounded SEP-2640 snapshot (skills/list, skills/get, skill://) at submission. Codex CLI still loads SKILL.md from disk and can install MCP tools a skill depends on. No live skills/list against a connected MCP server. | No Support table is Tools, Prompts, Resources, Roots, Elicitation, Apps. Skills load from .cursor/skills, .agents/skills, and plugins. No skills/list or io.modelcontextprotocol/skills. | No Skills load from the filesystem and plugins. MCP resources are attachments, not a skills catalog. SEP-2640 notes an internal prototype that is not public. | No MCP docs cover tools, OAuth, and approvals. No skills/list, skill://, or io.modelcontextprotocol/skills. docs.x.ai/build/features/skills is 404. | No Skills load from .opencode/skills, .claude/skills, and .agents/skills. The skill tool reads SKILL.md from disk. No skills/list or io.modelcontextprotocol/skills in core. |
| In-client OAuth Remote servers authenticate inside the client, not via a pasted token. | Yes codex mcp login opens a browser; /mcp login <name> does it from the TUI (0.161.0). Remote servers default to auth=oauth. Registration auto prefers CIMD, falls back to DCR. --oauth-client-secret for pre-registered clients (0.158.0). | Yes Marketplace Add to Cursor runs OAuth. Static CLIENT_ID/SECRET in mcp.json. CLI: agent mcp login. Cloud OAuth is per user on Cursor's backend. | Yes /mcp or claude mcp login. Discovers CIMD; DCR and pre-configured client id/secret also work. Prompts to re-authenticate when a server asks for more scope mid-call (2.1.288). Agent SDK does not open a browser; pass Authorization. | Yes Remote HTTP triggers a browser flow. Tokens in ~/.grok/mcp_credentials.json. TUI /mcps i to authenticate. | Yes Automatic for remote servers. DCR if the server supports it. opencode mcp auth / list / logout. |
| Approval policy Allowlists, classifiers, or annotation-aware auto-run. | Yes approval_mode auto, prompt, writes, approve. writes prompts when the tool is not read-only. readOnlyHint can skip approval. | Yes Auto-review classifier plus mcpAllowlist. MCP follows Run Modes. CLI: approvalMode, /auto-review, --approve-mcps. | Yes default prompts for unmatched MCP calls. allowedTools pre-approves. acceptEdits does not auto-approve MCP. anthropic/requiresUserInteraction forces a prompt. | Yes Ask (default), Auto classifier, Always-approve. MCPTool allow/deny. deny and PreToolUse still apply under always-approve. | Yes allow, ask, deny, plus --auto for anything not denied. MCP tools use the same permission keys as their prefixed ids. No annotation-aware MCP policy. |
2024-11-25
2025-03-26
2025-11-04
2026-01-26
2026-04-16
2026-05-19
2026-07-28
2026-08-22
2026-10-05 · MCP TypeScript SDK
Six Python and four TypeScript advisories between 28 Sep and 5 Oct. OAuth clients could send credentials to an authorization server the MCP server chose, bearer auth accepted tokens issued for another service, HTTP transports followed cross-origin redirects with custom headers, and TypeScript experimental tasks were not tied to their session. Clients and servers built on these SDKs need the patched releases.
2026-09-29 · GitHub
OpenAI published openai/mcp-extensions: a toolkit to build MCP-based plugins that feel like native, first-class features of ChatGPT.
2026-08-22 · MCP docs
The 22 Aug 2026 cycle lists Tasks plus server-initiated events, HTTP-over-stdio, DPoP and agent identity, and protocol-level progressive discovery. Those are SEPs. No client on this board implements them.
2026-07-28 · MCP blog
Revision 2026-07-28 drops the initialize handshake and session id. Requests carry version and capabilities. Elicitation moves to multi round-trip requests. Tasks and Apps live in the extensions framework. DCR and HTTP+SSE are deprecated.
2026-05-19 · Chrome
At I/O 2026 Chrome showed WebMCP: a page registers tools for the life of the tab. Origin trial in Chrome 149. The five coding agents on this board do not consume it.
2026-04-16 · MCP
The Skills Over MCP working group is drafting SEP-2640: SKILL.md directories over skill://, listed with skills/list. OpenAI's plugin Scan Tools imports a bounded snapshot. The five coding agents on this board still load skills from disk.
2026-04-01 · Claude Code docs
Tool Search is native and on by default. Claude Code withholds schemas and hydrates on demand. alwaysLoad keeps a server in context.
2026-02-01 · Cursor docs
Cursor documents Tools, Prompts, Resources, Roots, Elicitation, and the MCP Apps extension. A tool can return interactive UI next to its result.
2025-11-04 · Anthropic
Present MCP servers as code APIs. The model loads the tools it needs and filters results in a sandbox. Cloudflare called the same idea Code Mode. Claude Code still calls tools directly.