mcpman 1.0.0 → 2.0.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/README.md CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/mcpman)](https://www.npmjs.com/package/mcpman)
4
4
  [![npm downloads](https://img.shields.io/npm/dm/mcpman)](https://www.npmjs.com/package/mcpman)
5
- [![GitHub stars](https://img.shields.io/github/stars/tranhoangtu-it/mcpman)](https://github.com/tranhoangtu-it/mcpman)
6
- [![license](https://img.shields.io/npm/l/mcpman)](https://github.com/tranhoangtu-it/mcpman/blob/main/LICENSE)
5
+ [![GitHub stars](https://img.shields.io/github/stars/tranhoangtu-it/openS-Plan-R)](https://github.com/tranhoangtu-it/openS-Plan-R)
6
+ [![license](https://img.shields.io/npm/l/mcpman)](https://github.com/tranhoangtu-it/openS-Plan-R/blob/main/LICENSE)
7
7
  ![node](https://img.shields.io/node/v/mcpman)
8
8
 
9
9
  **The package manager for MCP servers.**
10
10
 
11
- Install, manage, and inspect Model Context Protocol servers across all your AI clients — Claude Desktop, Cursor, VS Code, and Windsurf — from a single CLI.
11
+ Install, manage, and inspect Model Context Protocol servers across 10 AI clients — Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Roo Code, Codex CLI, OpenCode, Continue, and Zed — from a single CLI.
12
12
 
13
13
  <p align="center">
14
14
  <img src="./demo.gif" alt="mcpman demo" width="700">
@@ -31,28 +31,61 @@ mcpman install @modelcontextprotocol/server-filesystem
31
31
 
32
32
  ## Features
33
33
 
34
- - **Universal** manages servers for Claude Desktop, Cursor, VS Code, and Windsurf from one tool
35
- - **Registry-aware** — resolves packages from npm, Smithery, or GitHub URLs
34
+ ### Universal Client Support
35
+
36
+ Manages servers for **10 AI clients** from one tool:
37
+
38
+ | Client | Config Format |
39
+ |--------|--------------|
40
+ | Claude Desktop | JSON (`claude_desktop_config.json`) |
41
+ | Claude Code CLI | JSON (`~/.claude.json`) |
42
+ | Cursor | JSON (`~/.cursor/mcp.json`) |
43
+ | VS Code | JSON (settings.json `mcp` section) |
44
+ | Windsurf | JSON (`~/.codeium/windsurf/mcp_config.json`) |
45
+ | Roo Code | JSON (`mcp_settings.json`) |
46
+ | Codex CLI | TOML (`~/.codex/config.toml`) |
47
+ | OpenCode | TOML (`~/.config/opencode/config.toml`) |
48
+ | Continue | JSON (`~/.continue/config.json`) |
49
+ | Zed | JSON (`~/.config/zed/settings.json`) |
50
+
51
+ ### Core
52
+
53
+ - **Registry-aware** — resolves packages from npm, Smithery, GitHub URLs, or the mcpman community registry
36
54
  - **Lockfile** — tracks installed servers in `mcpman.lock` for reproducible setups
37
55
  - **Health checks** — verifies runtimes, env vars, and server connectivity with `doctor`
38
- - **Encrypted secrets** — store API keys in an AES-256 encrypted vault instead of plaintext JSON; auto-loads during install
56
+ - **Encrypted secrets** — store API keys in an AES-256 encrypted vault; auto-loads during install
39
57
  - **Config sync** — keep server configs consistent across all your AI clients; `--remove` cleans extras
40
58
  - **Security audit** — scan servers for vulnerabilities with trust scoring; `--fix` auto-updates vulnerable packages
41
59
  - **Auto-update** — get notified when server updates are available
42
- - **Plugin system** — extend mcpman with npm-based plugins for custom registries (e.g. Ollama, HuggingFace)
43
- - **Export/Import** — portable JSON bundles for full config migration across machines
44
- - **Server testing** — validate MCP servers respond to JSON-RPC initialize + tools/list
45
- - **Log streaming** — stream stdout/stderr from servers in real time
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
60
+ - **No extra daemon** — pure CLI, works anywhere Node >= 20 runs
61
+
62
+ ### v2.0 Platform Features
63
+
64
+ - **MCP Server Mode** — run mcpman itself as an MCP server with `mcpman serve`. AI agents can install, audit, and manage servers via 8 programmatic tools. Write protection via `--allow-write`
65
+ - **Remote Transport** — connect to remote MCP servers over HTTP and SSE. No local process needed
66
+ - **Registry & Publishing** — publish your own MCP servers with `mcpman publish`. Community registry powered by Cloudflare D1/R2
67
+ - **Embedded Dashboard** — launch a local HTTP dashboard with `mcpman dashboard`. REST API with server status, audit results, and health checks
68
+ - **Team Collaboration** — share server configs with `mcpman team`. RBAC roles (admin/maintainer/viewer), shared vault, and audit logging
69
+ - **Skills & Agent Sync** — universal `mcpman-skill.json` spec with format adapters for all 10 clients. Sync agent configs, tools, models, and rules across editors
70
+
71
+ ### Developer Tools
72
+
73
+ - **Server scaffolding** — `mcpman create` with Node.js and Python templates
74
+ - **Local dev linking** — `mcpman link` registers a local directory (like `npm link`)
75
+ - **File watching** — `mcpman watch` auto-restarts on source changes
76
+ - **Plugin system** — extend mcpman with npm-based plugins for custom registries
77
+ - **Shell completions** — tab-complete commands and server names in bash, zsh, and fish
78
+ - **Export/Import** — portable JSON bundles for full config migration
79
+ - **Profiles** — save/restore named server configurations
80
+ - **Auto-rollback** — snapshots before every lockfile write, restore with `mcpman rollback`
50
81
 
51
82
  ---
52
83
 
53
84
  ## Commands
54
85
 
55
- ### `install <server>`
86
+ ### Core
87
+
88
+ #### `install <server>`
56
89
 
57
90
  Install an MCP server and register it with your AI clients.
58
91
 
@@ -60,24 +93,24 @@ Install an MCP server and register it with your AI clients.
60
93
  mcpman install @modelcontextprotocol/server-filesystem
61
94
  mcpman install my-smithery-server
62
95
  mcpman install https://github.com/owner/repo
96
+ mcpman install mcpman:my-registry-server # from mcpman registry
63
97
  ```
64
98
 
65
99
  **Options:**
66
- - `--client <type>` — target a specific client (`claude-desktop`, `cursor`, `vscode`, `windsurf`)
100
+ - `--client <type>` — target a specific client (`claude-desktop`, `cursor`, `vscode`, `windsurf`, `claude-code`, `roo-code`, `codex-cli`, `opencode`, `continue`, `zed`)
67
101
  - `--json` — output machine-readable JSON
68
102
 
69
- ### `list`
103
+ #### `list`
70
104
 
71
105
  List all installed MCP servers.
72
106
 
73
107
  ```sh
74
108
  mcpman list
109
+ mcpman list --client cursor
75
110
  mcpman list --json
76
111
  ```
77
112
 
78
- Shows server name, version, runtime, source, and which clients have it registered.
79
-
80
- ### `remove <server>`
113
+ #### `remove <server>`
81
114
 
82
115
  Uninstall a server and deregister it from all clients.
83
116
 
@@ -85,7 +118,28 @@ Uninstall a server and deregister it from all clients.
85
118
  mcpman remove @modelcontextprotocol/server-filesystem
86
119
  ```
87
120
 
88
- ### `doctor [server]`
121
+ #### `update [server]`
122
+
123
+ Check for and apply updates to installed MCP servers.
124
+
125
+ ```sh
126
+ mcpman update # update all servers
127
+ mcpman update my-server # update specific server
128
+ mcpman update --check # check only, don't apply
129
+ ```
130
+
131
+ #### `upgrade`
132
+
133
+ Upgrade mcpman itself to the latest version.
134
+
135
+ ```sh
136
+ mcpman upgrade
137
+ mcpman upgrade --check
138
+ ```
139
+
140
+ ### Health & Diagnostics
141
+
142
+ #### `doctor [server]`
89
143
 
90
144
  Run health diagnostics on all installed servers or a specific one.
91
145
 
@@ -96,425 +150,349 @@ mcpman doctor my-server
96
150
 
97
151
  Checks: runtime availability, required env vars, process spawn, and MCP handshake.
98
152
 
99
- ### `init`
153
+ #### `test [server]`
100
154
 
101
- Scaffold an `mcpman.lock` file in the current directory for project-scoped server management.
155
+ Validate MCP server connectivity via JSON-RPC `initialize` + `tools/list`.
102
156
 
103
157
  ```sh
104
- mcpman init
158
+ mcpman test my-server
159
+ mcpman test --all
105
160
  ```
106
161
 
107
- ### `secrets`
162
+ #### `validate [--client <name>]`
108
163
 
109
- Manage encrypted secrets for MCP servers (API keys, tokens, etc.).
164
+ Validate lockfile schema and client config JSON for correctness.
110
165
 
111
166
  ```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
167
+ mcpman validate
168
+ mcpman validate --client cursor
115
169
  ```
116
170
 
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`
171
+ #### `status [--server <name>]`
120
172
 
121
- Sync MCP server configs across all detected AI clients.
173
+ Show live process status of all installed MCP servers.
122
174
 
123
175
  ```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
176
+ mcpman status
177
+ mcpman status --server my-server --json
128
178
  ```
129
179
 
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]`
180
+ #### `bench <server>`
137
181
 
138
- Scan installed servers for security vulnerabilities and compute trust scores.
182
+ Benchmark MCP server latency with JSON-RPC initialize calls.
139
183
 
140
184
  ```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
185
+ mcpman bench my-server --runs 10
186
+ mcpman bench my-server --timeout 5000
146
187
  ```
147
188
 
148
- Trust score (0–100) based on: vulnerability count, download velocity, package age, publish frequency, and maintainer signals.
189
+ ### Config & Sync
149
190
 
150
- The `--fix` flag checks for newer versions of vulnerable npm packages, updates them, and re-scans to verify the fixes.
191
+ #### `init`
151
192
 
152
- ### `update [server]`
153
-
154
- Check for and apply updates to installed MCP servers.
193
+ Scaffold an `mcpman.lock` file in the current directory.
155
194
 
156
195
  ```sh
157
- mcpman update # update all servers
158
- mcpman update my-server # update specific server
159
- mcpman update --check # check only, don't apply
196
+ mcpman init
160
197
  ```
161
198
 
162
- ### `config <set|get|list|reset>`
199
+ #### `config <set|get|list|reset>`
163
200
 
164
- Manage persistent CLI configuration at `~/.mcpman/config.json`.
201
+ Manage persistent CLI configuration.
165
202
 
166
203
  ```sh
167
204
  mcpman config set defaultClient cursor
168
205
  mcpman config get defaultClient
169
206
  mcpman config list
170
- mcpman config reset
171
207
  ```
172
208
 
173
- Keys: `defaultClient`, `updateCheckInterval`, `preferredRegistry`, `vaultTimeout`, `plugins`.
174
-
175
- ### `search <query>`
209
+ #### `sync`
176
210
 
177
- Search for MCP servers on npm or Smithery registry.
211
+ Sync MCP server configs across all detected AI clients.
178
212
 
179
213
  ```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
214
+ mcpman sync
215
+ mcpman sync --dry-run
216
+ mcpman sync --source cursor --remove
184
217
  ```
185
218
 
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
219
+ #### `diff <client-a> <client-b>`
190
220
 
191
- ### `info <server>`
192
-
193
- Show detailed information about an MCP server package.
221
+ Show visual diff of MCP server configs between two clients.
194
222
 
195
223
  ```sh
196
- mcpman info @modelcontextprotocol/server-filesystem
197
- mcpman info my-server --json
224
+ mcpman diff claude-desktop cursor
198
225
  ```
199
226
 
200
- ### `run <server>`
227
+ #### `secrets`
201
228
 
202
- Launch an MCP server with vault secrets auto-injected into the process environment.
229
+ Manage encrypted secrets (AES-256-CBC vault).
203
230
 
204
231
  ```sh
205
- mcpman run my-server
206
- mcpman run my-server --env API_KEY=sk-...
232
+ mcpman secrets set my-server OPENAI_API_KEY=sk-...
233
+ mcpman secrets list my-server
234
+ mcpman secrets remove my-server OPENAI_API_KEY
207
235
  ```
208
236
 
209
- ### `upgrade`
237
+ #### `env <set|get|list|del|clear>`
210
238
 
211
- Upgrade mcpman itself to the latest version from npm.
239
+ Manage per-server environment variables (non-sensitive defaults).
212
240
 
213
241
  ```sh
214
- mcpman upgrade # check and install latest
215
- mcpman upgrade --check # only check, don't install
242
+ mcpman env set my-server API_URL=https://api.example.com
243
+ mcpman env list my-server
216
244
  ```
217
245
 
218
- ### `test [server]`
246
+ ### Discovery & Registry
247
+
248
+ #### `search <query>`
219
249
 
220
- Validate MCP server connectivity by sending JSON-RPC `initialize` + `tools/list`.
250
+ Search for MCP servers on npm, Smithery, or mcpman registry.
221
251
 
222
252
  ```sh
223
- mcpman test my-server # test a specific server
224
- mcpman test --all # test all installed servers
253
+ mcpman search filesystem
254
+ mcpman search brave --registry smithery
255
+ mcpman search tools --all --limit 10
225
256
  ```
226
257
 
227
- Reports pass/fail, response time, and discovered tools for each server.
228
-
229
- ### `logs <server>`
258
+ #### `info <server>`
230
259
 
231
- Stream stdout/stderr from an MCP server process in real time.
260
+ Show detailed information about an MCP server package.
232
261
 
233
262
  ```sh
234
- mcpman logs my-server # stream logs (Ctrl+C to stop)
263
+ mcpman info @modelcontextprotocol/server-filesystem
235
264
  ```
236
265
 
237
- Vault secrets are auto-injected into the server environment.
266
+ #### `why <server>`
238
267
 
239
- ### `profiles <create|switch|list|delete>`
240
-
241
- Manage named server configuration profiles for quick switching.
268
+ Show why a server is installed — source, clients, profiles, env vars.
242
269
 
243
270
  ```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
271
+ mcpman why my-server
249
272
  ```
250
273
 
251
- After switching, run `mcpman sync` to apply the profile to all clients.
274
+ #### `publish`
252
275
 
253
- ### `plugin <add|remove|list>`
276
+ Publish an MCP server to the mcpman community registry.
277
+
278
+ ```sh
279
+ mcpman publish
280
+ mcpman publish --registry https://registry.mcpman.dev
281
+ ```
254
282
 
255
- Manage mcpman plugins for custom registries.
283
+ #### `registry <list|add|remove|set-default>`
284
+
285
+ Manage custom registry URLs.
256
286
 
257
287
  ```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
288
+ mcpman registry list
289
+ mcpman registry add corp https://mcp.corp.com/api
290
+ mcpman registry remove corp
261
291
  ```
262
292
 
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`.
293
+ ### Server Authoring
264
294
 
265
- ### `export [output-file]`
295
+ #### `create [name]`
266
296
 
267
- Export mcpman config, lockfile, vault, and plugins to a portable JSON file.
297
+ Scaffold a new MCP server project.
268
298
 
269
299
  ```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
300
+ mcpman create my-server
301
+ mcpman create my-server --runtime python
274
302
  ```
275
303
 
276
- ### `import <file>`
304
+ #### `link [dir]`
277
305
 
278
- Restore mcpman config, lockfile, vault, and plugins from an export bundle.
306
+ Register a local MCP server directory with AI clients.
279
307
 
280
308
  ```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
309
+ mcpman link .
310
+ mcpman link ./path/to/server --client cursor
284
311
  ```
285
312
 
286
- ### `create [name]`
313
+ #### `watch <server>`
287
314
 
288
- Scaffold a new MCP server project with working boilerplate.
315
+ Watch source files and auto-restart on changes.
289
316
 
290
317
  ```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
318
+ mcpman watch my-server
319
+ mcpman watch my-server --ext ts,js --delay 500
294
320
  ```
295
321
 
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.
322
+ ### Organization
297
323
 
298
- ### `link [dir]`
324
+ #### `profiles <create|switch|list|delete>`
299
325
 
300
- Register a local MCP server directory with AI clients — like `npm link` but for MCP.
326
+ Manage named server configuration profiles.
301
327
 
302
328
  ```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
329
+ mcpman profiles create dev
330
+ mcpman profiles switch dev
331
+ mcpman profiles list
307
332
  ```
308
333
 
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.
334
+ #### `group <add|rm|list|delete|install|run>`
310
335
 
311
- ### `watch <server>`
312
-
313
- Watch a local MCP server's source files and auto-restart on changes — like nodemon, built into mcpman.
336
+ Organize servers into named groups for batch operations.
314
337
 
315
338
  ```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
339
+ mcpman group add work server-a server-b
340
+ mcpman group install work
341
+ mcpman group run work
321
342
  ```
322
343
 
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`.
344
+ #### `pin <server> [version]`
324
345
 
325
- ### `registry <list|add|remove|set-default>`
326
-
327
- Manage custom registry URLs for MCP server resolution.
346
+ Pin a server to a specific version.
328
347
 
329
348
  ```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
349
+ mcpman pin my-server 1.2.3
350
+ mcpman pin --unpin my-server
334
351
  ```
335
352
 
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>`
353
+ #### `rollback [index]`
339
354
 
340
- Generate shell completion scripts for tab-completion of commands and server names.
355
+ Restore a previous lockfile state from automatic snapshots.
341
356
 
342
357
  ```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
358
+ mcpman rollback --list
359
+ mcpman rollback 0
348
360
  ```
349
361
 
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.
362
+ #### `template <save|apply|list|delete>`
351
363
 
352
- ### `why <server>`
353
-
354
- Show why a server is installed — source, clients, profiles, env vars.
364
+ Save and share install templates.
355
365
 
356
366
  ```sh
357
- mcpman why my-server # full provenance output
358
- mcpman why my-server --json # JSON output for scripting
367
+ mcpman template save myteam
368
+ mcpman template apply myteam
359
369
  ```
360
370
 
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`.
371
+ ### Platform (v2.0)
362
372
 
363
- ### `env <set|get|list|del|clear>`
373
+ #### `serve`
364
374
 
365
- Manage per-server environment variables (non-sensitive defaults).
375
+ Run mcpman as an MCP server over stdio transport. AI agents can call 8 tools: `mcpman_install`, `mcpman_remove`, `mcpman_list`, `mcpman_search`, `mcpman_audit`, `mcpman_doctor`, `mcpman_info`, `mcpman_status`.
366
376
 
367
377
  ```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
378
+ mcpman serve # read-only mode (default)
379
+ mcpman serve --allow-write # enable destructive operations (remove)
373
380
  ```
374
381
 
375
- Stored in `~/.mcpman/env/<server>.json`. For sensitive values, use `mcpman secrets` instead. At runtime, vault secrets take priority over env defaults.
382
+ #### `dashboard`
376
383
 
377
- ### `bench <server>`
378
-
379
- Benchmark MCP server latency with JSON-RPC initialize calls.
384
+ Launch an embedded HTTP dashboard with REST API endpoints.
380
385
 
381
386
  ```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
387
+ mcpman dashboard
388
+ mcpman dashboard --port 8080
386
389
  ```
387
390
 
388
- Reports min, max, avg, p50, p95 response times in milliseconds.
391
+ Endpoints: `/api/servers`, `/api/clients`, `/api/health`, `/api/audit`, `/api/status`.
389
392
 
390
- ### `diff <client-a> <client-b>`
393
+ #### `team <init|add|remove|list|sync|share|audit>`
391
394
 
392
- Show visual diff of MCP server configs between two AI clients.
395
+ Team collaboration with RBAC and shared vault.
393
396
 
394
397
  ```sh
395
- mcpman diff claude-desktop cursor # color-coded diff
396
- mcpman diff vscode windsurf --json # JSON output
398
+ mcpman team init my-team # initialize team config
399
+ mcpman team add alice --role maintainer # add team member
400
+ mcpman team sync # sync team servers to local
401
+ mcpman team share # share local servers to team
402
+ mcpman team audit # view audit log
397
403
  ```
398
404
 
399
- Displays added (green), removed (red), and changed (yellow) servers between two client configurations. Useful before running `mcpman sync`.
405
+ Roles: `admin` (full access), `maintainer` (add/remove servers), `viewer` (read-only).
400
406
 
401
- ### `group <add|rm|list|delete|install|run>`
407
+ #### `skill <install|list|remove|sync|export>`
402
408
 
403
- Organize servers into named groups for batch operations.
409
+ Manage MCP server skills with universal spec.
404
410
 
405
411
  ```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
412
+ mcpman skill install ./my-skill
413
+ mcpman skill sync --client claude-code
414
+ mcpman skill list
413
415
  ```
414
416
 
415
- Groups are lightweight labels stored in `~/.mcpman/groups.json`. Unlike profiles (full snapshots), groups are just server name lists for convenience.
417
+ #### `agent <sync|list|export>`
416
418
 
417
- ### `pin <server> [version]`
418
-
419
- Pin a server to a specific version to prevent auto-updates.
419
+ Sync agent configurations across AI clients.
420
420
 
421
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
422
+ mcpman agent sync
423
+ mcpman agent list
424
+ mcpman agent export --client roo-code
426
425
  ```
427
426
 
428
- Pinned servers are skipped by `mcpman update` and version check notifications. Pins stored in `~/.mcpman/pins.json`.
427
+ ### Operations
429
428
 
430
- ### `rollback [index]`
429
+ #### `run <server>`
431
430
 
432
- Restore a previous lockfile state from automatic snapshots.
431
+ Launch an MCP server with vault secrets auto-injected.
433
432
 
434
433
  ```sh
435
- mcpman rollback --list # show snapshot history
436
- mcpman rollback 0 # restore most recent snapshot
437
- mcpman rollback 2 # restore specific snapshot
434
+ mcpman run my-server
438
435
  ```
439
436
 
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>]`
437
+ #### `logs <server>`
443
438
 
444
- Validate lockfile schema and client config JSON for correctness.
439
+ Stream stdout/stderr from an MCP server process.
445
440
 
446
441
  ```sh
447
- mcpman validate # validate lockfile + all clients
448
- mcpman validate --client cursor # validate specific client only
449
- mcpman validate --json # machine-readable output
442
+ mcpman logs my-server
450
443
  ```
451
444
 
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).
445
+ #### `notify <add|remove|list|test>`
453
446
 
454
- ### `status [--server <name>]`
455
-
456
- Show live process status of all installed MCP servers.
447
+ Configure webhook and shell hooks for lifecycle events.
457
448
 
458
449
  ```sh
459
- mcpman status # check all servers
460
- mcpman status --server my-server # check specific server
461
- mcpman status --json # JSON output
450
+ mcpman notify add --event install --webhook https://hooks.example.com/mcp
451
+ mcpman notify test install
462
452
  ```
463
453
 
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]`
454
+ #### `replay [index]`
467
455
 
468
456
  Re-run previous CLI commands from history.
469
457
 
470
458
  ```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
459
+ mcpman replay --list
460
+ mcpman replay 0
474
461
  ```
475
462
 
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>`
463
+ #### `alias <add|remove|list>`
479
464
 
480
- Create short aliases for frequently used commands.
465
+ Create command shorthands.
481
466
 
482
467
  ```sh
483
- mcpman alias add dev "group run dev-servers"
484
468
  mcpman alias add fs "install @modelcontextprotocol/server-filesystem"
485
- mcpman alias remove dev
486
- mcpman alias list
487
469
  ```
488
470
 
489
- Aliases stored in `~/.mcpman/aliases.json`. Unlike groups (server batches), aliases are command-line shorthands.
490
-
491
- ### `template <save|apply|list|delete>`
471
+ #### `export / import`
492
472
 
493
- Save and share install templates for team onboarding.
473
+ Portable config migration.
494
474
 
495
475
  ```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
476
+ mcpman export backup.json
477
+ mcpman import backup.json --dry-run
501
478
  ```
502
479
 
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>`
480
+ #### `plugin <add|remove|list>`
506
481
 
507
- Configure webhook and shell hooks for server lifecycle events.
482
+ Manage npm-based plugins for custom registries.
508
483
 
509
484
  ```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
485
+ mcpman plugin add mcpman-plugin-ollama
515
486
  ```
516
487
 
517
- Events: `install`, `remove`, `update`, `health-fail`. Webhooks use native `fetch()`, shell hooks use `execSync`. Hooks stored in `~/.mcpman/notify.json`.
488
+ #### `completions <bash|zsh|fish|install>`
489
+
490
+ Generate shell completion scripts.
491
+
492
+ ```sh
493
+ source <(mcpman completions bash)
494
+ mcpman completions install
495
+ ```
518
496
 
519
497
  ---
520
498
 
@@ -522,41 +500,27 @@ Events: `install`, `remove`, `update`, `health-fail`. Webhooks use native `fetch
522
500
 
523
501
  | Feature | mcpman | Smithery CLI | mcpm.sh |
524
502
  |---|---|---|---|
525
- | Multi-client support | All 4 clients | Claude only | Limited |
503
+ | Multi-client support | **All 10 clients** | Claude only | Limited |
526
504
  | Lockfile | `mcpman.lock` | None | None |
527
505
  | Health checks | Runtime + env + process | None | None |
528
506
  | Encrypted secrets | AES-256 vault | None | None |
529
507
  | Config sync | Cross-client + `--remove` | None | None |
530
508
  | 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 |
509
+ | MCP server mode | 8 tools via stdio | None | None |
510
+ | Remote transport | HTTP + SSE | None | None |
511
+ | Dashboard | REST API + UI | None | None |
512
+ | Team collaboration | RBAC + audit log | None | None |
513
+ | Skills & agent sync | Universal spec + adapters | None | None |
514
+ | Registry & publishing | npm + Smithery + GitHub + mcpman | Smithery only | npm only |
534
515
  | 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 |
516
+ | Server scaffolding | Node + Python templates | None | None |
543
517
  | Local dev linking | `link` (like npm link) | None | None |
544
518
  | File watching | `watch` (auto-restart) | None | None |
545
- | Custom registries | `registry` CRUD | None | None |
546
519
  | 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 |
520
+ | Export/Import | Full config portability | None | None |
521
+ | Profiles | Named config switching | None | None |
522
+ | Auto-rollback | Snapshot + restore | None | None |
523
+ | CI/CD | GitHub Actions | None | None |
560
524
 
561
525
  ---
562
526
 
@@ -564,7 +528,7 @@ Events: `install`, `remove`, `update`, `health-fail`. Webhooks use native `fetch
564
528
 
565
529
  1. Fork the repo and create a feature branch
566
530
  2. `npm install` to install dependencies
567
- 3. `npm test` to run the test suite
531
+ 3. `npm test` to run the test suite (1,123 tests)
568
532
  4. Submit a pull request with a clear description
569
533
 
570
534
  Please follow the existing code style (TypeScript strict, ES modules).