Skip to main content

Sync MCP (Model Context Protocol) configurations across AI tools

Project description

mcp-sync

Sync MCP (Model Context Protocol) configurations across AI tools.

Overview

mcp-sync is a command-line tool that helps you manage and synchronize MCP server configurations across different AI coding tools like Claude Desktop, Claude Code, Cline, VS Code extensions, and more.

Features

  • Auto-discovery: Automatically finds MCP configs on your system
  • Manual registration: Add custom config file locations for future-proofing
  • Global & project configs: Supports both user-wide and project-specific servers
  • Conflict resolution: Smart merging with project configs taking priority
  • Dry-run mode: Preview changes before applying them
  • Cross-platform: Works on macOS, Windows, and Linux

Installation

Quick Usage (Recommended)

uvx mcp-sync status
uvx mcp-sync sync --dry-run

Persistent Installation

uv tool install mcp-sync
mcp-sync status

Development Install

git clone <repo-url>
cd mcp-sync
./scripts/setup.sh    # Installs dependencies and git hooks automatically

Quick Start

  1. Scan for existing configs:

    mcp-sync scan
    
  2. Check current status:

    mcp-sync status
    
  3. Add a server to global config:

    mcp-sync add-server filesystem
    # Follow prompts to configure
    
  4. Preview sync changes:

    mcp-sync diff
    mcp-sync sync --dry-run
    
  5. Sync configurations:

    mcp-sync sync
    

Commands

Discovery & Status

  • mcp-sync scan - Auto-discover known MCP configs
  • mcp-sync status - Show sync status
  • mcp-sync diff - Show config differences

Config Location Management

  • mcp-sync add-location <path> [--name <alias>] - Register custom config file
  • mcp-sync remove-location <path> - Unregister config location
  • mcp-sync list-locations - Show all registered config paths

Sync Operations

  • mcp-sync sync - Sync all registered configs
  • mcp-sync sync --dry-run - Preview changes without applying
  • mcp-sync sync --global-only - Sync only global configs
  • mcp-sync sync --project-only - Sync only project configs
  • mcp-sync sync --location <path> - Sync specific location only

Server Management

  • mcp-sync add-server <name> - Add MCP server to sync (interactive prompts)
  • mcp-sync add-server <name> --command <cmd> --args <args> --env <vars> --scope <global|project> - Add server with inline parameters
  • mcp-sync remove-server <name> - Remove server from sync (interactive prompts)
  • mcp-sync remove-server <name> --scope <global|project> - Remove server with inline scope
  • mcp-sync list-servers - Show all managed servers

Migration

  • mcp-sync vacuum - Import MCP servers from discovered configs
    • --auto-resolve <first|last> choose conflict resolution automatically
    • --skip-existing avoid overwriting servers already in global config

Adding Servers: When adding a server, you need to provide:

  • Command: The executable to run (e.g., python, npx, node)
  • Arguments: Command-line arguments (comma-separated, optional)
  • Environment: Environment variables as KEY=value pairs (comma-separated, optional)
  • Scope: Whether to add to global config (synced everywhere) or project config (this project only)

Interactive example:

mcp-sync add-server filesystem
# Prompts for: scope, command, args, env vars

Automated example:

mcp-sync add-server filesystem --command npx --args "-y,@modelcontextprotocol/server-filesystem,/home/user/docs" --scope global

Project Management

  • mcp-sync init - Create project .mcp.json
  • mcp-sync template - Show template config

Client Management

  • mcp-sync list-clients - Show all supported clients and their detection status
  • mcp-sync client-info [client-id] - Show detailed client information and paths
  • mcp-sync edit-client-definitions - Edit user client definitions to add custom clients

Configuration Hierarchy

mcp-sync uses a three-tier configuration system:

  1. Global Config (~/.mcp-sync/global.json)

    • Personal development servers
    • Synced across all tools
  2. Project Config (.mcp.json in project root)

    • Project-specific servers
    • Version controlled with your project
    • Takes priority over global config
  3. Tool Configs (Auto-discovered locations)

    • Claude Desktop, VS Code, Cline, etc.
    • Updated by sync operations

Supported Tools

mcp-sync uses a configuration-driven approach to support AI tools and editors. Client definitions are managed through JSON configuration files.

Built-in client support:

  • Claude Desktop - Official Claude Desktop application
  • Claude Code - Claude CLI for code editing
  • Cline - VS Code extension for AI assistance
  • Roo - Roo VS Code extension for AI assistance
  • VS Code User Settings - VS Code global user settings
  • Cursor - Cursor AI code editor
  • Continue - Continue VS Code extension

Run mcp-sync list-clients to see which clients are detected on your system, or mcp-sync client-info <client-id> for detailed information about specific clients.

Adding custom clients: Users can add their own client definitions by running mcp-sync edit-client-definitions. This creates ~/.mcp-sync/client_definitions.json where custom client configurations can be added. User definitions take precedence over built-in ones, allowing customization and adding support for new tools without modifying the codebase.

Example Workflow

# 1. Initialize project config
mcp-sync init

# 2. Add project-specific server
mcp-sync add-server database
# Choose "2. Project config"
# Command: python
# Args: /path/to/db-server.py
# Env: DB_URL=postgresql://...

# 3. Add global development server
mcp-sync add-server filesystem
# Choose "1. Global config"
# Command: npx
# Args: -y, @modelcontextprotocol/server-filesystem, /home/user

# 4. Sync to all tools
mcp-sync sync

# 5. Check status
mcp-sync status

Configuration File Format

MCP Server Configuration

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/path/to/directory"
      ]
    },
    "custom-server": {
      "command": "python",
      "args": ["/path/to/server.py"],
      "env": {
        "API_KEY": "your-api-key"
      }
    }
  }
}

Development

Requirements

  • Python 3.12+
  • uv package manager

Setup

git clone <repo-url>
cd mcp-sync
uv sync
uv pip install -e .

Code Quality

uv run ruff check .     # Linting
uv run ruff format .    # Formatting
uv run pytest          # Tests (when available)

Running Tests

Tests require the package to be on PYTHONPATH. Either install it in editable mode:

uv pip install -e .
uv run pytest

or set PYTHONPATH manually when invoking pytest:

PYTHONPATH=$PWD uv run pytest

License

[License details here]

Contributing

[Contributing guidelines here]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_sync-0.4.2.tar.gz (59.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_sync-0.4.2-py3-none-any.whl (30.2 kB view details)

Uploaded Python 3

File details

Details for the file mcp_sync-0.4.2.tar.gz.

File metadata

  • Download URL: mcp_sync-0.4.2.tar.gz
  • Upload date:
  • Size: 59.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mcp_sync-0.4.2.tar.gz
Algorithm Hash digest
SHA256 2d531eb017639344a8b8917bb8376847db66611ea9d67e910ac226c0867e3ad4
MD5 80d9570b35fcde49addb81ea2e3f2be7
BLAKE2b-256 e0226b9ed8152835d51e365d83e4c99ebb4b96f240973f719935b5fd780ac979

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_sync-0.4.2.tar.gz:

Publisher: publish.yml on ztripez/mcp-sync

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_sync-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: mcp_sync-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 30.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mcp_sync-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 61846760743269a1dd0959ed85d8b2ad413cca07c8a345b484845709f2186633
MD5 a4aeb2454bbeefc467c2eea94c7f0d45
BLAKE2b-256 2ebb662bbf47928e8a5bc0458eebbc59b2b81ce4b3109e0420724a6eec49256e

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_sync-0.4.2-py3-none-any.whl:

Publisher: publish.yml on ztripez/mcp-sync

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page