Cross-platform command-line tool for managing MCP (Model Context Protocol) servers across editors
Project description
MCP Commander
A convenient command-line tool to manage MCP (Model Context Protocol) servers across different code editors.
๐ Features
Core MCP Operations
- Multi-Editor Support: Manage MCP servers for Claude Code, Claude Desktop, Cursor, and VS Code
- Flexible Server Management: Add, remove, and list servers across all or specific editors
- Status Monitoring: Check configuration file status and server counts
- Rich CLI Interface: Colorized output with tables and status indicators
Advanced Management
- ๐ Auto-Discovery: Automatically discover all MCP configurations on your system
- ๐ Add-All Command: Install servers to ALL discovered MCP configurations at once
- ๐ Status Dashboard: Comprehensive status overview of all editor configurations
- โ๏ธ Configuration Validation: Pydantic-based configuration validation and error handling
Developer Experience
- Type Safety: Full type hints and mypy compatibility
- Error Handling: Detailed error messages with actionable guidance
- Extensible: Easy to add support for new editors and MCP clients
- Testing: Comprehensive test coverage with pytest
๐ฆ Installation
Option 1: From PyPI (Recommended)
# Install globally
pip install mcp-commander
# Or using pipx for isolated installation
pipx install mcp-commander
Option 2: From Git Repository
# Install directly from GitHub
pip install git+https://github.com/nmindz/mcp-commander.git
# Or clone and install
git clone https://github.com/nmindz/mcp-commander.git
cd mcp-commander
pip install .
Option 3: Development Installation
git clone https://github.com/nmindz/mcp-commander.git
cd mcp-commander
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -e .
Option 4: Direct Execution (No Installation Required)
# Clone repository
git clone https://github.com/nmindz/mcp-commander.git
cd mcp-commander
# Install dependencies only
pip install -r requirements-dev.txt
# Method A: Using run.py script
python run.py --help
python run.py list
# Method B: Using shell wrapper
./mcp.sh --help
./mcp.sh discover
# Method C: Using Python module syntax (cleanest)
PYTHONPATH="src:$PYTHONPATH" python -m mcpcommander --help
PYTHONPATH="src:$PYTHONPATH" python -m mcpcommander status
Requirements
- Python 3.12 or higher
- Works on macOS, Windows, and Linux
๐ก Getting Help
Contextual Examples
Use --help --verbose (or --help -v) to see practical examples for any command:
# Show detailed help with examples
mcp add --help --verbose
mcp add-editor --help --verbose
mcp status --help --verbose
# Regular help (without examples)
mcp add --help
Configuration Examples
View all transport configuration examples:
# Show all transport examples
mcp examples
# Show examples with usage instructions
mcp examples --verbose
๐ป Commands
๐ Discovery and Status
# Discover all MCP configurations on your system
mcp discover
# Check status of all editor configurations
mcp status
# List available editors
mcp editors
๐ Server Management
# List all configured servers
mcp list
# List servers for a specific editor
mcp list claude-code
# Add server to specific editor
mcp add myserver "npx @modelcontextprotocol/server-filesystem /tmp" claude-code
# Add server to all configured editors
mcp add myserver "npx @modelcontextprotocol/server-filesystem /tmp"
๐ Environment Variable Support
# Copy environment variables from current environment
export MCP_LOG_LEVEL=info
export GIT_SIGN_COMMITS=false
mcp add git-server "npx @cyanheads/git-mcp-server" --from-env=MCP_LOG_LEVEL,GIT_SIGN_COMMITS
# Set explicit environment variables
mcp add api-server "npx my-api-server" --env=DEBUG:true --env=API_KEY:secret123
# Combine both approaches
mcp add hybrid-server "npx server" --from-env=LOG_LEVEL --env=CUSTOM_VAR:custom_value
# Use with JSON configuration (merges environment variables)
mcp add json-server '{"command": "npx", "args": ["server"], "env": {"EXISTING": "value"}}' --env=NEW_VAR:added
# Global verbose mode via environment variable
export MCP_COMMANDER_VERBOSE=1
mcp list # Will run in verbose mode automatically
Generated Configuration
When using environment variables, MCP Commander generates server configurations like this:
{
"mcpServers": {
"git-mcp-server": {
"command": "npx",
"args": ["@cyanheads/git-mcp-server"],
"env": {
"MCP_LOG_LEVEL": "info",
"GIT_SIGN_COMMITS": "false"
}
}
}
}
๐ NEW: Add to All Discovered Configurations
# Automatically discover and install to ALL MCP configurations
mcp add-all myserver "npx @modelcontextprotocol/server-filesystem /tmp"
# Works with JSON configurations too
mcp add-all myserver '{"command": "npx", "args": ["-y", "@modelcontextprotocol/server-memory"]}'
๐๏ธ Server Removal
# Remove server from all configured editors
mcp remove myserver
# Remove server from specific editor
mcp remove myserver cursor
โน๏ธ Help and Version
# Show help
mcp --help
mcp help # Same as above
# Show version
mcp version
Configuration
MCP Commander automatically manages its configuration in platform-specific user directories:
- Windows:
%APPDATA%/mcpCommander/config.json - macOS:
~/Library/Application Support/mcpCommander/config.json - Linux:
~/.config/mcpCommander/config.json
When you first run any command, mcpCommander will automatically:
- Create the user config directory
- Migrate any existing
config.jsonfrom the repository - Create a default config if none exists
The configuration defines which editors are supported and where their configuration files are located:
{
"editors": {
"claude-code": {
"config_path": "~/.claude.json",
"jsonpath": "mcpServers"
},
"claude-desktop": {
"config_path": "~/Library/Application Support/Claude/claude_desktop_config.json",
"jsonpath": "mcpServers"
},
"cursor": {
"config_path": "~/.cursor/mcp.json",
"jsonpath": "mcpServers"
}
}
}
Adding New Editors
To add support for a new editor, simply add an entry to the editors object in config.json:
{
"editors": {
"new-editor": {
"config_path": "/path/to/editor/config.json",
"jsonpath": "mcpServers"
}
}
}
The jsonpath field supports simple dot notation for nested JSON paths (e.g., "config.mcpServers").
File Structure
mcpCommander/
โโโ config.json # Editor configuration
โโโ mcp_manager.py # Main Python script
โโโ mcp # Shell wrapper script
โโโ README.md # This file
Examples
Managing your JIRA MCP server
# Add JIRA server to all editors
mcp add jira-mcp "~/Projects/me/jira-mcp/server.py"
# List all configured servers
mcp list
# Remove from just Cursor
mcp remove jira-mcp cursor
# Check what's configured
mcp status
Adding a server with complex configuration
mcp add filesystem '{"command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "~/Documents"]}'
๐ ๏ธ Development
Local Development Setup
# Clone the repository
git clone https://github.com/nmindz/mcp-commander.git
cd mcp-commander
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install with development dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/
# Run linting and formatting
black src/ tests/
flake8 src/ tests/
mypy src/
Project Structure
mcp-commander/
โโโ src/mcpcommander/ # Main package
โ โโโ core/ # Core business logic
โ โโโ cli/ # Command-line interface
โ โโโ utils/ # Utilities and helpers
โ โโโ schemas/ # Pydantic schemas
โโโ tests/ # Test suite
โ โโโ unit/ # Unit tests
โ โโโ integration/ # Integration tests
โ โโโ e2e/ # End-to-end tests
โโโ docs/ # Documentation
โโโ scripts/ # Automation scripts
Requirements
- Python 3.12 or higher
- Cross-platform (macOS, Windows, Linux)
- Rich CLI output with colorized formatting
๐ What's New in v2.0
๐ Auto-Discovery System
- Automatically finds all MCP configurations on your system
- Supports Claude Code, Claude Desktop, Cursor, VS Code, and more
- Cross-platform detection (macOS, Windows, Linux)
๐ Add-All Command
# One command to rule them all!
mcp add-all my-server "npx @modelcontextprotocol/server-filesystem /tmp"
- Discovers ALL MCP configurations automatically
- Installs server to every found configuration
- Detailed success/failure reporting with colors
๐ Enhanced CLI Experience
- Rich table formatting for server listings
- Colorized status indicators (โ โโ ๏ธ)
- Comprehensive error messages with actionable guidance
- Verbose logging options for debugging
๐๏ธ Modern Architecture
- Enterprise-grade error handling with custom exceptions
- Type safety with comprehensive type hints
- Extensive test coverage (85%+)
- Modern Python packaging with pyproject.toml
๐ง Troubleshooting
Common Issues
- Configuration not found: Run
mcp discoverto see all available MCP configurations - Permission errors: Ensure you have write access to editor configuration directories
- JSON validation errors: Use
mcp statusto check configuration file integrity - Server conflicts: Use
mcp listto see existing servers before adding new ones
Debug Mode
# Enable verbose output for debugging
mcp add-all myserver "command" --verbose
mcp list --verbose
Getting Help
# Comprehensive help for any command
mcp --help
mcp add-all --help
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 mcp_commander-0.1.1.tar.gz.
File metadata
- Download URL: mcp_commander-0.1.1.tar.gz
- Upload date:
- Size: 177.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75157eee8757b22fba73003ae76d20b32967da07da10bc4aacdefc43de38fa4f
|
|
| MD5 |
7427af11814a0c450ec7b819953bd675
|
|
| BLAKE2b-256 |
a89303a7001fb89036cfb775822a60c2a1875f950a5b0333f9737cde7eb985ee
|
Provenance
The following attestation bundles were made for mcp_commander-0.1.1.tar.gz:
Publisher:
release.yml on nmindz/mcp-commander
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_commander-0.1.1.tar.gz -
Subject digest:
75157eee8757b22fba73003ae76d20b32967da07da10bc4aacdefc43de38fa4f - Sigstore transparency entry: 385985457
- Sigstore integration time:
-
Permalink:
nmindz/mcp-commander@97ee89c4412f942981a2742f522685ea366edb84 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/nmindz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@97ee89c4412f942981a2742f522685ea366edb84 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mcp_commander-0.1.1-py3-none-any.whl.
File metadata
- Download URL: mcp_commander-0.1.1-py3-none-any.whl
- Upload date:
- Size: 30.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
816d036896f06252babb544666418716a23ecc3f67d8d544cbf66b05529b4ea1
|
|
| MD5 |
a80e8138e93b19a627689ad994638729
|
|
| BLAKE2b-256 |
7fc78a152cc497bcf6ec4cccaa2f80002c835198474e08418c75de0af30138d6
|
Provenance
The following attestation bundles were made for mcp_commander-0.1.1-py3-none-any.whl:
Publisher:
release.yml on nmindz/mcp-commander
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_commander-0.1.1-py3-none-any.whl -
Subject digest:
816d036896f06252babb544666418716a23ecc3f67d8d544cbf66b05529b4ea1 - Sigstore transparency entry: 385985472
- Sigstore integration time:
-
Permalink:
nmindz/mcp-commander@97ee89c4412f942981a2742f522685ea366edb84 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/nmindz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@97ee89c4412f942981a2742f522685ea366edb84 -
Trigger Event:
push
-
Statement type: