# MCP Clients Compared: AI Coding Agents

> How every AI coding agent supports MCP, compared — config file, format, remote support, and tool limits for Claude Code, Cursor, Codex, and more.

Source: https://designrevision.com/blog/mcp-clients-compared

---

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](https://modelcontextprotocol.io), 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](https://modelcontextprotocol.io/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](https://docs.claude.com/en/docs/claude-code/mcp)). It's the most CLI-friendly client. See [how to add an MCP server to Claude Code](/blog/add-mcp-server-to-claude-code), and our ranked list of the [best MCP servers for Claude Code](/blog/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](https://cursor.com/docs/mcp)). 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](/blog/add-mcp-server-to-cursor) and the [best MCP servers for Cursor](/blog/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](https://github.com/openai/codex)). See [how to add an MCP server to Codex](/blog/add-mcp-server-to-codex) and the [best MCP servers for Codex](/blog/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](https://docs.windsurf.com/windsurf/cascade/mcp)). It also has a higher tool ceiling (~100) than Cursor. See [how to add an MCP server to Windsurf](/blog/add-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](/blog/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](https://code.visualstudio.com/docs/copilot/chat/mcp-servers)); 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):

```json
"github": {
  "url": "https://api.githubcopilot.com/mcp/",
  "headers": { "Authorization": "Bearer YOUR_PAT" }
}
```

…and like this in Codex's `config.toml`:

```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](/mcp)** for installing real [shadcn/ui components](/components) covers most workflows. We rank the best picks per agent in our roundups for [Claude Code](/blog/best-mcp-servers-for-claude-code), [Cursor](/blog/best-mcp-servers-for-cursor), and [Codex](/blog/best-mcp-servers-for-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](/mcp)
- [How to Add an MCP Server to Claude Code (2026 Guide)](/blog/add-mcp-server-to-claude-code)
- [How to Add an MCP Server to Cursor (2026 Guide)](/blog/add-mcp-server-to-cursor)
- [How to Add an MCP Server to Codex CLI (2026 Guide)](/blog/add-mcp-server-to-codex)
- [How to Add an MCP Server to Windsurf (2026 Guide)](/blog/add-mcp-server-to-windsurf)
- [Claude Desktop MCP Config: How to Add a Server (2026)](/blog/claude-desktop-mcp-config)
- [Best MCP Servers for Claude Code (2026): Tested & Ranked](/blog/best-mcp-servers-for-claude-code)
- [Best MCP Servers for Cursor (2026): Ranked](/blog/best-mcp-servers-for-cursor)
- [Best MCP Servers for Codex (2026): Ranked](/blog/best-mcp-servers-for-codex)
