MCP Clients Compared: AI Coding Agents
Every major AI coding agent is now an MCP client — Claude Code, Cursor, OpenAI Codex, Windsurf, Claude Desktop, and the rest all speak the Model Context Protocol, so they can plug into the same MCP servers for repos, docs, databases, and UI components. (The protocol maintainers keep an official list of MCP clients; this page focuses on the coding agents developers actually use day to day.) What differs is the plumbing: each agent keeps its MCP config in a different file, in a different format, with different rules for remote servers and tool limits. This page compares MCP support across the major AI coding agents — the exact config location and format for each — and links to a full setup guide (and a best-servers list) per agent.
Last updated: July 2026. MCP clients evolve fast — config paths, key names, and remote support change between releases; everything here was verified in July 2026, but confirm each against its vendor's docs before relying on it.
MCP Support by AI Coding Agent: The Comparison Table
Every agent below connects to the same servers. The columns that actually differ — and trip people up — are the config file, the format, and whether remote (HTTP) servers work natively.
| AI coding agent | Config file | Format | Remote (HTTP) | How you add a server |
|---|---|---|---|---|
| Claude Code | .mcp.json (project) / ~/.claude.json |
JSON | Native | claude mcp add CLI |
| Cursor | .cursor/mcp.json / ~/.cursor/mcp.json |
JSON | Native | Settings UI or one-click |
| OpenAI Codex | ~/.codex/config.toml |
TOML | Native | codex mcp add CLI |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
JSON | Native | Cascade "Plugins" UI |
| Claude Desktop | claude_desktop_config.json |
JSON | Via bridge/OAuth | Connectors UI or file |
| VS Code (Copilot) | .vscode/mcp.json / user settings |
JSON | Native | MCP: Add Server command |
| Cline | cline_mcp_settings.json |
JSON | Native | Marketplace UI |
| JetBrains AI Assistant | Settings / mcp.json |
JSON | Native | Settings UI |
| Amazon Q Developer | ~/.aws/amazonq/mcp.json |
JSON | Native | File or IDE UI |
Two patterns jump out. Codex is the odd one out on format — it's the only mainstream client using TOML, so a JSON block copied from a Cursor tutorial won't work there. And Claude Desktop is the odd one out on transport — its config is stdio-only, so remote servers need its Connectors UI or the mcp-remote bridge. Everything else is JSON with native remote support; only the file path and the top-level key change.
The Agents, One by One
Each agent has one quirk worth knowing before you add a server. Here's the short version, with the full walkthrough linked.
Claude Code
Claude Code uses the claude mcp add command (or a .mcp.json file at your project root) and supports --scope flags to share servers with your team (Anthropic's docs). It's the most CLI-friendly client. See how to add an MCP server to Claude Code, and our ranked list of the best MCP servers for Claude Code.
Cursor
Cursor reads .cursor/mcp.json (project) or ~/.cursor/mcp.json (global), inferring transport from the shape — a url key means remote, a command key means local (Cursor's MCP docs). Its one catch is a soft ~40-tool cap across all active servers, so keep the set focused. See how to add an MCP server to Cursor and the best MCP servers for Cursor.
OpenAI Codex
Codex is the TOML outlier: each server is a [mcp_servers.<name>] table in ~/.codex/config.toml, remote auth goes through bearer_token_env_var, and native HTTP means no mcp-remote bridge (OpenAI's Codex repo). See how to add an MCP server to Codex and the best MCP servers for Codex.
Windsurf
The Windsurf MCP config lives in ~/.codeium/windsurf/mcp_config.json, and remote entries use a serverUrl key (not url) with a headers block — the mismatch is the usual cause of a server that won't connect (Windsurf's MCP docs). It also has a higher tool ceiling (~100) than Cursor. See how to add an MCP server to Windsurf.
Claude Desktop
Claude Desktop's claude_desktop_config.json is stdio-only, which surprises people coming from Claude Code. To reach a remote server, use the Connectors UI (OAuth) or wrap the URL with the mcp-remote package as a local command. See Claude Desktop MCP config for the bridge pattern and the PATH gotcha.
VS Code, Cline, JetBrains & Amazon Q
The rest of the field is JSON with native remote support, differing mainly in file location: VS Code (with Copilot) uses .vscode/mcp.json and a servers key, added via the MCP: Add Server command (VS Code MCP docs); Cline stores servers in cline_mcp_settings.json through its Marketplace UI; JetBrains AI Assistant configures them in Settings; and Amazon Q Developer reads ~/.aws/amazonq/mcp.json. The servers are identical — only the wrapper changes.
JSON vs TOML: The One Format Gotcha
If you take one thing from this comparison, take this: Codex uses TOML, everyone else uses JSON. The same GitHub server looks like this in a JSON client (Cursor, Claude Desktop, Windsurf, VS Code):
"github": {
"url": "https://api.githubcopilot.com/mcp/",
"headers": { "Authorization": "Bearer YOUR_PAT" }
}
…and like this in Codex's config.toml:
[mcp_servers.github]
url = "https://api.githubcopilot.com/mcp/"
bearer_token_env_var = "GITHUB_PAT"
Same server, same endpoint — different syntax. Copy the right one for your agent, and remember the smaller per-client differences: Cursor and Claude Desktop nest servers under mcpServers, VS Code uses servers, Windsurf uses serverUrl instead of url, and Codex uses bearer_token_env_var for auth instead of an inline header.
Which MCP Servers Should You Add?
Once you know how your agent handles MCP, the next question is which servers to add — and the answer is largely the same across all of them. A focused set of GitHub (repos), Context7 (docs), Playwright (browser testing), a database server, and DesignRevision MCP for installing real shadcn/ui components covers most workflows. We rank the best picks per agent in our roundups for Claude Code, Cursor, and Codex — the same servers, with the config format tuned to each client.
Conclusion
Every serious AI coding agent is an MCP client, so the protocol — not the tool — is what you're really learning. Claude Code and Cursor lead on flexibility, Codex is the TOML outlier, and Claude Desktop is the stdio-only exception, but they all connect to the same servers. Pick the agent you already code in, note its config file and format from the table above, follow its setup guide, and add the two or three servers that fill a real gap. Switch agents later and only the config wrapper changes — your servers come with you.
Related Resources
- DesignRevision MCP — the shadcn/ui MCP server
- How to Add an MCP Server to Claude Code (2026 Guide)
- How to Add an MCP Server to Cursor (2026 Guide)
- How to Add an MCP Server to Codex CLI (2026 Guide)
- How to Add an MCP Server to Windsurf (2026 Guide)
- Claude Desktop MCP Config: How to Add a Server (2026)
- Best MCP Servers for Claude Code (2026): Tested & Ranked
- Best MCP Servers for Cursor (2026): Ranked
- Best MCP Servers for Codex (2026): Ranked
Frequently Asked Questions
-
All of the major ones. Claude Code, Cursor, OpenAI Codex, Windsurf, Claude Desktop, GitHub Copilot in VS Code, Cline, JetBrains AI Assistant, and Amazon Q Developer are all MCP clients. They connect to the same MCP servers — the difference is where the config lives and what format it uses, which is what this page compares.
-
An MCP client is the application that connects to MCP servers and lets its model call their tools — in practice, your AI coding agent (Claude Code, Cursor, Codex, and so on). The server exposes tools; the client discovers them and decides when to call them. So "MCP client vs server" comes down to this: the agent is the client, and the thing it plugs into is the server.
-
No — and this is the most common source of errors. Most agents use JSON (Claude Code, Cursor, Windsurf, Claude Desktop, VS Code), but OpenAI Codex uses TOML in ~/.codex/config.toml. Pasting a JSON mcpServers block into Codex will silently fail. Even among the JSON clients, the top-level key and file location differ.
-
Yes. An MCP server is client-agnostic — the same GitHub, Context7, or DesignRevision MCP server works in every agent. You only rewrite the config: a .cursor/mcp.json entry for Cursor, a [mcp_servers.
] TOML table for Codex, a claude mcp add command for Claude Code. The server URL and auth are the same everywhere. -
Most do natively — Claude Code, Cursor, Codex, Windsurf, and VS Code all connect to remote streamable-HTTP servers directly. The exception is Claude Desktop, whose config file is stdio-only; to reach a remote server you either use its Connectors UI (OAuth) or bridge the URL through the mcp-remote package.
-
For raw flexibility, Claude Code and Cursor lead — native remote support, a clean CLI or one-click install, and mature tooling. Codex is close behind and unusual for using TOML. The "best" one is whichever you already code in; the same servers work across all of them, so pick your agent first, then add the two or three servers that fit your stack.
Join 50k+ subscribers
Web dev, SaaS, growth & marketing. Weekly.
Keep Learning
More articles you might find interesting.