v0.1.4 · open source · MIT

One command to sync MCP servers across every AI agent.

Add an MCP server to one agent and forget the rest? MCPSync reads every agent's config, merges the servers into one deduplicated list, and writes back to all of them. Atomic writes, automatic backups, zero runtime.

  • 13 agents supported
  • No runtime required
  • Backs up before writing

Install

Pick the option that matches your setup — no runtime required once installed.

install via npm
$ npm install -g @anushkrishnav/mcpsync
$ mcpsync now

No Go required. The npm package downloads the correct pre-built binary for your platform. Needs Node 18+.

Or one-shot with npx: npx @anushkrishnav/mcpsync list

install via go
$ go install github.com/anush-data-portfolio/MCPSync/mcpsync@latest

Make sure $(go env GOPATH)/bin is on your PATH, then run mcpsync now.

download a release binary
# macOS (Apple Silicon)
$ curl -Lo mcpsync https://github.com/anush-data-portfolio/MCPSync/releases/latest/download/mcpsync-darwin-arm64
$ chmod +x mcpsync && sudo mv mcpsync /usr/local/bin/
# Linux (x86_64) — swap the URL suffix to mcpsync-linux-amd64

All builds available on the releases page.

build from source
$ git clone https://github.com/anush-data-portfolio/MCPSync
$ cd MCPSync
$ go build -o mcpsync .
$ sudo mv mcpsync /usr/local/bin/

Requires Go 1.21+. The compiled binary runs without Go installed.

Commands

Four commands cover every workflow. Run any with --help for full flags.

Auto-discover all agents, merge, and write back. Interactive multi-select, side-by-side conflict resolution, atomic writes, automatic backups.

  • --no-maintain skip .old.json backups
  • -p output.json also dump merged config to a file
interactive sync
$
? Select agents to include ‹space› to toggle, ‹enter› to confirm
Claude Desktop 3 servers
Claude Code 2 servers
Cursor 4 servers
Zed stdio only
↳ Preview: 6 unique servers, 0 conflicts
Sync complete · 4 files written · 4 backups saved

Show the current merged MCP server list. Colored table on a terminal; clean JSON when piped.

  • mcpsync get raw syntax-highlighted JSON in the terminal
  • mcpsync get > merged.json plain JSON to file (pipe auto-detected)
merged servers
$
MCP Servers (6)
kaggle-mcp http https://www.kaggle.com/mcp [headers]
magicuidesign-mcp stdio npx -y @magicuidesign/mcp@latest
playwright stdio npx -y @playwright/mcp@latest
shadcn stdio npx shadcn@latest mcp
sqlite stdio npx -y mcp-sqlite
task-manager stdio task-manager

Show every supported agent and whether its config was found on this machine.

  • Green check → config detected and parsed
  • Dimmed cross → adapter exists but no config present
discover agents
$
Claude Desktop ~/Library/…/claude_desktop_config.json 3 servers
Claude Code ~/.claude.json 2 servers
GitHub Copilot CLI ~/.copilot/mcp-config.json 2 servers
✗ Cursor ~/.cursor/mcp.json [not found]
✗ VS Code ~/.vscode/mcp.json [not found]
…13 agents probed

Register a custom agent config that MCPSync didn't auto-detect. Saved to ~/.mcpsync/config.json and included in future syncs.

  • --path <file> path to the agent's MCP config file
  • --name <label> friendly name shown in lists and prompts
register custom agent
$
Registered My Agent~/.mcpsync/config.json
included in all future syncs

Supported agents

13 agents out of the box. Don't see yours? Open a request — adding one is usually ~10 lines of Go.

Claude
Claude Desktop ~/Library/…/claude_desktop_config.json
Claude
Claude Code ~/.claude.json
Cursor
Cursor ~/.cursor/mcp.json
VS Code ~/.vscode/mcp.json
Windsurf
Windsurf ~/.codeium/windsurf/mcp_config.json
Zed ~/.config/zed/settings.json
Continue ~/.continue/config.json
Junie ~/.junie/mcp/mcp.json
Gemini
Gemini CLI ~/.gemini/settings.json
Codex
OpenAI Codex CLI ~/.codex/config.json
GitHub Copilot
GitHub Copilot CLI ~/.copilot/mcp-config.json
GitHub Copilot
Copilot (VS Code) ~/.config/github-copilot/mcp.json

Want your preferred agent supported?

If your agent isn't listed, it's easy to add. Just tell us the config file path — or submit the adapter yourself (usually ~10 lines of Go).

How it works

A predictable, auditable pipeline. Read everything, normalize to one shape, merge, write atomically, back up the originals.

  1. Read — each adapter reads its config and normalizes to a common NormalizedServer struct (type, command, args, env, url, headers).
  2. Merge — servers are deduplicated by name. Conflicts surface interactively with side-by-side diffs.
  3. Write — adapters convert back to each agent's native format and write atomically (.tmp → rename).
  4. Backup — every modified file is copied to filename.old.json first (toggle with --no-maintain).
conflict resolution
──────────────────────────────────────────────
Conflict 1 of 1: "playwright"
──────────────────────────────────────────────
[A] Claude Desktop (higher priority)
type: stdio
command: npx @playwright/mcp@latest
[B] GitHub Copilot CLI (lower priority)
type: stdio
command: npx @playwright/mcp@latest
> Keep "playwright" from Claude Desktop
Use "playwright" from GitHub Copilot CLI
Rename and keep both
Exclude from this sync
Delete from all agents

Open source. Community-driven.

MIT licensed. Add an agent in ~10 lines of Go, file a bug, or just say hi.