Skip to content

Commit e958756

Browse files
committed
Improve README
1 parent 53ed4ef commit e958756

File tree

3 files changed

+244
-119
lines changed

3 files changed

+244
-119
lines changed

.github/workflows/ci.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,20 @@ name: Python CI
33
on:
44
push:
55
branches: [ main ]
6+
paths:
7+
- 'src/**'
8+
- 'tests/**'
9+
- 'pyproject.toml'
10+
- 'uv.lock'
611
pull_request:
7-
branches: [ main ]
12+
paths:
13+
- 'src/**'
14+
- 'tests/**'
15+
- 'pyproject.toml'
16+
- 'uv.lock'
17+
18+
permissions:
19+
contents: read
820

921
jobs:
1022
test:

README.md

Lines changed: 188 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -1,121 +1,207 @@
11
![PyPI - Version](https://img.shields.io/pypi/v/mcpm)
22
![GitHub Release](https://img.shields.io/github/v/release/pathintegral-institute/mcpm.sh)
33

4-
# MCPM - Model Context Protocol Manager
4+
<div align="center">
55

6-
MCPM is a Homebrew-like service and command-line interface for managing Model Context Protocol (MCP) servers across various MCP clients.
6+
```
7+
███╗ ███╗ ██████╗██████╗ ███╗ ███╗
8+
████╗ ████║██╔════╝██╔══██╗████╗ ████║
9+
██╔████╔██║██║ ██████╔╝██╔████╔██║
10+
██║╚██╔╝██║██║ ██╔═══╝ ██║╚██╔╝██║
11+
██║ ╚═╝ ██║╚██████╗██║ ██║ ╚═╝ ██║
12+
╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝
13+
14+
Model Context Protocol Manager
15+
Open Source. Forever Free.
16+
Built with ❤️ by Path Integral Institute
17+
```
18+
19+
</div>
20+
21+
# 🌟 MCPM - Model Context Protocol Manager
22+
23+
MCPM is a Homebrew-like service and command-line interface for managing Model Context Protocol (MCP) servers. It simplifies managing server configurations across various supported clients, allows grouping servers into profiles, and helps discover new servers via a registry.
24+
25+
## 🤝 Community Contributions
26+
27+
> 💡 **Grow the MCP ecosystem!** We welcome contributions to our [MCP Registry](mcp-registry/README.md). Add your own servers, improve documentation, or suggest features. Open source thrives with community participation!
28+
29+
## 🚀 Quick Installation
30+
31+
Choose your preferred installation method:
32+
33+
### 🍺 Homebrew
34+
35+
```bash
36+
brew install mcpm
37+
```
38+
39+
### 📦 pipx (Recommended for Python tools)
40+
41+
```bash
42+
pipx install mcpm
43+
```
44+
45+
### 🐍 pip
46+
47+
```bash
48+
pip install mcpm
49+
```
50+
51+
### 🔄 Shell Script (One-liner)
52+
53+
```bash
54+
curl -sSL https://mcpm.sh/install | bash
55+
```
756

8-
## Overview
57+
## 🔎 Overview
958

10-
MCPM aims to simplify the installation, configuration, and management of Model Context Protocol servers with a focus on:
59+
MCPM simplifies the installation, configuration, and management of Model Context Protocol servers and their configurations across different applications (clients). Key features include:
1160

12-
- Easy installation of MCP servers via a simple CLI
13-
- Centralized management of server configurations across multiple clients
14-
- Seamless updates for installed servers
15-
- Server-side management capabilities
16-
- Registry of available MCP servers
61+
- ✨ Easy addition and removal of MCP server configurations for supported clients.
62+
- 📋 Centralized management using profiles: group server configurations together and activate/deactivate them easily.
63+
- 🔍 Discovery of available MCP servers through a central registry.
64+
- 🖥️ Detection of installed MCP clients on your system.
65+
- 💻 A command-line interface (CLI) for all management tasks.
66+
- 🔧 Utilities like a configuration inspector.
1767

18-
## Supported MCP Clients
68+
## 🖥️ Supported MCP Clients
1969

2070
MCPM will support managing MCP servers for the following clients:
2171

22-
- Claude Desktop (Anthropic)
23-
- Cursor
24-
- Windsurf
25-
- Cline
26-
- Continue
27-
- Goose
28-
- 5ire
29-
- Roo Code
30-
- More clients coming soon...
72+
- 🤖 Claude Desktop (Anthropic)
73+
- ⌨️ Cursor
74+
- 🏄 Windsurf
75+
- 📝 Cline
76+
- ➡️ Continue
77+
- 🦢 Goose
78+
- 🔥 5ire
79+
- 🦘 Roo Code
80+
- More clients coming soon...
3181

32-
## Command Line Interface (CLI)
82+
## 🔥 Command Line Interface (CLI)
3383

34-
MCPM provides a comprehensive CLI built with Python's Click framework. Below are the available commands:
84+
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.
3585

36-
### Basic Commands
86+
Below are the available commands, grouped by functionality:
3787

88+
### ℹ️ General
89+
90+
```bash
91+
mcpm --help # Display help information and available commands
92+
mcpm --version # Display the current version of MCPM
3893
```
39-
mcpm --help # Display help information and available commands
40-
mcpm --version # Display the current version of MCPM
94+
95+
### 🖥️ Client Management (`client`)
96+
97+
```bash
98+
mcpm client ls # List all supported MCP clients, detect installed ones, and show active client
99+
mcpm client set CLIENT # Set the active client for subsequent commands
100+
mcpm client edit # Open the active client's MCP configuration file in an external editor
41101
```
42102

43-
### Available Commands
103+
### 🌐 Server Management (`server`)
104+
105+
These commands operate on the active client unless a specific scope (`@CLIENT` or `#PROFILE`) is provided.
106+
107+
```bash
108+
# 🔍 Search and Add
109+
mcpm search [QUERY] # Search the MCP Registry for available servers
110+
mcpm add SERVER_URL # Add an MCP server configuration (from URL or registry name)
111+
mcpm add SERVER_URL --alias ALIAS # Add with a custom alias
112+
113+
# 📋 List and Remove
114+
mcpm ls # List server configurations for the active client/profile
115+
mcpm list # Alias for 'ls'
116+
mcpm rm SERVER_NAME # Remove a server configuration
117+
mcpm remove SERVER_NAME # Alias for 'rm'
44118

119+
# 🔄 Modify and Organize
120+
mcpm cp SOURCE TARGET # Copy a server config (e.g., @client1/serverA #profileB)
121+
mcpm copy SOURCE TARGET # Alias for 'cp'
122+
mcpm mv SOURCE TARGET # Move a server config (e.g., #profileA/serverX @client2)
123+
mcpm move SOURCE TARGET # Alias for 'mv'
124+
125+
# 📦 Stashing (Temporarily disable/enable)
126+
mcpm stash SERVER_NAME # Temporarily disable/store a server configuration aside
127+
mcpm pop [SERVER_NAME] # Restore the last stashed server, or a specific one by name
45128
```
46-
# client
47-
mcpm client ls # List all supported MCP clients and their status
48-
mcpm client set CLIENT #
49-
mcpm client edit # open client mcp setting in external editor
50-
51-
52-
# editing ops, applying to the active scope
53-
# add @client or #profile to set explicit scope
54-
# for example:
55-
# mcpm rm #PROFILE/SERVER_NAME to remove server for a profile (even when it's not activated)
56-
# mcpm cp @CLIENT/SERVER_NAME #PROFILE
57-
58-
mcpm add SERVER_NAME # Add an MCP server to the active client
59-
mcpm add SERVER_NAME --alias ALIAS_NAME # Add an MCP server to the active client with a custom alias
60-
mcpm cp SOURCE TARGET # Copy an MCP server from one client/profile to another
61-
mcpm mv SOURCE TARGET # Move an MCP server from one client/profile to another
62-
mcpm rm
63-
mcpm remove SERVER_NAME # Remove an installed MCP server
64-
mcpm ls
65-
mcpm list # List all installed MCP servers
66-
mcpm stash SERVER_NAME # Temporarily disable an MCP server for a client
67-
mcpm pop SERVER_NAME # Re-enable an MCP server for a client
68-
69-
70-
# profile
71-
mcpm profile add PROFILE # Add a new MCPM profile
72-
mcpm profile list # List all MCPM profiles
73-
mcpm profile rm PROFILE # Remove an MCPM profile
74-
mcpm profile remove PROFILE # Remove an MCPM profile
75-
mcpm profile rename PROFILE # Rename an MCPM profile
76-
77-
mcpm activate PROFILE # activate a profile for a client
78-
mcpm deactivate # deactivate a profile for a client
79-
80-
# router
81-
mcpm router on -p port -h host # start router daemon
82-
mcpm router off
83-
84-
85-
# util
86-
mcpm config clear-cache
87-
mcpm inspect SERVER_NAME # Launch the MCPM Inspector UI to examine servers
129+
130+
### 📂 Profile Management (`profile`)
131+
132+
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.
133+
134+
The currently *active* profile's servers are typically used by features like the MCPM Router. Use `mcpm activate` to set the active profile.
135+
136+
```bash
137+
# 🔄 Profile Lifecycle
138+
mcpm profile list # List all available MCPM profiles
139+
mcpm profile add PROFILE_NAME # Add a new, empty profile
140+
mcpm profile rm PROFILE_NAME # Remove a profile (does not delete servers within it)
141+
mcpm profile remove PROFILE_NAME # Alias for 'rm'
142+
mcpm profile rename OLD_NAME NEW_NAME # Rename a profile
143+
144+
# ✅ Activating Profiles
145+
mcpm activate PROFILE_NAME # Activate a profile, applying its servers to the active client
146+
mcpm deactivate # Deactivate the current profile for the active client
88147
```
89148

90-
### Registry
149+
### 🔌 Router Management (`router`)
91150

92-
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](https://mcpm.sh/registry).
151+
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**.
152+
153+
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.
154+
155+
For more technical details on the router's implementation and namespacing, see [`src/mcpm/router/README.md`](src/mcpm/router/README.md).
156+
157+
```bash
158+
mcpm router status # Check if the router daemon is running
159+
mcpm router on # Start the MCP router daemon
160+
mcpm router off # Stop the MCP router daemon
161+
mcpm set --host HOST --port PORT # Set the MCP router daemon's host and port
162+
```
163+
164+
### 🛠️ Utilities (`util`)
93165

94-
## Roadmap
166+
```bash
167+
mcpm config clear-cache # Clear MCPM's registry cache. Cache defaults to refresh every 1 hour.
168+
mcpm inspector # Launch the MCPM Inspector UI to examine server configs
169+
```
95170

96-
- [x] Landing page setup
97-
- [x] CLI foundation
98-
- [x] Search
99-
- [x] Install
100-
- [x] Registry integration
101-
- [ ] Server management functionality
102-
- [ ] Support SSE Server
103-
- [ ] Additional client support
104-
- [ ] MCP profiles - collections of tools that can be added to any clients with a single command
171+
### 📚 Registry
172+
173+
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](https://mcpm.sh/registry).
105174

106-
## Development
175+
## 🗺️ Roadmap
176+
177+
- [x] Landing page setup (`mcpm.sh`)
178+
- [x] Core CLI foundation (Click)
179+
- [x] Client detection and management (`mcpm client`)
180+
- [x] Basic server management (`mcpm add`, `mcpm ls`, `mcpm rm`)
181+
- [x] Registry integration (`mcpm search`, adding by name)
182+
- [x] Router functionality (`mcpm router`)
183+
- [x] MCP Profiles (`mcpm profile`, `mcpm activate/deactivate`)
184+
- [x] Server copying/moving (`mcpm cp`, `mcpm mv`)
185+
- [x] Server stashing (`mcpm stash`, `mcpm pop`)
186+
- [ ] MCP Server Access Monitoring for MCPM Router (local only, absolutely no data leaving local machine)
187+
- [ ] MCPM Router over STDIO (same powerful feature set with profile and monitoring, but single client/tenant)
188+
- [ ] MCP Server for MCPM Router (experimental, allow MCP clients to dynamically switch between profiles, suggest new MCP servers from registry, etc.)
189+
- [ ] Server-side management capabilities (Beyond config management)
190+
- [ ] Additional client support (Expand registry)
191+
192+
## 👨‍💻 Development
107193

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

110-
### Development Requirements
196+
### 📋 Development Requirements
111197

112-
- Python 3.10+
113-
- uv (for virtual environment and dependency management)
114-
- Click framework for CLI
115-
- Rich for enhanced console output
116-
- Requests for API interactions
198+
- 🐍 Python 3.10+
199+
- 🚀 uv (for virtual environment and dependency management)
200+
- 🖱️ Click framework for CLI
201+
- Rich for enhanced console output
202+
- 🌐 Requests for API interactions
117203

118-
### Project Structure
204+
### 📁 Project Structure
119205

120206
The project follows the modern src-based layout:
121207

@@ -132,7 +218,7 @@ mcpm.sh/
132218
└── README.md # Documentation
133219
```
134220

135-
### Development Setup
221+
### 🚀 Development Setup
136222

137223
1. Clone the repository
138224
```
@@ -165,27 +251,27 @@ mcpm.sh/
165251
pytest tests/
166252
```
167253

168-
### Best Practices
254+
### Best Practices
169255

170-
- Use the src-based directory structure to prevent import confusion
171-
- Develop with an editable install using `uv pip install -e .`
172-
- Keep commands modular in the `src/mcpm/commands/` directory
173-
- Add tests for new functionality in the `tests/` directory
174-
- Use the `test_cli.py` script for quick development testing
256+
- 📁 Use the src-based directory structure to prevent import confusion
257+
- 🔧 Develop with an editable install using `uv pip install -e .`
258+
- 🧩 Keep commands modular in the `src/mcpm/commands/` directory
259+
- 🧪 Add tests for new functionality in the `tests/` directory
260+
- 💻 Use the `test_cli.py` script for quick development testing
175261

176262

177-
### Version Management
263+
### 🔢 Version Management
178264

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

181-
#### Version Structure
267+
#### 🏷️ Version Structure
182268

183-
- The canonical version is defined in `version.py` at the project root
184-
- `src/mcpm/__init__.py` imports this version
185-
- `pyproject.toml` uses dynamic versioning to read from `version.py`
186-
- Git tags are created with the same version number prefixed with 'v' (e.g., v1.0.0)
269+
- 📍 The canonical version is defined in `version.py` at the project root
270+
- 📥 `src/mcpm/__init__.py` imports this version
271+
- 📄 `pyproject.toml` uses dynamic versioning to read from `version.py`
272+
- 🏷️ Git tags are created with the same version number prefixed with 'v' (e.g., v1.0.0)
187273

188-
#### Updating the Version
274+
#### 🔄 Updating the Version
189275

190276
When releasing a new version:
191277

@@ -205,6 +291,6 @@ When releasing a new version:
205291
This process ensures that the version is consistent in all places: code, package metadata, and git tags.
206292
PyPI release is handled by the CI/CD pipeline and will be triggered automatically.
207293

208-
## License
294+
## 📜 License
209295

210296
MIT

0 commit comments

Comments
 (0)