Guide
Add an MCP server to any AI coding agent: Claude Code, Cursor, Codex, Gemini CLI, VS Code and 8 more (2026)
Where does each AI coding agent keep its MCP server config, and what command adds a server?
Most agents read a JSON file with an mcpServers object: .cursor/mcp.json in Cursor, .mcp.json in Claude Code, .kiro/settings/mcp.json in Kiro, .factory/mcp.json in Factory Droid and .junie/mcp/mcp.json in Junie. The exceptions are VS Code (a servers key in .vscode/mcp.json), Codex ([mcp_servers.NAME] tables in ~/.codex/config.toml), OpenCode (an mcp key in opencode.json), Zed (context_servers in settings) and goose (extensions in config.yaml). Claude Code, Codex, Gemini CLI, Amp and Factory Droid also have an mcp add command.
Also in: 简体中文 · 日本語 · 한국어 · Español · Português (Brasil)
Coding agent settings change often
Get one email a week when a setting, flag or permission rule changes, checked against the vendor docs.
Quick answer: where the config goes in each agent
- Claude Code: claude mcp add --transport http NAME URL for a remote server, or claude mcp add NAME -- COMMAND for a local one. Local scope is the default; --scope project writes a shared .mcp.json and --scope user makes the server available in all your projects.
- Cursor: mcpServers in .cursor/mcp.json for one project, or ~/.cursor/mcp.json for every project.
- OpenAI Codex: codex mcp add NAME -- COMMAND, or a [mcp_servers.NAME] table in ~/.codex/config.toml.
- Gemini CLI: gemini mcp add NAME COMMAND, which writes to the project's .gemini/settings.json by default. Add -s user for ~/.gemini/settings.json.
- VS Code (GitHub Copilot): a top-level servers object in .vscode/mcp.json, or the user profile file opened with MCP: Open User Configuration.
- Copilot cloud agent on GitHub: repository Settings, then Copilot, then MCP servers. Paste JSON with an mcpServers object.
- OpenCode: the top-level mcp key in opencode.json.
- Cline: mcpServers in cline_mcp_settings.json. The CLI keeps it at ~/.cline/data/settings/cline_mcp_settings.json.
- Amp: amp mcp add NAME -- COMMAND or amp mcp add NAME URL, or amp.mcpServers in ~/.config/amp/settings.json or .amp/settings.json.
- Kiro: mcpServers in .kiro/settings/mcp.json (workspace) or ~/.kiro/settings/mcp.json (user).
- Factory Droid: droid mcp add NAME URL_OR_COMMAND --type stdio|http|sse, saved to ~/.factory/mcp.json. Teams share servers in .factory/mcp.json.
- Junie: mcpServers in .junie/mcp/mcp.json (project) or ~/.junie/mcp/mcp.json (user).
- Zed: context_servers in your Zed settings file.
- goose: extensions under the extensions key of ~/.config/goose/config.yaml, or goose configure, then Add Extension.
Local and remote entries look almost the same everywhere
A local server is a command that the agent starts on your machine and talks to over stdio. A remote server is a URL. In most JSON configs a local entry has command, args and env, and a remote entry has url and optional headers. Cursor, Kiro and Junie all accept this shape under mcpServers.
.cursor/mcp.json, .kiro/settings/mcp.json or .junie/mcp/mcp.json
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
},
"remote-server": {
"url": "https://example.com/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}Codex: ~/.codex/config.toml
[mcp_servers.context7] command = "npx" args = ["-y", "@upstash/context7-mcp"] [mcp_servers.figma] url = "https://mcp.figma.com/mcp"
VS Code: .vscode/mcp.json
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp"
}
}
}OpenCode: opencode.json
{
"mcp": {
"context7": {
"type": "local",
"command": ["npx", "-y", "@upstash/context7-mcp"]
},
"remote-server": {
"type": "remote",
"url": "https://example.com/mcp"
}
}
}Gotchas when you copy a config from one agent to another
- VS Code uses servers, not mcpServers, in .vscode/mcp.json. A file copied from Cursor needs that key renamed.
- OpenCode wants type local or remote, and its command is a single array that includes the arguments.
- Gemini CLI uses url for SSE servers and httpUrl for streamable HTTP servers.
- Cline treats a remote entry with no type as legacy SSE. Set type to streamableHttp for the recommended transport.
- Copilot cloud agent needs a tools array on every server (use ["*"] for all tools), and only secrets and variables whose names start with COPILOT_MCP_ reach the config.
- Zed puts servers under context_servers, and a remote server with no Authorization header starts the standard MCP OAuth flow.
- Codex is TOML, not JSON: one [mcp_servers.NAME] table per server.
Project config, approvals and auto-approve
- Claude Code prompts for approval in interactive sessions before it uses project-scoped servers from .mcp.json.
- Amp requires amp mcp approve NAME before a server in .amp/settings.json runs. Servers in your global settings do not need approval.
- Kiro merges the workspace and user files, and workspace settings win. autoApprove lists tools that run without a prompt, and "*" approves all of them.
- Gemini CLI: trust: true on a server bypasses all tool call confirmations for it. Use it only for servers you control.
- Cline: the autoApprove array lists tools Cline can call without asking. Keep it to safe tools.
- Factory Droid: servers added with droid mcp add go to your user config. Project servers in .factory/mcp.json cannot be removed with droid mcp remove, so edit the file.
Check that the server loaded
- Claude Code: /mcp, which is also where you sign in to OAuth servers.
- Codex: /mcp in the TUI shows active servers. codex mcp login NAME signs in to OAuth servers.
- Gemini CLI: /mcp shows each server's connection status.
- Factory Droid: /mcp opens the interactive manager.
- Junie CLI: /mcp lists servers with their scope and status.
- Amp: amp mcp doctor.
Full MCP setup guide for each agent
- Claude Code: claude mcp add, .mcp.json and scopes
- Cursor: mcp.json, env interpolation and OAuth
- Codex: codex mcp add and [mcp_servers] in config.toml
- Gemini CLI: gemini mcp add and mcpServers in settings.json
- GitHub Copilot: VS Code mcp.json and the cloud agent
- OpenCode: local and remote servers in opencode.json
- Cline: cline_mcp_settings.json
- Amp: amp mcp add and workspace approval
- Kiro: .kiro/settings/mcp.json, autoApprove and OAuth
- Factory Droid: droid mcp add and mcp.json locations
- Junie: .junie/mcp/mcp.json and /mcp
- Zed: context_servers and tool permissions
- goose: extensions in config.yaml
- Browse 80+ official MCP servers with install snippets
Get coding agent settings changes by email
When a setting, flag or permission rule in this guide changes, it goes in the weekly AgentAtlas update, checked against the vendor docs. One email a week.
Sources
Other guides
Reviewed Oct 18, 2026. Settings change often; the linked vendor docs are the source of truth.