๐ŸŒŸ MCPM - Model Context Protocol Manager

by pathintegral-institute

MCP Client 595 stars
  • agent-framework

CLI MCP package manager & registry for all platforms and all clients. Search & configure MCP servers. Advanced Router & Profile features.

About

What is MCPM - Model Context Protocol Manager?

MCPM is an open source CLI package management tool for MCP servers. It simplifies installing, configuring, and managing server configurations across multiple supported clients, and includes features like profiles, a central registry, and a router for aggregating servers.

How to use MCPM - Model Context Protocol Manager?

Install via one of the supported methods (curl, Homebrew, pipx, uv tool, pip, or X-CMD). Then use the mcpm CLI to manage servers, profiles, and the router. Commands include mcpm search, mcpm add, mcpm ls, mcpm rm, mcpm profile, mcpm router, and mcpm share. The active client can be set with mcpm client.

Key features of MCPM - Model Context Protocol Manager

- Easy addition and removal of MCP server configurations for supported clients.
- Centralized management using profiles to group server configs.
- Discovery of available MCP servers through a central registry.
- MCPM Router that aggregates multiple servers behind a single endpoint.
- Temporarily disable/enable server configurations with stash/pop.
- Copy or move server configurations between clients and profiles.
- Share local MCP servers remotely via SSE tunnels.

Use cases of MCPM - Model Context Protocol Manager

- Manage MCP server configurations across multiple clients (Claude Desktop, Cursor, Windsurf, VSCode, Cline, etc.).
- Group servers into profiles (e.g., work vs. personal, development vs. production) and switch between them easily.
- Use the MCPM Router to provide a stable single endpoint for all clients, with shared sessions and dynamic profile switching.
- Quickly share a local MCP server (e.g., a custom server or one started via uvx/npx) as a public SSE endpoint for remote access.

FAQ from MCPM - Model Context Protocol Manager

What does MCPM do that other tools don't?

MCPM is a dedicated package manager for MCP servers, not just a handler. It provides profiles for organized configuration, a central registry, a router for aggregating servers with session sharing, and the ability to share servers remotely via SSE tunnels.

Which MCP clients does MCPM support?

Supported clients include Claude Desktop, Cursor, Windsurf, VSCode, Cline, Continue, Goose, 5ire, and Roo Code. More clients are planned.

How do I install MCPM?

The recommended way is curl -sSL https://mcpm.sh/install | bash. Other methods include brew install mcpm, pipx install mcpm, `uv tool install mc

Details

Author
pathintegral-institute
GitHub stars
595
Category
agent-framework
Repository
pathintegral-institute/mcpm.sh

Homebrew Formula Version
PyPI - Version
GitHub Release
GitHub License
GitHub contributors
PyPI - Downloads
GitHub commit activity

English | ็ฎ€ไฝ“ไธญๆ–‡

mcpm.sh

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!

๐Ÿš€ Quick Installation

Recommended:

curl -sSL https://mcpm.sh/install | bash

Or choose other installation methods like brew, pipx, uv etc.

๐Ÿ”Ž Overview

MCPM simplifies the installation, configuration, and management of Model Context Protocol servers and their configurations across different applications (clients). Key features include:

- โœจ Easy addition and removal of MCP server configurations for supported clients.
- ๐Ÿ“‹ Centralized management using profiles: group server configurations together and add/remove them to client easily.
- ๐Ÿ” Discovery of available MCP servers through a central registry.
- ๐Ÿ”Œ MCPM Router for aggregating multiple MCP servers behind a single endpoint with shared sessions.
- ๐Ÿ’ป A command-line interface (CLI) for all management tasks.

See Advanced Features for more capabilities like shared server sessions and the MCPM Router.

๐Ÿ–ฅ๏ธ Supported MCP Clients

MCPM will support managing MCP servers for the following clients:

- ๐Ÿค– Claude Desktop (Anthropic)
- โŒจ๏ธ Cursor
- ๐Ÿ„ Windsurf
- ๐Ÿงฉ Vscode
- ๐Ÿ“ Cline
- โžก๏ธ Continue
- ๐Ÿฆข Goose
- ๐Ÿ”ฅ 5ire
- ๐Ÿฆ˜ Roo Code
- โœจ More clients coming soon...

๐Ÿ”ฅ Command Line Interface (CLI)

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:

โ„น๏ธ General

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 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 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 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 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 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 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 Management (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

๐Ÿ› ๏ธ Utilities (util)

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

๐Ÿ“š Registry

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.

๐Ÿ—บ๏ธ Roadmap

- [x] Landing page setup (mcpm.sh)
- [x] Core CLI foundation (Click)
- [x] Client detection and management (mcpm client)
- [x] Basic server management (mcpm add, mcpm ls, mcpm rm)
- [x] Registry integration (mcpm search, adding by name)
- [x] Router functionality (mcpm router)
- [x] MCP Profiles (mcpm profile)
- [x] Server copying/moving (mcpm cp, mcpm mv)
- [x] Server stashing (mcpm stash, mcpm pop)
- [x] Router remote share (mcpm router share) remotely access local router and mcp servers
- [ ] MCP Server Access Monitoring for MCPM Router (local only, absolutely no data leaving local machine)
- [ ] MCPM Router over STDIO (same powerful feature set with profile and monitoring, but single client/tenant)
- [ ] MCP Server for MCPM Router (experimental, allow MCP clients to dynamically switch between profiles, suggest new MCP servers from registry, etc.)
- [ ] Additional client support

๐Ÿ“ฆ Other Installation Methods

๐Ÿบ Homebrew

brew install mcpm

๐Ÿ“ฆ pipx (Recommended for Python tools)

pipx install mcpm

๐Ÿช„ uv tool

uv tool install mcpm

More Installation Methods

๐Ÿ pip

pip install mcpm

๐Ÿงฐ X-CMD

If you are a user of x-cmd, you can run:

x install mcpm.sh

๐Ÿ‘จโ€๐Ÿ’ป Development

This repository contains the CLI and service components for MCP Manager, built with Python and Click following modern package development practices.

๐Ÿ“‹ Development Requirements

- ๐Ÿ Python 3.10+
- ๐Ÿš€ uv (for virtual environment and dependency management)
- ๐Ÿ–ฑ๏ธ Click framework for CLI
- โœจ Rich for enhanced console output
- ๐ŸŒ Requests for API interactions

๐Ÿ“ Project Structure

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

๐Ÿš€ Development Setup

1. Clone the repository

   git clone https://github.com/pathintegral-institute/mcpm.sh.git
cd mcpm.sh

2. Set up a virtual environment with uv

   uv venv --seed
source .venv/bin/activate # On Unix/Mac

3. Install dependencies in development mode

   uv pip install -e .

4. Run the CLI directly during development

   # Either use the installed package
mcpm --help

# Or use the development script
./test_cli.py --help

5. Run tests

   pytest tests/

โœ… Best Practices

- ๐Ÿ“ Use the src-based directory structure to prevent import confusion
- ๐Ÿ”ง Develop with an editable install using uv pip install -e .
- ๐Ÿงฉ Keep commands modular in the src/mcpm/commands/ directory
- ๐Ÿงช Add tests for new functionality in the tests/ directory
- ๐Ÿ’ป Use the test_cli.py script for quick development testing

๐Ÿ”ข Version Management

MCP uses a single source of truth pattern for version management to ensure consistency across all components.

๐Ÿท๏ธ Version Structure

- ๐Ÿ“ The canonical version is defined in version.py at the project root
- ๐Ÿ“ฅ src/mcpm/__init__.py imports this version
- ๐Ÿ“„ pyproject.toml uses dynamic versioning to read from version.py
- ๐Ÿท๏ธ Git tags are created with the same version number prefixed with 'v' (e.g., v1.0.0)

๐Ÿ”„ Updating the Version

When releasing a new version:

1. Use the provided version bump script

   ./bump_version.sh NEW_VERSION
# Example: ./bump_version.sh 1.1.0

2. Push the changes and tags

   git push && git push --tags

3. 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.

๐Ÿ“œ License

MIT

Star History

Star History Chart