简体中文 | English
⛭ mcp-pm — Homebrew for MCP Servers
A CLI package manager for the Model Context Protocol ecosystem. Install, search, serve, and manage MCP servers with a single command.
Quick Start • Features • Commands • Architecture • Comparison • Registries
https://github.com/user-attachments/assets/placeholder
✨ Quick Start
# Install
pip install mcp-pm
# Search for MCP servers across 5 registries (Smithery, npm, PyPI, built-in...)
mcp search filesystem
# Install a server
mcp install mcp-server-filesystem
# List installed servers
mcp list
# Explore the Web UI dashboard
mcp explore
# Run a server in an isolated sandbox
mcp sandbox my-server --level docker
# Start an OpenAI-compatible HTTP proxy
mcp serve
No servers installed yet? Run
mcp search databaseto discover servers from the community registry, ormcp exploreto browse them visually.
🚀 Features
| Feature | Description |
|---|---|
| 🔍 Multi-Registry Search | Search across 5 registries simultaneously — Smithery (5,000+ servers), npm, PyPI, built-in curated list |
| 📦 One-Command Install | mcp install <server> — installs from npm, pip, git, or Docker |
| 🔒 Sandbox Isolation | Run untrusted servers in isolated environments (subprocess, Docker) |
| 🌐 Web UI Dashboard | Beautiful dark-themed HTMX dashboard for visual management |
| ⚡ OpenAI Proxy | Expose all installed MCP tools as an OpenAI-compatible API |
🛡️ mcp doctor |
Diagnostic tool that checks your entire MCP setup |
| 🔧 12 Commands | Full lifecycle management — install, uninstall, update, list, search, info, explore, serve, sandbox, config, doctor, run |
| 🌍 Multi-language UI | Web UI supports English and 中文 (Chinese), extensible to any language |
| 📝 YAML Config | Human-readable configuration at ~/.mcp-pm/config.yaml |
| 🎨 Beautiful CLI | Rich terminal output with tables, colors, and progress spinners |
🎮 Commands
| Command | Description | Example |
|---|---|---|
mcp install |
Install an MCP server | mcp install mcp-server-filesystem |
mcp uninstall |
Remove an installed server | mcp uninstall my-server |
mcp update |
Update all installed servers | mcp update |
mcp list |
List installed servers and tools | mcp list |
mcp search |
Search across all registries | mcp search database |
mcp info |
Show detailed server info | mcp info github |
mcp explore |
Launch the Web UI dashboard | mcp explore |
mcp serve |
Start HTTP proxy server | mcp serve |
mcp sandbox |
Run server in sandbox | mcp sandbox my-server --level docker |
mcp config |
Manage configuration | mcp config get servers |
mcp doctor |
Diagnose installation health | mcp doctor |
mcp run |
Run an MCP tool directly | mcp run my-server tool-name |
🏗️ Architecture
┌─────────────────────────────────────────────────────────────┐
│ User Interfaces │
│ ┌──────────┐ ┌────────────┐ ┌──────────┐ ┌──────────┐ │
│ │ CLI │ │ Web UI │ │ VS Code │ │ CI/CD │ │
│ │ Terminal │ │ Dashboard │ │ Ext. │ │ Actions │ │
│ └────┬─────┘ └─────┬──────┘ └────┬─────┘ └────┬─────┘ │
└───────┼──────────────┼──────────────┼──────────────┼────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────┐
│ CLI Core (click + rich) │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 12 Subcommands: install · uninstall · list · search ││
│ │ info · explore · serve · sandbox · config · update ││
│ │ doctor · run ││
│ └─────────────────────────────────────────────────────────┘│
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │
│ │ Installer│ │ Config │ │ Sandbox │ │ HTTP Proxy │ │
│ │ (multi- │ │ (YAML) │ │ (Docker │ │ (OpenAI │ │
│ │ source) │ │ │ │ isol.) │ │ Compat.) │ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────────┘ │
└───────────────────┬─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Registry Integrations │
│ ┌────────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Smithery │ │ npm │ │ PyPI │ │ Built-in │ │
│ │ 5,000+ srvs│ │ Registry │ │ Registry │ │ 27 srvs │ │
│ └────────────┘ └──────────┘ └──────────┘ └──────────┘ │
└───────────────────┬─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Execution Environment │
│ ┌──────────────┐ ┌──────────────┐ ┌───────────────────┐ │
│ │ Subprocess │ │ Docker │ │ OpenAI API Proxy │ │
│ │ Direct Spawn │ │ Sandbox │ │ MCP → OpenAI │ │
│ └──────────────┘ └──────────────┘ └───────────────────┘ │
└─────────────────────────────────────────────────────────────┘
📦 Registry Backends
mcp-pm aggregates servers from 5 registries simultaneously:
| Registry | Status | Servers | Type |
|---|---|---|---|
| Built-in | ✅ Always available | 27 curated | Offline |
| Smithery (smithery.ai) | ✅ Online | 5,000+ | API |
| npm (npmjs.com) | ✅ Online | All mcp-server packages | API |
| PyPI (pypi.org) | ✅ Online | All MCP Python packages | API |
| MCP.so | ⚠️ Deprecated (API retired) | — | Graceful fallback |
| GitHub Registry | ⚠️ Temporarily unavailable | — | Graceful fallback |
All backends are queried in parallel with a 3-second timeout — you always get results fast.
🔄 Comparison
| Feature | mcp-pm | MCP.so | Smithery | GitHub Registry |
|---|---|---|---|---|
| CLI-first | ✅ | ❌ | ❌ | ❌ |
| Offline mode (built-in index) | ✅ | ❌ | ❌ | ❌ |
| Sandbox isolation | ✅ | ❌ | ❌ | ❌ |
| Interactive TUI | ✅ | ❌ | ❌ | ❌ |
| Multi-registry search | ✅ | ❌ | ❌ | ❌ |
| Web UI dashboard | ✅ | ✅ | ✅ | ✅ |
| Auto-config generation | ✅ | ❌ | ❌ | ❌ |
| Open-source + self-hostable | ✅ | ❌ | ❌ | ✅ |
| OpenAI-compatible proxy | ✅ | ❌ | ❌ | ❌ |
| 12 subcommands | ✅ | — | — | — |
🛠️ Development
# Clone and set up
git clone https://github.com/weinotes/mcp-pm.git
cd mcp-pm
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,web]"
# Run tests
python -m pytest tests/ -v --tb=short
# Start Web UI
mcp explore
# Lint
ruff check .
ruff format --check .
🤝 Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Bug reports: Open an issue
- Feature requests: Start a discussion
- Security issues: See SECURITY.md
📄 License
MIT License — Copyright (c) 2025-2026 Davey Wong wgwcko@gmail.com
Made with ❤️ by Davey Wong
Metadata
Release files for mcp-pm 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mcp_pm-0.1.0.tar.gz | 50.2 kB | Without provenance | Details for mcp_pm-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mcp_pm-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for mcp_pm-0.1.0-py3-none-any.whl |
Total release size: 99.1 kB
Release files / mcp_pm-0.1.0.tar.gz
| Download URL | mcp_pm-0.1.0.tar.gz |
|---|---|
| Size | 50.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c25d4091396db5bd7f605c27b13d4e4c49ad6fe37879623b9e1e7c71527abea6
|
|
BLAKE2b-256 checksum How to use checksums |
76b308890305c9e56c1d042d7fbd2804b50ba0cb139575e782f536f1735a2fe6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|
Release files / mcp_pm-0.1.0-py3-none-any.whl
| Download URL | mcp_pm-0.1.0-py3-none-any.whl |
|---|---|
| Size | 48.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
65c8addcd8a9845341f90d7880e8a4b3372de256677d5666b78596faf1e2bb3e
|
|
BLAKE2b-256 checksum How to use checksums |
c6f9e4671dbb67a18f2fb00c5404989b82c143d93d57418c7f07d5445a4dc7ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|
Security for mcp-pm 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.