@hungv47/syncthis
v0.2.2
Published
Keep your AI tools in sync. Cross-pollinate MCP server configs across 11 coding agents (Claude, Cursor, Codex, Gemini, Kimi, OpenCode, OpenClaw, Hermes, Windsurf, Antigravity, Copilot). Skills delegated to npx skills. Install with mcpm or npx skills add;
Downloads
593
Maintainers
Readme
syncthis


Keep your AI coding agents in sync.
A sync layer for MCP server configs across 11 AI coding agents — Claude Code, Cursor, Codex, Gemini CLI, Kimi CLI, OpenCode, OpenClaw, Hermes, Windsurf, Antigravity, GitHub Copilot CLI. Install MCPs with whatever tool you prefer — mcpm, claude mcp add, etc. — then run syncthis run to mirror them everywhere.
For skills, syncthis delegates to vercel-labs/skills, which supports 55 agents.
What syncthis is — and isn't
| | |
|---|---|
| ✅ syncs MCP server configs across 11 coding agents | ❌ installs MCP servers (use mcpm, claude mcp add, etc.) |
| ✅ refreshes skills via npx skills update -y | ❌ installs skills from registries (use npx skills add) |
| ✅ supports one-way mirror and fan-out from one agent | ❌ starts desktop-owned MCP servers like Paper/Pencil |
| ✅ removes one MCP server across every supported agent | ❌ treats legacy/unmanaged MCP files as source of truth |
Install
bun install -g @hungv47/syncthis
# or
npm install -g @hungv47/syncthisHow it works
# 1. install MCP servers / skills with your preferred tool
mcpm install github
npx skills add vercel-labs/agent-skills --skill frontend-design
# 2. mirror everything to every agent
syncthis runThat's it. No config file, no source-of-truth to maintain.
For removals, do not use union sync first. Remove from a clean source or use syncthis rm; otherwise a server that still exists in one agent will be propagated back to the others.
Commands
syncthis # interactive picker (or HELP if non-TTY)
syncthis run [--dry-run] [--no-skills] # MCP + skills (alias for sync)
syncthis sync [--dry-run] [--no-skills] # same as run
syncthis mcp [--dry-run] # MCP only
syncthis skills # skills only — `npx skills update -y`
syncthis <from> <to> [--yes] [--dry-run] # one-way mirror MCP from one agent to another
syncthis from <agent> --all [--yes] [--dry-run] # mirror one agent to every other agent
syncthis rm <server> --all [--yes] [--dry-run] # remove one MCP server everywhere
syncthis doctor # coverage + conflict report
syncthis help--dry-run prints what would change without writing.
--no-skills skips the skills update phase.
--all is required for fan-out and remove-all commands.
--yes skips the confirmation prompt for destructive commands.
Supported agents
| Agent | Config file |
|---|---|
| claude-code | ~/.claude.json (merges top-level + every projects.*.mcpServers scope) |
| cursor | ~/.cursor/mcp.json |
| codex | ~/.codex/config.toml |
| gemini-cli | ~/.gemini/settings.json |
| kimi-cli | ~/.kimi/mcp.json |
| antigravity | ~/.gemini/antigravity/mcp_config.json |
| github-copilot | ~/.copilot/mcp-config.json (override via $COPILOT_HOME) |
| windsurf | ~/.codeium/windsurf/mcp_config.json |
| opencode | ~/.config/opencode/opencode.json |
| openclaw | ~/.openclaw/openclaw.json (override via $OPENCLAW_CONFIG_PATH) |
| hermes-agent | ~/.hermes/config.yaml |
What syncthis run does
- Reads MCP servers from each agent's config. For Claude, merges top-level + every per-project scope.
- Computes the union. Any server present in any agent gets propagated to every agent.
- Detects conflicts. If the same server name has different configs across agents, syncthis leaves each agent's own version untouched and reports the conflict — you resolve manually.
- Refreshes skills by running
npx skills update -y. Skills sync is delegated tovercel-labs/skills, which handles 55 agents.
Every target file is backed up to <file>.syncthis.bak on the first write so you can recover if something goes wrong.
Directional sync
syncthis claude-code codex --dry-runMirrors MCP servers from claude-code to codex (one-way, destructive). Shows a diff and asks for confirmation before writing — pass --yes to skip the prompt. The conflict policy of the union sync does NOT apply here: this is an explicit overwrite of to's config with from's.
To fan out one clean source to every other supported agent:
syncthis from antigravity --all --dry-run
syncthis from antigravity --all --yesConflict example (union sync)
$ syncthis run
read 3 server name(s) across 11 agent(s); 2 synced, 1 conflict(s)
✓ claude-code ~/.claude.json
✓ cursor ~/.cursor/mcp.json
...
1 conflict(s) — left each agent's own copy untouched:
~ github
in claude-code
in cursor
resolve by deleting the version you don't want, then re-run sync.Removing a server
Use the explicit remove command:
syncthis rm executor --all --dry-run
syncthis rm executor --all --yessyncthis run is a union sync. If executor still exists in one agent, union sync will re-propagate it. syncthis rm avoids that by deleting the named server from every supported agent in one pass.
Desktop-owned servers
Paper and Pencil can be desktop-owned: the config may be synced, but the server only responds when the desktop client starts it. syncthis only syncs config; it does not launch those apps.
Unmanaged MCP files
syncthis doctor warns when known side files contain MCP servers that syncthis does not write, such as VS Code user MCP config or the legacy ~/.config/mcp/servers.json. Treat those as app-owned or legacy files, not the canonical source for coding-agent sync.
Skills
Skills are handled entirely by npx skills (Vercel Labs). syncthis runs npx skills update -y as part of run/sync to refresh registry-installed skills. For installing skills, use npx skills add <repo> directly. See skills.sh for the registry.
License
MIT
