Catalog PyPI
PACKAGE EXPLORERView in registry

agentsync-cli

PyPI

Sync MCP server configs and rules across AI coding agents

ai-agentsclaudecodexcursordeveloper-toolsmcpsync
Versions collected1
Direct dependencies8From release 0.1.0
Last observed20 Oct, 23:31 UTC

README

Version 0.1.0 documentation

agentsync

Sync MCP server configs and rules across AI coding agents.

CI PyPI License: MIT Python 3.9+


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 Notion vs notion from 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

AgentMCP FormatRules FormatStatus
Claude CodeJSONMarkdownSource
CursorJSONMDCTarget
CodexTOMLMarkdownTarget
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

OptionDescription
--config, -c PATHPath to agentsync.yaml (default: auto-discover)
--quiet, -qMinimal output
--versionShow version and exit
--helpShow 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

CodeMeaning
0Success
1Runtime error (sync failed, validation failed)
2Configuration 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:

  1. Create src/agentsync/adapters/youragent.py — implement TargetAdapter
  2. Register it in cli.py (create_targets)
  3. Add the type to KNOWN_TARGET_TYPES in config.py
  4. Write tests in tests/test_adapter_youragent.py
  5. Update this README

See CONTRIBUTING.md for detailed guidelines and the full adapter interface.

Roadmap

VersionFocus
v0.1Core sync: Claude → Cursor, Codex, Antigravity
v0.2Plugin system for custom adapters
v0.3Watch mode (auto-sync on file change)
v0.4Windsurf, Zed, Cline adapters (community)
v1.0Stable 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

MIT

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.1.020 Feb 20268

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
spyrae/agentsync

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 23:31 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:b4d205deed4c454aae055d08d1cdc2f063e74874f31330f90695990a1416702f