mcpman 1.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +45 -576
- package/dist/chunk-6X6Q6UZC.js +0 -0
- package/dist/{chunk-6GGMDJQE.js → chunk-CYYW35D2.js} +1 -1
- package/dist/{chunk-DSCBWQ3W.js → chunk-HQO4AO6B.js} +23 -0
- package/dist/chunk-K3NQKI34.js +10 -0
- package/dist/chunk-NFQMBLT3.js +360 -0
- package/dist/chunk-RGKHLY5G.js +0 -0
- package/dist/{client-detector-O2HN4MUB.js → client-detector-TSWWOALP.js} +3 -2
- package/dist/index.cjs +6046 -2904
- package/dist/index.js +4498 -1665
- package/dist/{lockfile-ITEBE7HU.js → lockfile-MDGG6WI3.js} +3 -2
- package/dist/{trust-scorer-G74WK25Q.js → trust-scorer-PEAFSMFK.js} +1 -0
- package/dist/{vault-service-UTZAV6N6.js → vault-service-O2I2K3DX.js} +1 -0
- package/package.json +15 -4
- package/dist/chunk-CC7ICP7U.js +0 -181
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 tranhoangtu-it
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 tranhoangtu-it
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,576 +1,45 @@
|
|
|
1
|
-
# mcpman
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
mcpman install @
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
- **Profiles** — save/restore named server configurations for quick switching
|
|
47
|
-
- **Self-upgrade** — update mcpman itself with a single command
|
|
48
|
-
- **Interactive prompts** — guided installation with env var configuration
|
|
49
|
-
- **No extra daemon** — pure CLI, works anywhere Node ≥ 20 runs
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## Commands
|
|
54
|
-
|
|
55
|
-
### `install <server>`
|
|
56
|
-
|
|
57
|
-
Install an MCP server and register it with your AI clients.
|
|
58
|
-
|
|
59
|
-
```sh
|
|
60
|
-
mcpman install @modelcontextprotocol/server-filesystem
|
|
61
|
-
mcpman install my-smithery-server
|
|
62
|
-
mcpman install https://github.com/owner/repo
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
**Options:**
|
|
66
|
-
- `--client <type>` — target a specific client (`claude-desktop`, `cursor`, `vscode`, `windsurf`)
|
|
67
|
-
- `--json` — output machine-readable JSON
|
|
68
|
-
|
|
69
|
-
### `list`
|
|
70
|
-
|
|
71
|
-
List all installed MCP servers.
|
|
72
|
-
|
|
73
|
-
```sh
|
|
74
|
-
mcpman list
|
|
75
|
-
mcpman list --json
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
Shows server name, version, runtime, source, and which clients have it registered.
|
|
79
|
-
|
|
80
|
-
### `remove <server>`
|
|
81
|
-
|
|
82
|
-
Uninstall a server and deregister it from all clients.
|
|
83
|
-
|
|
84
|
-
```sh
|
|
85
|
-
mcpman remove @modelcontextprotocol/server-filesystem
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### `doctor [server]`
|
|
89
|
-
|
|
90
|
-
Run health diagnostics on all installed servers or a specific one.
|
|
91
|
-
|
|
92
|
-
```sh
|
|
93
|
-
mcpman doctor
|
|
94
|
-
mcpman doctor my-server
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
Checks: runtime availability, required env vars, process spawn, and MCP handshake.
|
|
98
|
-
|
|
99
|
-
### `init`
|
|
100
|
-
|
|
101
|
-
Scaffold an `mcpman.lock` file in the current directory for project-scoped server management.
|
|
102
|
-
|
|
103
|
-
```sh
|
|
104
|
-
mcpman init
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### `secrets`
|
|
108
|
-
|
|
109
|
-
Manage encrypted secrets for MCP servers (API keys, tokens, etc.).
|
|
110
|
-
|
|
111
|
-
```sh
|
|
112
|
-
mcpman secrets set my-server OPENAI_API_KEY=sk-...
|
|
113
|
-
mcpman secrets list my-server
|
|
114
|
-
mcpman secrets remove my-server OPENAI_API_KEY
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Secrets are stored in `~/.mcpman/vault.enc` using AES-256-CBC encryption with PBKDF2 key derivation. During `install`, vault secrets are auto-loaded to pre-fill env vars, and new credentials can be saved after installation.
|
|
118
|
-
|
|
119
|
-
### `sync`
|
|
120
|
-
|
|
121
|
-
Sync MCP server configs across all detected AI clients.
|
|
122
|
-
|
|
123
|
-
```sh
|
|
124
|
-
mcpman sync # sync all servers to all clients
|
|
125
|
-
mcpman sync --dry-run # preview changes without applying
|
|
126
|
-
mcpman sync --source cursor # use Cursor config as source of truth
|
|
127
|
-
mcpman sync --remove # remove servers not in lockfile from clients
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
**Options:**
|
|
131
|
-
- `--dry-run` — preview changes without applying
|
|
132
|
-
- `--source <client>` — use a specific client config as source of truth
|
|
133
|
-
- `--remove` — remove extra servers from clients that aren't tracked in lockfile
|
|
134
|
-
- `--yes` — skip confirmation prompts
|
|
135
|
-
|
|
136
|
-
### `audit [server]`
|
|
137
|
-
|
|
138
|
-
Scan installed servers for security vulnerabilities and compute trust scores.
|
|
139
|
-
|
|
140
|
-
```sh
|
|
141
|
-
mcpman audit # audit all servers
|
|
142
|
-
mcpman audit my-server # audit specific server
|
|
143
|
-
mcpman audit --json # machine-readable output
|
|
144
|
-
mcpman audit --fix # auto-update vulnerable servers
|
|
145
|
-
mcpman audit --fix --yes # auto-update without confirmation
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
Trust score (0–100) based on: vulnerability count, download velocity, package age, publish frequency, and maintainer signals.
|
|
149
|
-
|
|
150
|
-
The `--fix` flag checks for newer versions of vulnerable npm packages, updates them, and re-scans to verify the fixes.
|
|
151
|
-
|
|
152
|
-
### `update [server]`
|
|
153
|
-
|
|
154
|
-
Check for and apply updates to installed MCP servers.
|
|
155
|
-
|
|
156
|
-
```sh
|
|
157
|
-
mcpman update # update all servers
|
|
158
|
-
mcpman update my-server # update specific server
|
|
159
|
-
mcpman update --check # check only, don't apply
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
### `config <set|get|list|reset>`
|
|
163
|
-
|
|
164
|
-
Manage persistent CLI configuration at `~/.mcpman/config.json`.
|
|
165
|
-
|
|
166
|
-
```sh
|
|
167
|
-
mcpman config set defaultClient cursor
|
|
168
|
-
mcpman config get defaultClient
|
|
169
|
-
mcpman config list
|
|
170
|
-
mcpman config reset
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Keys: `defaultClient`, `updateCheckInterval`, `preferredRegistry`, `vaultTimeout`, `plugins`.
|
|
174
|
-
|
|
175
|
-
### `search <query>`
|
|
176
|
-
|
|
177
|
-
Search for MCP servers on npm or Smithery registry.
|
|
178
|
-
|
|
179
|
-
```sh
|
|
180
|
-
mcpman search filesystem
|
|
181
|
-
mcpman search brave --registry smithery
|
|
182
|
-
mcpman search tools --all # include plugin registries
|
|
183
|
-
mcpman search tools --limit 10
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
**Options:**
|
|
187
|
-
- `--registry <npm|smithery>` — registry to search (default: npm)
|
|
188
|
-
- `--limit <n>` — max results (default: 20, max: 100)
|
|
189
|
-
- `--all` — include plugin registries in results
|
|
190
|
-
|
|
191
|
-
### `info <server>`
|
|
192
|
-
|
|
193
|
-
Show detailed information about an MCP server package.
|
|
194
|
-
|
|
195
|
-
```sh
|
|
196
|
-
mcpman info @modelcontextprotocol/server-filesystem
|
|
197
|
-
mcpman info my-server --json
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
### `run <server>`
|
|
201
|
-
|
|
202
|
-
Launch an MCP server with vault secrets auto-injected into the process environment.
|
|
203
|
-
|
|
204
|
-
```sh
|
|
205
|
-
mcpman run my-server
|
|
206
|
-
mcpman run my-server --env API_KEY=sk-...
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
### `upgrade`
|
|
210
|
-
|
|
211
|
-
Upgrade mcpman itself to the latest version from npm.
|
|
212
|
-
|
|
213
|
-
```sh
|
|
214
|
-
mcpman upgrade # check and install latest
|
|
215
|
-
mcpman upgrade --check # only check, don't install
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
### `test [server]`
|
|
219
|
-
|
|
220
|
-
Validate MCP server connectivity by sending JSON-RPC `initialize` + `tools/list`.
|
|
221
|
-
|
|
222
|
-
```sh
|
|
223
|
-
mcpman test my-server # test a specific server
|
|
224
|
-
mcpman test --all # test all installed servers
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
Reports pass/fail, response time, and discovered tools for each server.
|
|
228
|
-
|
|
229
|
-
### `logs <server>`
|
|
230
|
-
|
|
231
|
-
Stream stdout/stderr from an MCP server process in real time.
|
|
232
|
-
|
|
233
|
-
```sh
|
|
234
|
-
mcpman logs my-server # stream logs (Ctrl+C to stop)
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
Vault secrets are auto-injected into the server environment.
|
|
238
|
-
|
|
239
|
-
### `profiles <create|switch|list|delete>`
|
|
240
|
-
|
|
241
|
-
Manage named server configuration profiles for quick switching.
|
|
242
|
-
|
|
243
|
-
```sh
|
|
244
|
-
mcpman profiles create dev # snapshot current servers as "dev"
|
|
245
|
-
mcpman profiles create prod -d "Production config"
|
|
246
|
-
mcpman profiles list # show all profiles
|
|
247
|
-
mcpman profiles switch dev # apply "dev" profile to lockfile
|
|
248
|
-
mcpman profiles delete old # remove a profile
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
After switching, run `mcpman sync` to apply the profile to all clients.
|
|
252
|
-
|
|
253
|
-
### `plugin <add|remove|list>`
|
|
254
|
-
|
|
255
|
-
Manage mcpman plugins for custom registries.
|
|
256
|
-
|
|
257
|
-
```sh
|
|
258
|
-
mcpman plugin add mcpman-plugin-ollama # install plugin
|
|
259
|
-
mcpman plugin remove mcpman-plugin-ollama # uninstall plugin
|
|
260
|
-
mcpman plugin list # show installed plugins
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
Plugins are npm packages that export a `McpmanPlugin` interface with `name`, `prefix`, and `resolve()`. Once installed, their prefix (e.g. `ollama:`) works with `mcpman install ollama:my-model`.
|
|
264
|
-
|
|
265
|
-
### `export [output-file]`
|
|
266
|
-
|
|
267
|
-
Export mcpman config, lockfile, vault, and plugins to a portable JSON file.
|
|
268
|
-
|
|
269
|
-
```sh
|
|
270
|
-
mcpman export # default: mcpman-export.json
|
|
271
|
-
mcpman export backup.json
|
|
272
|
-
mcpman export --no-vault # exclude encrypted vault
|
|
273
|
-
mcpman export --no-plugins # exclude plugin list
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
### `import <file>`
|
|
277
|
-
|
|
278
|
-
Restore mcpman config, lockfile, vault, and plugins from an export bundle.
|
|
279
|
-
|
|
280
|
-
```sh
|
|
281
|
-
mcpman import mcpman-export.json
|
|
282
|
-
mcpman import backup.json --yes # skip confirmation
|
|
283
|
-
mcpman import backup.json --dry-run # preview without applying
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
### `create [name]`
|
|
287
|
-
|
|
288
|
-
Scaffold a new MCP server project with working boilerplate.
|
|
289
|
-
|
|
290
|
-
```sh
|
|
291
|
-
mcpman create my-server # interactive prompts
|
|
292
|
-
mcpman create my-server --yes # accept defaults
|
|
293
|
-
mcpman create my-server --runtime python # Python template
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
Generates `package.json` (with `mcp` field), `src/index.ts`, and `tsconfig.json` for Node; or `pyproject.toml` and `main.py` for Python. Both templates implement the MCP protocol with a sample `hello` tool ready to run.
|
|
297
|
-
|
|
298
|
-
### `link [dir]`
|
|
299
|
-
|
|
300
|
-
Register a local MCP server directory with AI clients — like `npm link` but for MCP.
|
|
301
|
-
|
|
302
|
-
```sh
|
|
303
|
-
mcpman link . # link current directory
|
|
304
|
-
mcpman link ./path/to/server # link specific directory
|
|
305
|
-
mcpman link . --client cursor # link to specific client only
|
|
306
|
-
mcpman link . --name my-override # override detected server name
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
Reads `package.json` or `pyproject.toml` to detect name, version, and entry point. Adds a lockfile entry with `source: "local"` and registers the absolute path in client configs. No file copying — edits are picked up immediately.
|
|
310
|
-
|
|
311
|
-
### `watch <server>`
|
|
312
|
-
|
|
313
|
-
Watch a local MCP server's source files and auto-restart on changes — like nodemon, built into mcpman.
|
|
314
|
-
|
|
315
|
-
```sh
|
|
316
|
-
mcpman watch my-server # watch with defaults
|
|
317
|
-
mcpman watch my-server --dir ./src # override watch directory
|
|
318
|
-
mcpman watch my-server --ext ts,js # watch specific extensions
|
|
319
|
-
mcpman watch my-server --delay 500 # set debounce delay (ms)
|
|
320
|
-
mcpman watch my-server --clear # clear terminal on restart
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
Uses Node.js built-in `fs.watch` (no chokidar). Debounces 300ms by default. Ignores `node_modules/`, `dist/`, `.git/`, `__pycache__/`. Vault secrets are injected same as `mcpman run`.
|
|
324
|
-
|
|
325
|
-
### `registry <list|add|remove|set-default>`
|
|
326
|
-
|
|
327
|
-
Manage custom registry URLs for MCP server resolution.
|
|
328
|
-
|
|
329
|
-
```sh
|
|
330
|
-
mcpman registry list # show all registries
|
|
331
|
-
mcpman registry add corp https://mcp.corp.com/api # add custom registry
|
|
332
|
-
mcpman registry remove corp # remove custom registry
|
|
333
|
-
mcpman registry set-default smithery # change default registry
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
Built-in registries (npm, smithery) are always present and cannot be removed. Custom registries are stored in `~/.mcpman/config.json`.
|
|
337
|
-
|
|
338
|
-
### `completions <bash|zsh|fish|install>`
|
|
339
|
-
|
|
340
|
-
Generate shell completion scripts for tab-completion of commands and server names.
|
|
341
|
-
|
|
342
|
-
```sh
|
|
343
|
-
mcpman completions bash # output bash completion script
|
|
344
|
-
mcpman completions zsh # output zsh completion script
|
|
345
|
-
mcpman completions fish # output fish completion script
|
|
346
|
-
mcpman completions install # auto-detect shell and install
|
|
347
|
-
source <(mcpman completions bash) # enable completions in current session
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
Completes: subcommands, server names (from lockfile), client types (`--client`), and runtimes (`--runtime`). Server names are resolved dynamically at completion time so they stay fresh.
|
|
351
|
-
|
|
352
|
-
### `why <server>`
|
|
353
|
-
|
|
354
|
-
Show why a server is installed — source, clients, profiles, env vars.
|
|
355
|
-
|
|
356
|
-
```sh
|
|
357
|
-
mcpman why my-server # full provenance output
|
|
358
|
-
mcpman why my-server --json # JSON output for scripting
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
Displays: source (npm/smithery/github/local), resolved URL, version, installed timestamp, which clients have it registered, which named profiles include it, and required env var names. Detects orphaned servers (in client config but not in lockfile) and suggests `mcpman sync --remove`.
|
|
362
|
-
|
|
363
|
-
### `env <set|get|list|del|clear>`
|
|
364
|
-
|
|
365
|
-
Manage per-server environment variables (non-sensitive defaults).
|
|
366
|
-
|
|
367
|
-
```sh
|
|
368
|
-
mcpman env set my-server API_URL=https://api.example.com
|
|
369
|
-
mcpman env get my-server API_URL
|
|
370
|
-
mcpman env list my-server
|
|
371
|
-
mcpman env del my-server API_URL
|
|
372
|
-
mcpman env clear my-server
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
Stored in `~/.mcpman/env/<server>.json`. For sensitive values, use `mcpman secrets` instead. At runtime, vault secrets take priority over env defaults.
|
|
376
|
-
|
|
377
|
-
### `bench <server>`
|
|
378
|
-
|
|
379
|
-
Benchmark MCP server latency with JSON-RPC initialize calls.
|
|
380
|
-
|
|
381
|
-
```sh
|
|
382
|
-
mcpman bench my-server # 5 runs (default)
|
|
383
|
-
mcpman bench my-server --runs 10 # custom run count
|
|
384
|
-
mcpman bench my-server --json # machine-readable output
|
|
385
|
-
mcpman bench my-server --timeout 5000 # exit 1 if p95 > 5s
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
Reports min, max, avg, p50, p95 response times in milliseconds.
|
|
389
|
-
|
|
390
|
-
### `diff <client-a> <client-b>`
|
|
391
|
-
|
|
392
|
-
Show visual diff of MCP server configs between two AI clients.
|
|
393
|
-
|
|
394
|
-
```sh
|
|
395
|
-
mcpman diff claude-desktop cursor # color-coded diff
|
|
396
|
-
mcpman diff vscode windsurf --json # JSON output
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
Displays added (green), removed (red), and changed (yellow) servers between two client configurations. Useful before running `mcpman sync`.
|
|
400
|
-
|
|
401
|
-
### `group <add|rm|list|delete|install|run>`
|
|
402
|
-
|
|
403
|
-
Organize servers into named groups for batch operations.
|
|
404
|
-
|
|
405
|
-
```sh
|
|
406
|
-
mcpman group add work server-a server-b # tag servers
|
|
407
|
-
mcpman group rm work server-b # untag server
|
|
408
|
-
mcpman group list # show all groups
|
|
409
|
-
mcpman group list work # show group members
|
|
410
|
-
mcpman group install work # install all in group
|
|
411
|
-
mcpman group run work # run all concurrently
|
|
412
|
-
mcpman group delete work # remove entire group
|
|
413
|
-
```
|
|
414
|
-
|
|
415
|
-
Groups are lightweight labels stored in `~/.mcpman/groups.json`. Unlike profiles (full snapshots), groups are just server name lists for convenience.
|
|
416
|
-
|
|
417
|
-
### `pin <server> [version]`
|
|
418
|
-
|
|
419
|
-
Pin a server to a specific version to prevent auto-updates.
|
|
420
|
-
|
|
421
|
-
```sh
|
|
422
|
-
mcpman pin my-server 1.2.3 # pin to exact version
|
|
423
|
-
mcpman pin my-server # pin to current version
|
|
424
|
-
mcpman pin --unpin my-server # remove pin
|
|
425
|
-
mcpman pin --list # show all pinned servers
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
Pinned servers are skipped by `mcpman update` and version check notifications. Pins stored in `~/.mcpman/pins.json`.
|
|
429
|
-
|
|
430
|
-
### `rollback [index]`
|
|
431
|
-
|
|
432
|
-
Restore a previous lockfile state from automatic snapshots.
|
|
433
|
-
|
|
434
|
-
```sh
|
|
435
|
-
mcpman rollback --list # show snapshot history
|
|
436
|
-
mcpman rollback 0 # restore most recent snapshot
|
|
437
|
-
mcpman rollback 2 # restore specific snapshot
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
Snapshots are created automatically before every lockfile write. Keeps the last 5 snapshots in `~/.mcpman/rollback/`. After rollback, run `mcpman sync` to apply to all clients.
|
|
441
|
-
|
|
442
|
-
### `validate [--client <name>]`
|
|
443
|
-
|
|
444
|
-
Validate lockfile schema and client config JSON for correctness.
|
|
445
|
-
|
|
446
|
-
```sh
|
|
447
|
-
mcpman validate # validate lockfile + all clients
|
|
448
|
-
mcpman validate --client cursor # validate specific client only
|
|
449
|
-
mcpman validate --json # machine-readable output
|
|
450
|
-
```
|
|
451
|
-
|
|
452
|
-
Checks: required fields (name, version, source, command, args), valid JSON structure, mcpServers entries have command+args. Exits 1 if any errors found. Distinct from `doctor` (which checks runtime health).
|
|
453
|
-
|
|
454
|
-
### `status [--server <name>]`
|
|
455
|
-
|
|
456
|
-
Show live process status of all installed MCP servers.
|
|
457
|
-
|
|
458
|
-
```sh
|
|
459
|
-
mcpman status # check all servers
|
|
460
|
-
mcpman status --server my-server # check specific server
|
|
461
|
-
mcpman status --json # JSON output
|
|
462
|
-
```
|
|
463
|
-
|
|
464
|
-
Probes each server with a JSON-RPC `initialize` call (3s timeout). Reports: alive/dead status, response time, and error details.
|
|
465
|
-
|
|
466
|
-
### `replay [index]`
|
|
467
|
-
|
|
468
|
-
Re-run previous CLI commands from history.
|
|
469
|
-
|
|
470
|
-
```sh
|
|
471
|
-
mcpman replay --list # show last 20 commands
|
|
472
|
-
mcpman replay 0 # re-run most recent command
|
|
473
|
-
mcpman replay 5 # re-run 5th command
|
|
474
|
-
```
|
|
475
|
-
|
|
476
|
-
Maintains a ring buffer of the last 50 commands at `~/.mcpman/history.json`. Each entry includes the command, arguments, and timestamp.
|
|
477
|
-
|
|
478
|
-
### `alias <add|remove|list>`
|
|
479
|
-
|
|
480
|
-
Create short aliases for frequently used commands.
|
|
481
|
-
|
|
482
|
-
```sh
|
|
483
|
-
mcpman alias add dev "group run dev-servers"
|
|
484
|
-
mcpman alias add fs "install @modelcontextprotocol/server-filesystem"
|
|
485
|
-
mcpman alias remove dev
|
|
486
|
-
mcpman alias list
|
|
487
|
-
```
|
|
488
|
-
|
|
489
|
-
Aliases stored in `~/.mcpman/aliases.json`. Unlike groups (server batches), aliases are command-line shorthands.
|
|
490
|
-
|
|
491
|
-
### `template <save|apply|list|delete>`
|
|
492
|
-
|
|
493
|
-
Save and share install templates for team onboarding.
|
|
494
|
-
|
|
495
|
-
```sh
|
|
496
|
-
mcpman template save myteam # snapshot current servers
|
|
497
|
-
mcpman template save myteam -d "Team setup"
|
|
498
|
-
mcpman template apply myteam # print install commands
|
|
499
|
-
mcpman template list # show all templates
|
|
500
|
-
mcpman template delete myteam # remove template
|
|
501
|
-
```
|
|
502
|
-
|
|
503
|
-
Templates stored in `~/.mcpman/templates/`. Unlike `export` (full migration bundle with vault+plugins), templates are lightweight server presets for sharing.
|
|
504
|
-
|
|
505
|
-
### `notify <add|remove|list|test>`
|
|
506
|
-
|
|
507
|
-
Configure webhook and shell hooks for server lifecycle events.
|
|
508
|
-
|
|
509
|
-
```sh
|
|
510
|
-
mcpman notify add --event install --webhook https://hooks.example.com/mcp
|
|
511
|
-
mcpman notify add --event health-fail --shell "echo alert | mail admin"
|
|
512
|
-
mcpman notify list # show all hooks
|
|
513
|
-
mcpman notify remove 0 # remove hook by index
|
|
514
|
-
mcpman notify test install # fire test event
|
|
515
|
-
```
|
|
516
|
-
|
|
517
|
-
Events: `install`, `remove`, `update`, `health-fail`. Webhooks use native `fetch()`, shell hooks use `execSync`. Hooks stored in `~/.mcpman/notify.json`.
|
|
518
|
-
|
|
519
|
-
---
|
|
520
|
-
|
|
521
|
-
## Comparison
|
|
522
|
-
|
|
523
|
-
| Feature | mcpman | Smithery CLI | mcpm.sh |
|
|
524
|
-
|---|---|---|---|
|
|
525
|
-
| Multi-client support | All 4 clients | Claude only | Limited |
|
|
526
|
-
| Lockfile | `mcpman.lock` | None | None |
|
|
527
|
-
| Health checks | Runtime + env + process | None | None |
|
|
528
|
-
| Encrypted secrets | AES-256 vault | None | None |
|
|
529
|
-
| Config sync | Cross-client + `--remove` | None | None |
|
|
530
|
-
| Security audit | Trust scoring + auto-fix | None | None |
|
|
531
|
-
| CI/CD | GitHub Actions | None | None |
|
|
532
|
-
| Auto-update | Version check + notify | None | None |
|
|
533
|
-
| Registry sources | npm + Smithery + GitHub | Smithery only | npm only |
|
|
534
|
-
| Plugin system | npm-based custom registries | None | None |
|
|
535
|
-
| Export/Import | Full config portability | None | None |
|
|
536
|
-
| Server testing | JSON-RPC validation | None | None |
|
|
537
|
-
| Log streaming | Real-time stdout/stderr | None | None |
|
|
538
|
-
| Profiles | Named config switching | None | None |
|
|
539
|
-
| Self-upgrade | Built-in CLI updater | None | None |
|
|
540
|
-
| Interactive setup | Yes | Partial | No |
|
|
541
|
-
| Project-scoped | Yes (`init`) | No | No |
|
|
542
|
-
| Server scaffolding | `create` (Node + Python) | None | None |
|
|
543
|
-
| Local dev linking | `link` (like npm link) | None | None |
|
|
544
|
-
| File watching | `watch` (auto-restart) | None | None |
|
|
545
|
-
| Custom registries | `registry` CRUD | None | None |
|
|
546
|
-
| Shell completions | bash + zsh + fish | None | None |
|
|
547
|
-
| Provenance query | `why` (clients + profiles) | None | None |
|
|
548
|
-
| Env management | Per-server env var CRUD | None | None |
|
|
549
|
-
| Benchmarking | Latency p50/p95 stats | None | None |
|
|
550
|
-
| Config diff | Visual client diff | None | None |
|
|
551
|
-
| Server groups | Batch install/run tags | None | None |
|
|
552
|
-
| Version pinning | `pin`/`unpin` CLI | None | None |
|
|
553
|
-
| Rollback | Auto-snapshot + restore | None | None |
|
|
554
|
-
| Config validation | Schema + JSON checks | None | None |
|
|
555
|
-
| Live status | Process probe + response time | None | None |
|
|
556
|
-
| Command replay | History ring buffer | None | None |
|
|
557
|
-
| Command aliases | Shorthand definitions | None | None |
|
|
558
|
-
| Install templates | Sharable server presets | None | None |
|
|
559
|
-
| Event notifications | Webhook + shell hooks | None | None |
|
|
560
|
-
|
|
561
|
-
---
|
|
562
|
-
|
|
563
|
-
## Contributing
|
|
564
|
-
|
|
565
|
-
1. Fork the repo and create a feature branch
|
|
566
|
-
2. `npm install` to install dependencies
|
|
567
|
-
3. `npm test` to run the test suite
|
|
568
|
-
4. Submit a pull request with a clear description
|
|
569
|
-
|
|
570
|
-
Please follow the existing code style (TypeScript strict, ES modules).
|
|
571
|
-
|
|
572
|
-
---
|
|
573
|
-
|
|
574
|
-
## License
|
|
575
|
-
|
|
576
|
-
MIT
|
|
1
|
+
# mcpman
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+
|
|
6
|
+
Universal package manager for Model Context Protocol (MCP) servers. Install and manage MCP servers across 10+ AI clients from a single CLI.
|
|
7
|
+
|
|
8
|
+
## Supported Clients
|
|
9
|
+
|
|
10
|
+
- Claude Desktop
|
|
11
|
+
- VS Code (Copilot)
|
|
12
|
+
- Cursor
|
|
13
|
+
- Windsurf
|
|
14
|
+
- Zed
|
|
15
|
+
- And more...
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install -g mcpman
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Install an MCP server
|
|
27
|
+
mcpman install @anthropic/mcp-server-filesystem
|
|
28
|
+
|
|
29
|
+
# List installed servers
|
|
30
|
+
mcpman list
|
|
31
|
+
|
|
32
|
+
# Remove a server
|
|
33
|
+
mcpman remove @anthropic/mcp-server-filesystem
|
|
34
|
+
|
|
35
|
+
# Show status
|
|
36
|
+
mcpman status
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## How It Works
|
|
40
|
+
|
|
41
|
+
mcpman detects installed AI clients and manages their MCP server configurations automatically. It handles config file locations, server startup, and version management for each client.
|
|
42
|
+
|
|
43
|
+
## License
|
|
44
|
+
|
|
45
|
+
See [LICENSE](./LICENSE) for details.
|
package/dist/chunk-6X6Q6UZC.js
CHANGED
|
File without changes
|