No
56% 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. | Partial v2 runtime (SDK 2.x) adds 2026-07-28 and is default on Anthropic-hosted CLI/VS Code/SDK. Bedrock, Vertex, Foundry, and some flags stay on v1. Stdio 2026 needs MCP_PROTOCOL_NEGOTIATION=auto. | 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. 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. | Partial Drains nextCursor in opt-in 2026-07-28 mode. Default 2025-06-18 still ignores the cursor (issue 28858). | No Single tools/list request. Tools after the first page never appear. | 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. Remote servers default to auth=oauth. Registration auto prefers CIMD, falls back to DCR. | 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. 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-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.