Sync MCP server configs and rules across AI coding agents
Project description
agentsync
Sync MCP server configs and rules across AI coding agents.
The Problem
You use multiple AI coding agents — Claude Code, Cursor, Codex, Gemini. Each stores MCP server configs in its own format (JSON, TOML) and its own location. Keeping them in sync manually is tedious and error-prone.
The Solution
agentsync takes a single source of truth (your Claude Code config) and syncs it to all your agents with one command.
┌──────────────┐
│ Claude Code │ Source of Truth
│ .claude.json│ ─── MCP Servers
│ .mcp.json │ ─── Rules (CLAUDE.md)
│ CLAUDE.md │
└──────┬───────┘
│ agentsync sync
├──────────────────┐─────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Cursor │ │ Codex │ │ Antigravity │
│ mcp.json │ │ config.toml │ │mcp_config.json│
│ project.mdc │ │ AGENTS.md │ │ │
└──────────────┘ └──────────────┘ └──────────────┘
Installation
pip install agentsync-cli # pip
pipx install agentsync-cli # pipx (recommended for CLI tools)
uvx agentsync-cli # uv (run without installing)
Quick Start
agentsync init # Create agentsync.yaml config
agentsync sync # Sync to all agents
agentsync validate # Verify everything is correct
Features
- MCP server sync — JSON ↔ TOML automatic conversion
- Rules sync — Markdown → filtered Markdown / MDC with frontmatter
- Case-insensitive deduplication — handles
Notionvsnotionfrom different sources - Dry-run mode — preview changes before writing
- Backups — automatic backups before every write
- Validation — structural checks, consistency, duplicate detection
- Extensible — adapter-based architecture for adding new agents
Supported Agents
| Agent | MCP Format | Rules Format | Status |
|---|---|---|---|
| Claude Code | JSON | Markdown | Source |
| Cursor | JSON | MDC | Target |
| Codex | TOML | Markdown | Target |
| Antigravity (Gemini) | JSON | — | Target |
Configuration
Create agentsync.yaml in your project root:
version: 1
source:
type: claude
global_config: ~/.claude.json
project_mcp: .mcp.json
rules_file: CLAUDE.md
targets:
cursor:
type: cursor
mcp_path: ~/.cursor/mcp.json
rules_path: .cursor/rules/project.mdc
exclude_servers: []
codex:
type: codex
config_path: ~/.codex/config.toml
rules_path: AGENTS.md
exclude_servers: [codex]
antigravity:
type: antigravity
mcp_path: ~/.gemini/antigravity/mcp_config.json
protocols: [stdio]
rules:
exclude_sections:
- "MCP Servers"
- "Context Management & Agents"
CLI Reference
Global Options
| Option | Description |
|---|---|
--config, -c PATH |
Path to agentsync.yaml (default: auto-discover) |
--quiet, -q |
Minimal output |
--version |
Show version and exit |
--help |
Show help and exit |
Commands
# Sync — push source configs to targets
agentsync sync # Full sync (MCP + rules)
agentsync sync --dry-run # Preview changes without writing
agentsync sync --mcp-only # Only MCP server configs
agentsync sync --rules-only # Only rules files
agentsync sync -t cursor # Sync specific target only
agentsync sync --no-backup # Skip creating backup files
# Validate — check target configs match source
agentsync validate # Full validation
agentsync validate -v # Verbose (show passed checks too)
agentsync validate -t codex # Validate specific target only
# Init — create config
agentsync init # Create agentsync.yaml
agentsync init --force # Overwrite existing config
# Status — show sync state
agentsync status # Source info, target health, drift
Exit Codes
| Code | Meaning |
|---|---|
0 |
Success |
1 |
Runtime error (sync failed, validation failed) |
2 |
Configuration error (missing config, bad YAML, unknown adapter) |
How It Works
agentsync sync
│
├─ Load config (agentsync.yaml)
├─ Read source (Claude Code)
│ ├─ ~/.claude.json → global MCP servers
│ ├─ .mcp.json → project MCP servers
│ └─ CLAUDE.md → rules sections
│
├─ Deduplicate (case-insensitive)
├─ Filter (exclude_servers, exclude_sections, protocols)
│
└─ Generate + Write per target
├─ Cursor: mcp.json + project.mdc (MDC frontmatter)
├─ Codex: config.toml (marker-based) + AGENTS.md
└─ Antigravity: mcp_config.json (stdio-only)
Adding an Adapter
agentsync is designed for extension. To add support for a new AI agent:
- Create
src/agentsync/adapters/youragent.py— implementTargetAdapter - Register it in
cli.py(create_targets) - Add the type to
KNOWN_TARGET_TYPESinconfig.py - Write tests in
tests/test_adapter_youragent.py - Update this README
See CONTRIBUTING.md for detailed guidelines and the full adapter interface.
Roadmap
| Version | Focus |
|---|---|
| v0.1 | Core sync: Claude → Cursor, Codex, Antigravity |
| v0.2 | Plugin system for custom adapters |
| v0.3 | Watch mode (auto-sync on file change) |
| v0.4 | Windsurf, Zed, Cline adapters (community) |
| v1.0 | Stable API, full coverage |
Have an idea? Open a discussion or request an adapter.
Contributing
Contributions welcome! See CONTRIBUTING.md for guidelines.
Please review our Code of Conduct before contributing.
Changelog
See CHANGELOG.md for release history.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentsync_cli-0.1.0.tar.gz.
File metadata
- Download URL: agentsync_cli-0.1.0.tar.gz
- Upload date:
- Size: 40.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df207892df7ffd6f32e3805e75a66ee21d3f540aa0883b38ef93e5abf8364ec3
|
|
| MD5 |
1c00569fe5575172413d232a03225f9e
|
|
| BLAKE2b-256 |
7f82195210f5d009c252d9ad24d2dde617cbc4b778ba5d0c026861b754768ad2
|
Provenance
The following attestation bundles were made for agentsync_cli-0.1.0.tar.gz:
Publisher:
release.yml on spyrae/agentsync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentsync_cli-0.1.0.tar.gz -
Subject digest:
df207892df7ffd6f32e3805e75a66ee21d3f540aa0883b38ef93e5abf8364ec3 - Sigstore transparency entry: 972553805
- Sigstore integration time:
-
Permalink:
spyrae/agentsync@0c25ef67817bdcf1829b269b488b7571f38cb12a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/spyrae
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0c25ef67817bdcf1829b269b488b7571f38cb12a -
Trigger Event:
push
-
Statement type:
File details
Details for the file agentsync_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: agentsync_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 28.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04e699f915a40b20cd3a6921f86b36853a92e238fe7918b7e02351cbd4c6674c
|
|
| MD5 |
96619406bad3eae735c728adeba3b449
|
|
| BLAKE2b-256 |
2f8ab78ac0511c10c56755e4990876513ae4c19955f3198310b43fe67deb4818
|
Provenance
The following attestation bundles were made for agentsync_cli-0.1.0-py3-none-any.whl:
Publisher:
release.yml on spyrae/agentsync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentsync_cli-0.1.0-py3-none-any.whl -
Subject digest:
04e699f915a40b20cd3a6921f86b36853a92e238fe7918b7e02351cbd4c6674c - Sigstore transparency entry: 972553831
- Sigstore integration time:
-
Permalink:
spyrae/agentsync@0c25ef67817bdcf1829b269b488b7571f38cb12a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/spyrae
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0c25ef67817bdcf1829b269b488b7571f38cb12a -
Trigger Event:
push
-
Statement type: