Skip to content

Migration Guide ​

How to migrate your MCP configurations to MCP Server Manager.

Migrating from Existing Clients ​

MCP Server Manager can import configurations from existing MCP clients automatically.

From Claude Desktop ​

bash
# Import all servers from Claude Desktop
mcpsm import --from claude

This reads from:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

From Cursor ​

bash
mcpsm import --from cursor

This reads from:

  • All platforms: ~/.cursor/mcp.json

From Windsurf ​

bash
mcpsm import --from windsurf

This reads from:

  • All platforms: ~/.codeium/windsurf/mcp_config.json

From VS Code ​

bash
mcpsm import --from vscode

This reads from:

  • macOS: ~/Library/Application Support/Code/User/mcp.json
  • Linux: ~/.config/Code/User/mcp.json
  • Windows: %APPDATA%\Code\User\mcp.json

Migrating from JSON Files ​

From a backup file ​

bash
mcpsm import ~/path/to/backup.json

From Claude format JSON ​

If you have a claude_desktop_config.json file:

bash
mcpsm import --format claude ~/path/to/claude_desktop_config.json

From mcpsm export format ​

bash
mcpsm import ~/path/to/mcpsm-export.json

Migrating to a New Machine ​

Step 1: Export from old machine ​

bash
# On the old machine
mcpsm export -o mcp-backup.json

Step 2: Transfer the file ​

Copy mcp-backup.json to your new machine via:

  • USB drive
  • Cloud storage (Dropbox, Google Drive, etc.)
  • scp or other file transfer

Step 3: Import on new machine ​

bash
# On the new machine
npm install -g mcp-server-manager
mcpsm import ~/path/to/mcp-backup.json

Step 4: Re-authenticate remote servers ​

OAuth tokens are not exported for security. Re-authenticate any remote servers:

bash
mcpsm auth login <remote-server-name>

Step 5: Sync to clients ​

bash
mcpsm clients enable claude   # or your preferred client
mcpsm clients sync

Migrating Profiles ​

Profiles are included in the export:

bash
# Export includes profiles
mcpsm export -o full-backup.json

# Import restores profiles
mcpsm import full-backup.json

# List restored profiles
mcpsm profile list

Migrating Tool Filters ​

Tool filter settings are also included in exports:

bash
# Export includes tool filters
mcpsm export -o full-backup.json

# Verify after import
mcpsm tools list

Partial Migration ​

Import only specific servers ​

After importing, you can remove unwanted servers:

bash
mcpsm import --from claude
mcpsm remove unwanted-server-1
mcpsm remove unwanted-server-2

Merge configurations ​

Import will add new servers without removing existing ones:

bash
# Start with some servers
mcpsm add my-server --type stdio --command "..."

# Import more from Claude (won't remove my-server)
mcpsm import --from claude

If there's a name conflict, the import will ask if you want to:

  • Skip the duplicate
  • Overwrite the existing server
  • Rename the imported server

Export Formats ​

Default format (mcpsm) ​

bash
mcpsm export -o backup.json
json
{
  "version": "1.0",
  "servers": [...],
  "remoteServers": [...],
  "profiles": [...],
  "toolFilters": {...},
  "settings": {...}
}

Claude Desktop format ​

bash
mcpsm export --format claude -o claude-config.json
json
{
  "mcpServers": {
    "server-name": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"]
    }
  }
}

This format can be directly used as claude_desktop_config.json.

Handling Secrets ​

Environment variables ​

Servers using environment variables will have them exported:

json
{
  "env": {
    "API_KEY": "your-secret-key"
  }
}

Security tip: Review and update secrets after importing on a new machine.

OAuth tokens ​

OAuth tokens are not exported for security reasons. After migrating:

bash
# Re-authenticate remote servers
mcpsm auth login remote-server-1
mcpsm auth login remote-server-2

Bearer tokens ​

Bearer tokens for HTTP/SSE servers are exported. Consider:

  • Generating new tokens after migration
  • Using environment variables for tokens

Troubleshooting Migration ​

Import says "no servers found" ​

The source file might be empty or in an unexpected format:

bash
# Check the file content
cat ~/path/to/file.json | jq '.'

# Try specifying format
mcpsm import --format claude ~/path/to/file.json

Servers don't work after import ​

The server commands might not exist on the new machine:

bash
# Test all servers
mcpsm test

# Install missing dependencies
npm install -g @modelcontextprotocol/server-filesystem
# etc.

Client paths are different ​

If you migrated between different operating systems, update paths:

bash
# Edit server with incorrect path
mcpsm edit filesystem

# Or edit config directly
mcpsm config

Duplicate server names ​

If import fails due to duplicates:

bash
# List existing servers
mcpsm list

# Remove the duplicate first
mcpsm remove existing-server-name

# Then import
mcpsm import backup.json

Best Practices ​

1. Regular backups ​

bash
# Add to crontab or schedule
mcpsm export -o ~/backups/mcp-$(date +%Y%m%d).json

2. Version control your config ​

bash
mcpsm export -o ~/dotfiles/mcp-config.json
cd ~/dotfiles && git add mcp-config.json && git commit -m "Update MCP config"

3. Document server dependencies ​

Keep a list of required npm packages for your servers:

bash
# servers-dependencies.md
- @modelcontextprotocol/server-filesystem
- @modelcontextprotocol/server-github
- etc.

4. Test after migration ​

Always verify your configuration works:

bash
mcpsm doctor
mcpsm test

Released under the MIT License.