Is MCP Good Yet? A developer survey of MCP (Model Context Protocol) support across Codex, Cursor, Claude Code, Grok, and OpenCode finds only 56% of the scoreboard features are implemented, with partial support for the 2026-07-28 protocol revision, elicitation, tasks, and code mode. The report, dated 2026-07-28, notes that most clients default to older protocol versions, lack full tasks or elicitation support, and only partially implement tool search and code mode. 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 pause 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.