CLI MCP package manager & registry for all platforms and all clients. Search & configure MCP servers. Advanced Router & Profile features.
English | ็ฎไฝไธญๆ
Open Source. Forever Free.
Built with โค๏ธ by Path Integral Institute
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.
๐ก 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.
MCPM 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
)mcpm client ls # List all supported MCP clients, detect installed ones, and show active client
mcpm client edit # Open the active client's MCP configuration file in an external editor
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 remote SERVER_NAME --url URL # Add a remote 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
)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 target set %profile_name
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
mcpm add %profile_name # Add a profile to the active client
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 target set %profile_name
) 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
share
)The mcpm share
command allows you to take any shell command that starts an MCP server and instantly expose it as an SSE (Server-Sent Events) server. It uses mcp-proxy
to handle the server transformation and then creates a secure tunnel for remote access, making your local MCP server accessible from anywhere.
This is particularly useful for quickly sharing a development server, a custom MCP server, or even a standard server with specific configurations without needing to deploy it publicly.
# ๐ Share a local MCP server
mcpm share "COMMAND" # Replace COMMAND with your actual server start command
# โ๏ธ Options
# COMMAND: The shell command that starts your MCP server (e.g., "uvx mcp-server-fetch", "npx mcp-server"). This must be enclosed in quotes if it contains spaces.
# --port PORT: Specify a local port for the mcp-proxy to listen on. Defaults to a random available port.
# --address ADDRESS: Specify a public address for the tunnel (e.g., yourdomain.com:7000). If not provided, a random tunnel URL will be generated.
# --http: If set, the tunnel will use HTTP instead of HTTPS. Use with caution.
# --timeout TIMEOUT: Timeout in seconds for the mcp-proxy to wait for the server to start. Defaults to 60.
# --retry RETRY: Number of times to retry starting the server if it fails. Defaults to 0.
# ๐ก Usage Examples
mcpm share "uvx mcp-server-fetch"
mcpm share "npx mcp-server" --port 5000
mcpm share "uv run my-mcp-server" --address myserver.com:7000
mcpm share "npx -y @modelcontextprotocol/server-everything" --retry 3
util
)mcpm config clear-cache # Clear MCPM's registry cache. Cache defaults to refresh every 1 hour.
mcpm config set # Set global MCPM configuration, currently only support node_executable
mcpm config get <name> # Get global MCPM configuration
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 cp
, mcpm mv
)mcpm stash
, mcpm pop
)mcpm router share
) remotely access local router and mcp serversbrew install mcpm
pipx install mcpm
uv tool install mcpm
pip install mcpm
If you are a user of x-cmd, you can run:
x install mcpm.sh
This repository contains the CLI and service components for MCP Manager, built with Python and Click following modern package development practices.
The 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
uv pip install -e .
Run the CLI directly during development
# Either use the installed package
mcpm --help
# Or use the development script
./test_cli.py --help
Run tests
pytest 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
No configuration available
Related projects feature coming soon
Will recommend related projects based on sub-categories