[ COMPARISON ]

Share MCP servers across Claude Code and Codex

You wired an MCP server into Claude Code. Now you want the same servers in Codex, Cursor, and VS Code without hand-editing six config files that each use a different shape.

Updated June 29, 2026 · Escoffier Labs

Short answer: keep one canonical list of MCP servers in a single file and project it into each tool’s native config, instead of hand-editing each one. Brigade does this with brigade mcp sync: one catalog in .brigade/mcp.json, merged into Claude Code, Codex, Cursor, VS Code, OpenCode, and Antigravity, dry-run by default, with a diff you approve and a receipt you can roll back.

Why this is annoying in the first place

Every coding agent reads its MCP servers from a different file in a different shape:

ToolFileFormat
Claude Code.mcp.jsonJSON
Cursor.cursor/mcp.jsonJSON
Codex CLI.codex/config.tomlTOML
VS Code.vscode/mcp.jsonJSON, secrets as inputs[]
OpenCodeopencode.jsonJSON
Antigravity~/.gemini/config/mcp_config.jsonJSON, user-scoped

Add one server and you are editing six files by hand, in three formats, and keeping them in sync forever. Miss one and that agent silently runs without the tool.

The options

ApproachOne sourcePer-tool formatReview before writeReceipt / rollback
Hand-editing each confignomanualyou are the diffno
A dotfile manager (chezmoi)as templatesyou template eachnogit, not per-write
add-mcp / config-sync scriptsyesa few targetsnono
Brigadeyessix native targetsyes, per-tool diffyes

Dotfile managers and small sync scripts get you part of the way: they copy one thing into a few places. They do not understand each tool’s config shape well enough to merge surgically, they write without showing you the diff, and they do not leave a receipt you can undo.

How Brigade does it

brigade mcp init                  # scaffold .brigade/mcp.json
brigade mcp add --name github --command npx \
  --args "-y @modelcontextprotocol/server-github" \
  --env GITHUB_TOKEN=ref:GITHUB_TOKEN
brigade mcp sync                  # dry-run: the per-tool diff, server by server
brigade mcp sync --write          # merge into each tool's native config

brigade mcp sync is dry-run by default. It prints the plan for every tool before a single file changes:

brigade mcp sync (dry-run): ~/my-repo
claude       github               missing        -> create
cursor       github               missing        -> create
codex        github               missing        -> create
vscode       github               missing        -> create
opencode     github               missing        -> create

Three things make it safe to run on a config you care about:

Tools and skills get the same treatment with brigade tools sync: one reviewed catalog, projected into each harness’s native format.

When you do not need this

If you run a single agent and never touch a second one, one config file is fine, edit it directly. Brigade earns its place the moment you have two or more agents that should share the same servers, or the moment a tool overwrites a config and you want a receipt of what changed.

Questions

Does it support Claude Code and Codex specifically? Yes. Claude Code writes to .mcp.json, Codex to .codex/config.toml, and Brigade keeps both in sync from one catalog. Cursor, VS Code, OpenCode, and Antigravity are supported too.

Will it overwrite servers I added by hand? No. It merges by server key and only touches a server you already own if you pass --force.

Is anything sent to a server or the cloud? No. Brigade writes local files when you run a command. There is no daemon and no hosted service.

Full behavior is in the MCP sync docs.

Try Brigade

One reviewed source for the memory, tools, and MCP your AI coding agents share, merged into each tool's native config with a review gate and a receipt for every change. Local files, no daemon, no lock-in.

Quickstart · GitHub · All comparisons