English | 简体中文
Open Source. Forever Free.
Built with ❤️ by Path Integral Institute
🌟 MCPM - Model Context Protocol Manager
MCPM is an open source service and a CLI package management tool for MCP servers. It simplifies managing server configurations across various supported clients, allows grouping servers into profiles, helps discover new servers via a registry, and includes a powerful router that aggregates multiple MCP servers behind a single endpoint with shared sessions.
🤝 Community Contributions💡 Grow the MCP ecosystem! We welcome contributions to our MCP Registry. Add your own servers, improve documentation, or suggest features. Open source thrives with community participation!
curl -sSL https://mcpm.sh/install | bash
Or choose other installation methods like brew
, pipx
, uv
etc.
MCPM simplifies the installation, configuration, and management of Model Context Protocol servers and their configurations across different applications (clients). Key features include:
See Advanced Features for more capabilities like shared server sessions and the MCPM Router.
🖥️ Supported MCP ClientsMCPM will support managing MCP servers for the following clients:
MCPM provides a comprehensive CLI built with Python's Click framework. Commands generally operate on the currently active client. You can view/set the active client using mcpm client
. Many commands also support scope modifiers like @CLIENT_NAME/SERVER_NAME
or %PROFILE_NAME/SERVER_NAME
to target specific clients or profiles directly.
Below are the available commands, grouped by functionality:
mcpm --help # Display help information and available commands mcpm --version # Display the current version of MCPM🖥️ Client Management (
client
)
mcpm client ls # List all supported MCP clients, detect installed ones, and show active client mcpm client set CLIENT # Set the active client for subsequent commands mcpm client edit # Open the active client's MCP configuration file in an external editor🌐 Server Management (
server
)
These commands operate on the active client unless a specific scope (@CLIENT
or %PROFILE
) is provided.
# 🔍 Search and Add mcpm search [QUERY] # Search the MCP Registry for available servers mcpm add SERVER_URL # Add an MCP server configuration (from URL or registry name) mcpm add SERVER_URL --alias ALIAS # Add with a custom alias # 🛠️ Add custom server mcpm import stdio SERVER_NAME --command COMMAND --args ARGS --env ENV # Add a stdio MCP server to a client mcpm import sse SERVER_NAME --url URL # Add a SSE MCP server to a client mcpm import interact # Add a server by configuring it interactively # 📋 List and Remove mcpm ls # List server configurations for the active client/profile mcpm rm SERVER_NAME # Remove a server configuration # 🔄 Modify and Organize mcpm cp SOURCE TARGET # Copy a server config (e.g., @client1/serverA %profileB) mcpm mv SOURCE TARGET # Move a server config (e.g., %profileA/serverX @client2) # 📦 Stashing (Temporarily disable/enable) mcpm stash SERVER_NAME # Temporarily disable/store a server configuration aside mcpm pop [SERVER_NAME] # Restore the last stashed server, or a specific one by name📂 Profile Management (
profile
)
Profiles are named collections of server configurations. They allow you to easily switch between different sets of MCP servers. For example, you might have a work
profile and a personal
profile, each containing different servers. Or you might have a production
profile and a development
profile, each containing different configurations for the same servers.
The currently active profile's servers are typically used by features like the MCPM Router. Use mcpm activate
to set the active profile.
# 🔄 Profile Lifecycle mcpm profile ls # List all available MCPM profiles mcpm profile add PROFILE_NAME # Add a new, empty profile mcpm profile rm PROFILE_NAME # Remove a profile (does not delete servers within it) mcpm profile rename OLD_NAME NEW_NAME # Rename a profile # ✅ Activating Profiles mcpm activate PROFILE_NAME # Activate a profile, applying its servers to the active client mcpm deactivate # Deactivate the current profile for the active client🔌 Router Management (
router
)
The MCPM Router runs as a background daemon process, acting as a stable endpoint (e.g., http://localhost:6276
) that intelligently routes incoming MCP requests to the appropriate server based on the currently active profile.
This allows you to change the underlying servers (by switching profiles with mcpm activate
) without reconfiguring your client applications. They can always point to the MCPM Router's address.
The Router also maintains persistent connections to MCP servers, enabling multiple clients to share these server sessions. This eliminates the need to start separate server instances for each client, significantly reducing resource usage and startup time. Learn more about these advanced capabilities in Advanced Features.
For more technical details on the router's implementation and namespacing, see docs/router_tech_design.md
.
The Router can be shared in public network by mcpm router share
. Be aware that the share link will be exposed to the public, make sure the generated secret is secure and only share to trusted users. See MCPM Router Share for more details about how it works.
mcpm router status # Check if the router daemon is running mcpm router on # Start the MCP router daemon mcpm router off # Stop the MCP router daemon mcpm router set --host HOST --port PORT --address ADDRESS # Set the MCP router daemon's host port and the remote share address mcpm router share # Share the router to public mcpm router unshare # Unshare the router
mcpm config clear-cache # Clear MCPM's registry cache. Cache defaults to refresh every 1 hour. mcpm inspector # Launch the MCPM Inspector UI to examine server configs
The MCP Registry is a central repository of available MCP servers that can be installed using MCPM. The registry is available at mcpm.sh/registry.
mcpm.sh
)mcpm client
)mcpm add
, mcpm ls
, mcpm rm
)mcpm search
, adding by name)mcpm router
)mcpm profile
, mcpm activate/deactivate
)mcpm cp
, mcpm mv
)mcpm stash
, mcpm pop
)mcpm router share
) remotely access local router and mcp serversIf you are a user of x-cmd, you can run:
This repository contains the CLI and service components for MCP Manager, built with Python and Click following modern package development practices.
📋 Development RequirementsThe project follows the modern src-based layout:
mcpm.sh/
├── src/ # Source package directory
│ └── mcpm/ # Main package code
├── tests/ # Test directory
├── test_cli.py # Development CLI runner
├── pyproject.toml # Project configuration
├── pages/ # Website content
│ └── registry/ # Registry website
├── mcp-registry/ # MCP Registry data
└── README.md # Documentation
Clone the repository
git clone https://github.com/pathintegral-institute/mcpm.sh.git
cd mcpm.sh
Set up a virtual environment with uv
uv venv --seed
source .venv/bin/activate # On Unix/Mac
Install dependencies in development mode
Run the CLI directly during development
# Either use the installed package
mcpm --help
# Or use the development script
./test_cli.py --help
Run tests
uv pip install -e .
src/mcpm/commands/
directorytests/
directorytest_cli.py
script for quick development testingMCP uses a single source of truth pattern for version management to ensure consistency across all components.
version.py
at the project rootsrc/mcpm/__init__.py
imports this versionpyproject.toml
uses dynamic versioning to read from version.py
When releasing a new version:
Use the provided version bump script
./bump_version.sh NEW_VERSION
# Example: ./bump_version.sh 1.1.0
Push the changes and tags
git push && git push --tags
Create a GitHub release matching the new version
This process ensures that the version is consistent in all places: code, package metadata, and git tags. PyPI release is handled by the CI/CD pipeline and will be triggered automatically.
MIT
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4