cat > README.md << 'EOF'
A cross-platform utility for managing Model Context Protocol (MCP) server configurations across Claude, Gemini, Codex, and other AI systems.
Based on the battle-tested mcp_toggle.py
script with enhanced architecture and GUI interface.
The graphical interface is complete and working with all major features operational. The application provides a modern, user-friendly way to manage MCP servers without touching JSON files.
- π₯οΈ Graphical User Interface - Modern cross-platform GUI with PyQt6/tkinter
- π Server Configuration Editor - Edit server configurations directly in the GUI
- π§ Field Editor System - Dynamic field editing with real-time validation
- π Project Discovery - Automatically discover MCP servers from project .claude.json files
- ποΈ Bulk Server Deletion - Delete multiple servers with confirmation dialog
- β Enhanced Server Addition - Add servers with improved JSON validation and cleanup
- πΎ Advanced Backup System - Organized backups in dedicated directory with GUI integration
- π Server Restore - Restore servers from backup files including disabled servers
- Interactive CLI Management - Full-featured interactive mode for server management
- Multi-Client Support - Manages
.claude.json
,.gemini/settings.json
, and Codex configuration files - Server Enable/Disable - Toggle servers on/off without losing configurations
- Master Checkbox - Bulk select/deselect all servers at once
- Configuration Syncing - Synchronize servers between Claude, Gemini, and Codex
- Automatic Backups - Timestamped backups before any changes
- Preset Management - Save and load project-specific configurations
- Quick Preset Modes - Minimal, web dev, fullstack, and testing presets
- JSON Server Addition - Add new servers by pasting JSON configurations
- Cross-Platform Support - Works on Windows, macOS, and Linux
- Command Line Interface - Full CLI with individual commands
- Configuration Validation - Validate config file structure
- Visual Status Indicators - Clear enabled/disabled status with colors
- Keyboard Shortcuts - Professional keyboard navigation (Ctrl+S to save, Esc to cancel)
- Visual Polish - Blue selection highlights, orange unsaved indicators, red validation errors
- Tkinter Support - Alternative GUI backend for systems without Qt
- Health Monitoring - Real-time server connection status
- Import/Export - Backup and restore entire configurations
One-command installation:
curl -fsSL https://raw.githubusercontent.com/holstein13/mcp-config-manager/master/install.sh | bash
The installer will:
- β Check system requirements automatically
- π Ask where to install (with smart defaults)
- π Set up isolated Python environment
- π Add
mcp
command to your PATH - π₯οΈ Create desktop shortcuts (Linux)
- ποΈ Provide easy uninstall option
# Launch GUI (recommended)
mcp gui
# or use the alias
mcp-gui
# Interactive CLI mode
mcp interactive
# Check status
mcp status
# Show all options
mcp --help
# Uninstall easily
mcp uninstall
Click to expand manual installation steps
- Python 3.8 or higher
- Claude Code CLI, Gemini CLI, and/or Codex installed
- PyQt6 (optional, for better GUI experience):
pip install PyQt6
git clone https://github.com/holstein13/mcp-config-manager.git
cd mcp-config-manager
pip install -e .
# Optional: Install PyQt6 for better GUI experience
pip install PyQt6
# Set up development environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements-dev.txt
pip install -e .
# Run tests
pytest
Launch the graphical interface:
mcp-config-manager gui
For easier launching on macOS, you can create a native .app bundle that can be double-clicked, added to your Dock, or launched via Spotlight:
# Install py2app (one-time setup)
pip install py2app
# Build the .app bundle (from project root)
./build_app.sh
# Or manually:
python3 scripts/build/setup_app.py py2app --dist-dir artifacts/dist
# The app will be created in artifacts/dist/
# You can then:
# 1. Double-click "MCP Config Manager.app" to launch
# 2. Drag it to /Applications for system-wide access
# 3. Add it to your Dock for quick access
Note: The .app bundle is completely self-contained with Python and all dependencies bundled. After code changes, rebuild the app with the same command above.
The GUI provides:
- π₯οΈ Visual server list with checkboxes
- β Master checkbox for bulk operations (β/β/β states)
- π Server Detail Editor - Click any server to edit its configuration
- π§ Dynamic Field Editors - Smart editors for each field type:
- Text fields for strings and commands
- Number fields with validation
- Boolean toggles for true/false values
- Array editors for list management
- Object editors for nested configurations
- π Project Discovery:
- Discover button scans for project .claude.json files
- Automatically finds MCP servers in your projects
- Smart duplicate detection and consolidation
- Location-aware server management (Global vs Project)
- β Real-time Validation - Immediate feedback on configuration errors
- π¨ Visual Feedback:
- Blue highlights for selected servers
- Orange indicators for unsaved changes
- Red borders for validation errors
- Empty state guidance when no server selected
- πΎ Backup & Restore:
- Backup button creates timestamped backups
- Restore button lists and restores previous backups
- Automatic backups before any changes
- π Mode switching between Claude/Gemini/Codex/All
- πΎ Save button with visual feedback
- β Add new servers via JSON with enhanced validation
- ποΈ Bulk delete servers with confirmation
- πΎ Quick backup and restore with GUI feedback
- π Preset management dialog
- β¨οΈ Full keyboard shortcuts (Ctrl+S to save, Esc to cancel)
Launch the command-line interactive interface:
mcp-config-manager interactive
This gives you the complete interface from the original mcp_toggle.py script with:
- β /β Visual server status
- π Real-time mode switching (Claude/Gemini/Codex/All)
- π Preset management
- β Add servers by pasting JSON
- π― Quick preset modes (minimal, web dev, etc.)
# Show current status
mcp-config-manager status
# Enable/disable specific servers
mcp-config-manager enable server-name
mcp-config-manager disable server-name
# Bulk operations
mcp-config-manager enable-all
mcp-config-manager disable-all
# Backup and restore
mcp-config-manager backup # Create timestamped backup
mcp-config-manager restore backup-file.json # Restore from backup
# Server management
mcp-config-manager add-server server-name config.json # Add server from file
mcp-config-manager delete-server server-name # Delete server permanently
# Apply preset modes
mcp-config-manager preset minimal # Only context7 + browsermcp
mcp-config-manager preset webdev # + playwright
mcp-config-manager preset fullstack # + supabase, clerk, railway
# Validate configurations
mcp-config-manager validate ~/.claude.json
The tool supports four modes:
- Claude only (
--mode claude
) - Only manages.claude.json
- Gemini only (
--mode gemini
) - Only manages.gemini/settings.json
- Codex only (
--mode codex
) - Only manages Codex configurations - All (synced) (
--mode all
) - Keeps all configs synchronized
The MCP Config Manager GUI showing server configuration editing with visual feedback
π§ MCP Config Manager - Interactive Mode
==================================================
π Current Status:
------------------------------
Mode: π All CLIs (synced)
β
ACTIVE servers (will run):
[1] context7
[2] browsermcp
[3] playwright
β DISABLED servers (won't run):
[d1] supabase
[d2] clerk
π Actions:
[1-N] Disable active server
[d1-N] Enable disabled server
[a] Enable ALL
[n] Disable ALL
[m] Minimal (context7 + browsermcp)
[w] Web dev (+ playwright)
[+] β Add new MCP server
[p] π Preset management
[c] π Change CLI mode
[s] Save and exit
[q] Quit without saving
Action:
src/mcp_config_manager/
βββ core/
β βββ config_manager.py # Main configuration management
β βββ server_manager.py # Server enable/disable logic
β βββ presets.py # Preset management
βββ parsers/
β βββ claude_parser.py # Claude config parsing
β βββ gemini_parser.py # Gemini config parsing
β βββ base_parser.py # Parser interface
βββ utils/
β βββ backup.py # Backup functionality
β βββ sync.py # Config synchronization
β βββ file_utils.py # File path utilities
βββ gui/ # GUI components
β βββ main_window.py # Main application window
β βββ controllers/ # GUI-library bridge
β β βββ server_controller.py
β βββ widgets/ # UI components
β β βββ server_list.py
β β βββ server_details_panel.py
β β βββ field_editors/ # Dynamic field editors
β β βββ base.py
β β βββ text.py
β β βββ number.py
β β βββ boolean.py
β β βββ array.py
β β βββ object.py
β βββ dialogs/ # Modal dialogs
βββ cli.py # Command line interface
The field editor system provides dynamic, type-specific editors for server configuration fields:
- Base Editor (
field_editors/base.py
): Abstract base class defining the interface - Type-Specific Editors: Specialized editors for each data type
- Factory Pattern:
FieldEditorFactory
creates appropriate editor based on field type - Validation: Real-time validation with visual feedback
- Text Editor - Single/multi-line text fields for strings and commands
- Number Editor - Integer/float fields with min/max validation
- Boolean Editor - Checkbox for true/false values
- Array Editor - List management with add/remove/reorder capabilities
- Object Editor - Nested object editing with key-value pairs
- Orange Border - Field has been modified (unsaved changes)
- Red Border - Validation error with 2px width
- Light Red Background - Additional error indication (#FFF5F5)
- Tooltip - Error message on hover for invalid fields
# The ServerDetailsPanel automatically creates appropriate editors
field_editor = FieldEditorFactory.create_editor(
field_name="command",
field_value="npx @modelcontextprotocol/server-sqlite",
field_type="string",
parent=self
)
# Connect signals for change tracking
field_editor.value_changed.connect(self.on_field_changed)
field_editor.validation_error.connect(self.on_validation_error)
The following new functions have been added across recent commits:
create_backup()
- Create timestamped backups and return GUI-compatible resultsadd_server()
- Add a server with the interface expected by ServerController- Enhanced error handling - Improved error reporting for GUI integration
add_server_with_name()
- Add server with explicit name and configurationdelete_server()
- Permanently delete servers from configurations and storageupdate_server_config()
- Update existing server configurations- Enhanced mode support - Better handling of 'claude', 'gemini', 'codex', 'all' modes
backup_all_configs()
- Create organized backups in dedicated directorylist_backups()
- List available backup files by typerestore_backup()
- Restore configurations from backup files- Organized storage - Backups now stored in dedicated
backups/
directory
add_server()
- GUI integration for server additiondelete_servers()
- Bulk deletion with confirmation dialog- Enhanced event handling - Better signal/slot management for GUI updates
DeleteServersDialog
- Bulk deletion with safety confirmations- Enhanced
AddServerDialog
- JSON validation and cleanup features BackupRestoreDialog
- GUI for backup and restore operations
- JSON cleanup - Remove comments and fix malformed JSON in AddServerDialog
- Enhanced validation - Better error reporting for invalid JSON configurations
- Batch processing - Support for adding multiple servers from single JSON input
# Clone the repository
git clone https://github.com/holstein13/mcp-config-manager
cd mcp-config-manager
# Set up development environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements-dev.txt
pip install -e .
# Run tests
pytest
# Run the application
mcp-config-manager interactive
- Claude config:
~/.claude.json
- Gemini config:
~/.gemini/settings.json
- Codex config:
~/.codex.json
- Presets:
~/.mcp_presets.json
- Disabled servers:
~/.mcp_disabled_servers.json
(in user's home directory) - Organized backups:
~/Documents/MCP Config Manager/backups/
with timestamped files:claude-backup-YYYYMMDD_HHMMSS.json
gemini-backup-YYYYMMDD_HHMMSS.json
disabled-backup-YYYYMMDD_HHMMSS.json
- Legacy backups:
~/.claude.json.backup.YYYYMMDD_HHMMSS
- Interactive CLI interface
- Multi-client support (Claude + Gemini)
- Server enable/disable with storage
- Configuration synchronization
- Automatic backups
- Preset management
- JSON server addition
- Command line interface
- Cross-platform GUI framework (PyQt6/tkinter)
- Main server management window with checkboxes
- Master checkbox for bulk operations
- Preset management dialog
- Settings and configuration dialogs
- Add server via JSON paste
- Keyboard shortcuts and professional UX
- Visual status indicators and feedback
Current focus:
- β macOS platform testing and optimization
- β³ Windows platform testing
- β³ Linux platform testing
- β³ Performance optimization for large server lists
- β³ PyInstaller packaging
Completed:
- β Server Detail View - Click server name to edit configuration in side panel
- β Field Editors - Visual editors for each configuration field type
- β Real-time Validation - Immediate feedback on configuration changes
Next features:
- Health Monitoring - Real-time server connection status
- Import/Export - Backup and restore configurations
- Packaged installers (Windows MSI, macOS DMG, Linux AppImage)
- Auto-updater mechanism
- Plugin architecture for extensions
- IDE integrations (VS Code, IntelliJ, etc.)
If you're using the original mcp_toggle.py
script:
- Your configs are preserved - The tool uses the same file locations
- Your presets carry over -
~/.mcp_presets.json
is used directly - Same functionality - All original features are available in interactive mode
- Enhanced capabilities - Plus new CLI commands and better error handling
We welcome contributions! The original mcp_toggle.py
script was a fantastic foundation, and we're building on that success.
- π¨ GUI Development - Help build the cross-platform interface
- π Server Discovery - Auto-detect available MCP servers
- π§ͺ Testing - Add test coverage for all components
- π Documentation - Improve guides and examples
- π Bug Reports - Found an issue? Let us know!
MIT License - see LICENSE file for details.
- Original
mcp_toggle.py
script that inspired this project - The Anthropic team for developing the Model Context Protocol
- The open source community for feedback and contributions
Ready to get started? Run mcp-config-manager interactive
and experience the full power of MCP server management!