Is MCP good yet?

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.

Scoreboard

FeatureCodexCursorClaude CodeGrokOpenCode
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.

Timeline

  1. MCP announced

    2024-11-25

  2. Remote MCP, Streamable HTTP, OAuth

    2025-03-26

  3. Anthropic: code execution with MCP

    2025-11-04

  4. MCP Apps extension

    2026-01-26

  5. Skills Over MCP working group

    2026-04-16

  6. WebMCP at Chrome I/O

    2026-05-19

  7. Spec 2026-07-28: stateless core

    2026-07-28

  8. MCP roadmap: messaging, identity, discovery

    2026-08-22

News

  1. MCP roadmap: agentic messaging, HTTP-over-stdio, DPoP, progressive discovery

    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.

  2. MCP ships a stateless spec

    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.

  3. Chrome I/O: pages register tools on document.modelContext

    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.

  4. SEP-2640: serve Agent Skills as MCP resources

    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.

  5. Claude Code defers MCP schemas until search hits them

    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.

  6. Cursor renders MCP Apps

    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.

  7. Anthropic: stop stuffing MCP tools into context, write code instead

    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.