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 | |
|---| Protocol revision 2026-07-28. No initialize handshake, no session id. Each request carries version and capabilities.
Opt-in mcp_2026_07_28. Default remains 2025-06-18. Stdio also needs CODEX_MCP_PROTOCOL_VERSION.
No public 2026-07-28 claim. Forum reports still show pre-stateless protocol versions.
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.
Grok Build pins the wire to 2025-11-25 so an rmcp bump cannot silently move it.
SDK v2 client migration reverted 2026-07-28. Stock still uses the initialize handshake.
A server can a tool call and ask the user for a form or an out-of-band URL.
elicitation/create surfaces as mcpServer/elicitation/request. Form, URL, and openai/form. Opt-in 2026-07-28 MRTR InputRequiredResult currently errors (issue 40657).
Support table lists Elicitation. Documented as JSON-schema forms. URL mode and 2026 MRTR not documented. ~60s timeout reported.
Form or URL dialogs appear automatically. Elicitation hooks and Agent SDK onElicitation can answer without a dialog.
Client advertises form (with schema validation) and URL elicitation.
elicitation capability is commented out. No request handler.
Long-running work returns a durable task id. The client polls, supplies input, and resumes after a disconnect.
Codex MCP docs cover stdio, Streamable HTTP, tools, OAuth, and approval_mode. No Tasks extension, tasks/get, or io.modelcontextprotocol/tasks.
Support table is Tools, Prompts, Resources, Roots, Elicitation, Apps. Tasks is absent. Cursor's own Task/subagent tool is unrelated.
Open request to implement MCP Tasks. Auto-background of a slow tools/call is not the extension.
Client capabilities advertise elicitation and MCP UI mime types. No io.modelcontextprotocol/tasks. Grok's own background jobs are unrelated.
tasks capability is commented out. Built-in task subagent is unrelated.
The model writes code that calls MCP tools. Intermediate results stay out of the prompt.
code_mode surface exists next to direct and deferred. [features.code_mode] enabled = true; off by default and marked under development.
No shipping Code Mode. Dynamic context discovery loads schemas from files; the model still calls tools directly.
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.
MCP goes through search_tool and use_tool, not model-written code that calls MCP.
Ships in core behind OPENCODE_EXPERIMENTAL_CODE_MODE. MCP tools become child tools of execute. Default path still loads schemas into the prompt.
The model does not get every MCP tool's full JSON up front. Names or a short index first; schemas load when needed.
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.
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.
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.
search_tool finds MCP tools by name or description. use_tool calls them. The catalog is not dumped into the prompt.
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.
The user can disable a server or a single tool without deleting the config.
enabled=false disables a server. enabled_tools allow list, disabled_tools deny list.
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).
disallowedTools can hide a tool. disabledMcpServers / allowedMcpServers / deniedMcpServers filter servers. allowedTools is auto-approval, not visibility, unless dontAsk.
enabled on the server, grok mcp enable|disable, TUI /mcps Space toggle. MCPTool allow/deny rules. Per-tool registration in ToolBridge.
mcp.<name>.enabled disables a server without deleting it. Permission rules can deny a prefixed MCP tool id.
The client drains nextCursor on tools/list so a large catalog is not truncated on the wire.
Drains nextCursor in opt-in 2026-07-28 mode. Default 2025-06-18 still ignores the cursor (issue 28858). Single tools/list request. Tools after the first page never appear.
v2.1.144 drains paginated tools/list. v2.1.147 paginates resources, templates, and prompts.
Follows next_cursor on tool and resource lists until none remains.
Follows cursors for tools, prompts, resources, and templates. Cycle detection, 1000-page cap.
A tool result can render interactive UI in the client.
App-server advertises io.modelcontextprotocol/ui with text/html;profile=mcp-app and mcpAppResourceUri on tool calls. enable_mcp_apps is off by default.
Support table lists Apps. Official extension matrix marks Cursor. CLI rendering not documented.
Claude mobile, web, desktop, and Cowork render Apps. Claude Code CLI and VS Code show the text result.
Advertises text/html;profile=mcp-app and recognizes app-only tools. No documented TUI renderer.
Open request. No Apps host in core.
An MCP server serves Agent Skills (SKILL.md directories) as skill:// resources. The client lists them with skills/list and reads them.
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.
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.
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.
MCP docs cover tools, OAuth, and approvals. No skills/list, skill://, or io.modelcontextprotocol/skills. docs.x.ai/build/features/skills is 404.
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.
Remote servers authenticate inside the client, not via a pasted token.
codex mcp login opens a browser. Remote servers default to auth=oauth. Registration auto prefers CIMD, falls back to DCR.
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.
/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.
Remote HTTP triggers a browser flow. Tokens in ~/.grok/mcp_credentials.json. TUI /mcps i to authenticate.
Automatic for remote servers. DCR if the server supports it. opencode mcp auth / list / logout.
Allowlists, classifiers, or annotation-aware auto-run.
approval_mode auto, prompt, writes, approve. writes prompts when the tool is not read-only. readOnlyHint can skip approval.
Auto-review classifier plus mcpAllowlist. MCP follows Run Modes. CLI: approvalMode, /auto-review, --approve-mcps. default prompts for unmatched MCP calls. allowedTools pre-approves. acceptEdits does not auto-approve MCP. anthropic/requiresUserInteraction forces a prompt.
Ask (default), Auto classifier, Always-approve. MCPTool allow/deny. deny and PreToolUse still apply under always-approve.
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.