mcp-config-manager 2.1.0 → 2.3.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
@@ -24,6 +24,29 @@ Simple CLI and web UI tool to manage Model Context Protocol (MCP) configurations
24
24
  - **Cross-platform**: Works on macOS, Windows, and Linux
25
25
  - **Import/Export**: Share configurations between clients and users
26
26
  - **Environment variables**: Easily manage API keys and settings
27
+ - **Per-Client Skills/Prompts/Rules**: Manage AI assistant customizations for 25+ clients
28
+ - **Claude Code/Desktop**: Skills, Commands, and Agents (`~/.claude/skills/`, `commands/`, `agents/`)
29
+ - **Cursor**: Rules (`~/.cursor/rules/`) in MDC format
30
+ - **Continue.dev**: Prompts (`~/.continue/prompts/`) and Rules (`~/.continue/rules/`)
31
+ - **Windsurf**: Rules (`~/.codeium/windsurf/memories/global_rules.md`)
32
+ - **GitHub Copilot**: Instructions and Skills (`~/.github/copilot-instructions.md`, `~/.copilot/skills/`)
33
+ - **Amazon Q**: Rules (`~/.aws/amazonq/rules/`)
34
+ - **Cline**: Rules (`~/Documents/Cline/Rules/`)
35
+ - **Roo Code**: Rules (`~/.roo/rules/`)
36
+ - **Gemini CLI**: Context, Commands, and Skills (`~/.gemini/GEMINI.md`, `commands/`, `skills/`)
37
+ - **Codex**: Agents (`~/.codex/AGENTS.md`) and Skills (`~/.codex/skills/`)
38
+ - **Mistral Vibe**: Skills and Agents (`~/.vibe/skills/`, `~/.vibe/agents/`)
39
+ - **Amp**: Skills (`~/.config/agents/skills/`)
40
+ - **Goose**: Skills (`~/.config/goose/skills/`)
41
+ - **OpenCode**: Skills (`~/.config/opencode/skills/`)
42
+ - **Firebender**: Rules (`~/.firebender/rules/`)
43
+ - **Autohand Code CLI**: Skills (`~/.autohand/skills/`)
44
+ - **pi**: Skills (`~/.pi/agent/skills/`)
45
+ - **Augment Code**: Commands and Rules (`~/.augment/commands/`, `rules/`)
46
+ - **Aider**: Config (`~/.aider.conf.yml`)
47
+ - And more: JetBrains AI, Tabnine, Piebald, TRAE, Letta, Qodo, VT Code, and others
48
+ - **Simple & Complex Skills**: Single-file skills and directory-based skills with workflows, references
49
+ - **Tab-Based UI**: Each client shows relevant tabs (Servers, Skills, Commands, Rules, Agents, etc.)
27
50
 
28
51
  ## Screenshots
29
52
 
@@ -107,6 +130,8 @@ npm run web
107
130
 
108
131
  **Note:** `mcp-manager` also works as a shorter alias for `mcp-config-manager`.
109
132
 
133
+ **Note:** Skills and commands management is available through the web UI. Use `mcp-config-manager web` to access the skills and commands management interface.
134
+
110
135
  ### Web UI
111
136
 
112
137
  **Start the web server:**
@@ -177,23 +202,105 @@ The web UI provides:
177
202
  - Add/edit/delete servers
178
203
  - Import/export configurations
179
204
  - Environment variable management
205
+ - **Per-Client Skills/Rules Mode**: Each client shows relevant tabs for its customization types
206
+ - Create, edit, and delete skills, rules, commands, prompts, and more
207
+ - Manage per-client customizations (skills for Claude, rules for Cursor, etc.)
208
+ - View and manage directory-based skill file trees
209
+
210
+ ## Skills & Customization Management
211
+
212
+ The tool includes full support for managing per-client AI assistant customizations alongside MCP server configurations. Each client has its own tabs for managing skills, commands, rules, prompts, or other customization types.
213
+
214
+ ### Per-Client Tabs
215
+
216
+ Different clients support different types of customizations:
217
+
218
+ | Client | Tabs |
219
+ |--------|------|
220
+ | Claude Code/Desktop | Skills, Commands, Agents |
221
+ | Cursor | Rules (MDC format) |
222
+ | Continue.dev | Prompts, Rules |
223
+ | Windsurf | Rules |
224
+ | GitHub Copilot | Instructions, Skills |
225
+ | Amazon Q | Rules |
226
+ | Cline | Rules |
227
+ | Roo Code | Rules |
228
+ | Gemini CLI | Context, Commands, Skills |
229
+ | Codex | Agents, Skills |
230
+ | Mistral Vibe | Skills, Agents |
231
+ | Amp (Sourcegraph) | Skills |
232
+ | Goose (Block) | Skills |
233
+ | OpenCode | Skills |
234
+ | Firebender | Rules (MDC format) |
235
+ | Autohand Code CLI | Skills |
236
+ | pi | Skills |
237
+ | Piebald | Skills, Agents |
238
+ | JetBrains AI | Rules |
239
+ | Augment Code | Commands, Rules |
240
+ | Tabnine | Guidelines |
241
+ | Aider | Config |
242
+
243
+ ### Using the Web UI
244
+
245
+ 1. **Select a client**: Each client card shows its available tabs (Servers, Skills, Commands, Rules, etc.)
246
+ 2. **Switch tabs**: Click a tab to view and manage that type of content
247
+ 3. **Create new items**: Click "Add" to create new skills, rules, commands, etc.
248
+ 4. **Edit existing**: Click on any item card to edit its content
249
+ 5. **Manage files**: For complex/directory-based skills, view and manage associated file trees
250
+ 6. **Copy items**: Duplicate items within the same tab
251
+
252
+ ### Skill File Structure (Claude Code)
253
+
254
+ ```markdown
255
+ ---
256
+ name: my-skill
257
+ description: A helpful skill description
258
+ ---
259
+
260
+ # My Skill
261
+
262
+ Instructions and content for the skill...
263
+ ```
180
264
 
181
265
  ## Supported Clients
182
266
 
183
267
  This tool supports auto-detection of any client that follows the Model Context Protocol specification. The following is a non-exhaustive list of clients that have been tested and are known to work:
184
268
 
269
+ - **Aider**: Config management (`~/.aider.conf.yml`)
270
+ - **Agentman**: Registered (no confirmed global paths)
185
271
  - **Amazon Q Developer**: `~/.aws/amazonq/mcp.json`
272
+ - **Amp** (Sourcegraph): Skills (`~/.config/agents/skills/`)
273
+ - **Augment Code**: Commands (`~/.augment/commands/`) and Rules (`~/.augment/rules/`)
274
+ - **Autohand Code CLI**: Skills (`~/.autohand/skills/`)
186
275
  - **Claude Desktop**: `~/Library/Application Support/Claude/claude_desktop_config.json`
187
276
  - **Claude Code**: `~/.claude.json` (global settings and MCP servers)
188
277
  - **Cline**: `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`
189
278
  - **Codex**: `~/.codex/config.toml` (TOML with `[mcp_servers.<name>]` tables)
279
+ - **Command Code**: Registered (no confirmed global paths)
190
280
  - **Cursor**: `.cursor/mcp.json` (project-specific) or `~/.cursor/mcp.json` (global)
281
+ - **Databricks**: Workspace-level skills support
191
282
  - **Factory Bridge**: `~/Library/Application Support/Factory Bridge/mcp.json`
283
+ - **Firebender**: Rules (`~/.firebender/rules/*.mdc`)
192
284
  - **Gemini**: `~/.gemini/settings.json`
193
285
  - **Google AntiGravity**: `~/.gemini/antigravity/mcp_config.json`
286
+ - **Goose** (Block): Skills (`~/.config/goose/skills/`)
287
+ - **JetBrains AI Assistant**: `~/.aiassistant/rules/` (rules management)
288
+ - **Letta Code**: Project-level skills support
289
+ - **Mistral Vibe**: Skills (`~/.vibe/skills/`) and Agents (`~/.vibe/agents/`)
290
+ - **Mux**: Registered (no confirmed global paths)
291
+ - **Ona**: Cloud-based AI software engineers
292
+ - **OpenCode**: Skills (`~/.config/opencode/skills/`)
293
+ - **pi**: Skills (`~/.pi/agent/skills/`)
294
+ - **Piebald**: Uses Claude Code paths (desktop app wrapper)
295
+ - **Qodo**: Registered (TOML-based agent configs)
194
296
  - **Roo Code**: `~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json`
297
+ - **Spring AI**: Library-level skills integration
298
+ - **Tabnine**: `~/.tabnine/guidelines/` (guidelines management)
299
+ - **TRAE** (ByteDance): Project-level rules support
195
300
  - **VS Code**: `.vscode/mcp.json`
301
+ - **VT Code**: Follows Agent Skills standard
196
302
  - **Windsurf**: `~/.codeium/windsurf/mcp_config.json` or `~/AppData/Roaming/WindSurf/mcp_settings.json` (Windows)
303
+ - **Zed AI**: Project-root `.rules` file for per-project configuration
197
304
 
198
305
  *Note: Paths may vary based on your operating system. The tool will attempt to find the correct path automatically.*
199
306
 
@@ -244,6 +351,51 @@ url = "https://mcp.figma.com/mcp"
244
351
  bearer_token_env_var = "FIGMA_OAUTH_TOKEN"
245
352
  ```
246
353
 
354
+ ## API Reference
355
+
356
+ The web UI communicates with the server via REST API endpoints. These can also be used for automation and integration.
357
+
358
+ ### MCP Server Endpoints
359
+
360
+ | Method | Endpoint | Description |
361
+ |--------|----------|-------------|
362
+ | GET | `/api/clients` | List all detected clients |
363
+ | GET | `/api/clients/:client/servers` | List servers for a client |
364
+ | POST | `/api/clients/:client/servers/:server` | Create a server |
365
+ | PUT | `/api/clients/:client/servers/:server` | Update a server |
366
+ | DELETE | `/api/clients/:client/servers/:server` | Delete a server |
367
+ | POST | `/api/clients/:client/servers/:server/copy` | Copy server to other clients |
368
+ | POST | `/api/clients/:client/import` | Import configuration |
369
+ | GET | `/api/clients/:client/export` | Export configuration |
370
+
371
+ ### Per-Client Skills/Prompts/Rules Endpoints
372
+
373
+ | Method | Endpoint | Description |
374
+ |--------|----------|-------------|
375
+ | GET | `/api/clients/:client/tabs` | List skill tabs for client |
376
+ | GET | `/api/clients/:client/has-skills` | Check if client supports skills |
377
+ | GET | `/api/clients/:client/tabs/:tab/items` | List items in tab |
378
+ | GET | `/api/clients/:client/tabs/:tab/items/:name` | Read item |
379
+ | POST | `/api/clients/:client/tabs/:tab/items/:name` | Create item |
380
+ | PUT | `/api/clients/:client/tabs/:tab/items/:name` | Update item |
381
+ | DELETE | `/api/clients/:client/tabs/:tab/items/:name` | Delete item |
382
+ | GET | `/api/clients/:client/tabs/:tab/items/:name/files` | List files in complex item |
383
+ | GET | `/api/clients/:client/tabs/:tab/items/:name/files/*path` | Read file |
384
+ | PUT | `/api/clients/:client/tabs/:tab/items/:name/files/*path` | Write file |
385
+ | POST | `/api/clients/:client/tabs/:tab/items/:name/copy` | Copy item |
386
+
387
+ ### Commands Endpoints
388
+
389
+ | Method | Endpoint | Description |
390
+ |--------|----------|-------------|
391
+ | GET | `/api/commands` | List all commands |
392
+ | GET | `/api/commands/:name` | Read command |
393
+ | POST | `/api/commands/:name` | Create command |
394
+ | PUT | `/api/commands/:name` | Update command |
395
+ | DELETE | `/api/commands/:name` | Delete command |
396
+ | POST | `/api/commands/:name/rename` | Rename command |
397
+ | POST | `/api/commands/:name/duplicate` | Duplicate command |
398
+
247
399
  ## Security Note
248
400
 
249
401
  Environment variables may contain sensitive data like API keys. The tool masks values containing "KEY" or "SECRET" in the display but stores them in plain text in config files.
@@ -336,6 +488,59 @@ npm run web
336
488
 
337
489
  This allows testing functionality without affecting real MCP client configurations.
338
490
 
491
+ ## What's New in v2.3.0
492
+
493
+ ### 20 New Clients with Skills Support
494
+ - **Firebender**: Rules in MDC format (`~/.firebender/rules/`)
495
+ - **Goose** (Block): Skills (`~/.config/goose/skills/`)
496
+ - **Amp** (Sourcegraph): Skills (`~/.config/agents/skills/`)
497
+ - **OpenCode**: Skills (`~/.config/opencode/skills/`)
498
+ - **Mistral Vibe**: Skills and Agents (`~/.vibe/skills/`, `~/.vibe/agents/`)
499
+ - **pi**: Skills (`~/.pi/agent/skills/`)
500
+ - **Autohand Code CLI**: Skills (`~/.autohand/skills/`)
501
+ - **Piebald**: Uses Claude Code paths
502
+ - **TRAE, Letta, Qodo, VT Code, Command Code, Ona, Agentman, Mux, Spring AI, Databricks**: Registered with placeholder support
503
+
504
+ ### New Tabs for Existing Clients
505
+ - **Claude Code/Desktop**: Added Agents tab (`~/.claude/agents/`)
506
+ - **Gemini CLI/AntiGravity**: Added Skills tab (`~/.gemini/skills/`)
507
+ - **GitHub Copilot**: Added Skills tab (`~/.copilot/skills/`)
508
+ - **Augment Code**: Added Commands tab (`~/.augment/commands/`)
509
+ - **Aider**: Added Config tab (`~/.aider.conf.yml`)
510
+
511
+ ### UI Improvements
512
+ - Widened Edit Skill modal from 900px to 1200px for better file tree + editor layout
513
+ - Fixed dead CSS selector for skill modal content
514
+
515
+ ### Total: 38 clients registered, 25 with active skills/rules support
516
+
517
+ ---
518
+
519
+ ## What's New in v2.2.0
520
+
521
+ ### Per-Client Skills/Prompts/Rules Management
522
+ - **Per-client architecture**: Each client now has its own skills, prompts, rules, or commands tabs based on what it supports
523
+ - **Tab-based UI**: Client cards show relevant tabs (Servers, Skills, Commands, Rules, etc.) depending on the client
524
+ - **Complex skills**: Full support for directory-based skills with file trees and multiple associated files
525
+ - **New API endpoints**: Complete REST API for per-client tab items and file management
526
+
527
+ ### Security Hardening
528
+ - Input validation and path traversal protection for skills/rules file operations
529
+ - Sanitized file names and directory paths
530
+
531
+ ### CSS Fixes
532
+ - Improved dark mode styling for skills/rules tabs
533
+ - Fixed tab layout and spacing across views
534
+
535
+ ---
536
+
537
+ ## What's New in v2.1.1
538
+
539
+ ### Bug Fix
540
+ - **Codex format delete fix**: Server deletion now works correctly for Codex TOML configs (previously deleted servers would reappear due to incorrect object spread in denormalizeConfig)
541
+
542
+ ---
543
+
339
544
  ## What's New in v2.1.0
340
545
 
341
546
  ### Custom Icon Editing
@@ -382,6 +587,7 @@ All servers now automatically display logos:
382
587
  ### Bug Fixes
383
588
  - Fixed server deletion in Server View (was prompting twice but not deleting)
384
589
  - Improved event handling reliability
590
+ - **Fixed Codex format delete bug**: Server deletion now works correctly for Codex TOML configs (previously deleted servers would reappear)
385
591
 
386
592
  ## License
387
593
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-config-manager",
3
- "version": "2.1.0",
3
+ "version": "2.3.0",
4
4
  "description": "Simple CLI and web UI to manage MCP configs across multiple AI clients",
5
5
  "main": "src/cli.js",
6
6
  "bin": {
package/public/index.html CHANGED
@@ -97,6 +97,7 @@
97
97
  </div>
98
98
  <div class="server-list-all" id="allServersList"></div>
99
99
  </div>
100
+
100
101
  </div>
101
102
 
102
103
  <!-- Add/Edit Server Modal -->
@@ -411,13 +412,108 @@
411
412
  </div>
412
413
  </div>
413
414
 
415
+ <!-- Skill/Item Edit Modal -->
416
+ <div id="skill-modal" class="modal" style="display: none;">
417
+ <div class="modal-content modal-large" id="skill-modal-content">
418
+ <h3 id="skill-modal-title">Edit Item</h3>
419
+
420
+ <!-- Simple skill view: metadata + content in one pane -->
421
+ <div id="skill-simple-view">
422
+ <form id="skill-form-simple">
423
+ <div class="skill-metadata-row">
424
+ <div class="form-group form-group-name">
425
+ <label for="skill-name">Name</label>
426
+ <input type="text" id="skill-name" name="name" required placeholder="my-skill">
427
+ </div>
428
+ <div class="form-group form-group-model">
429
+ <label for="skill-model">Model</label>
430
+ <input type="text" id="skill-model" name="model" placeholder="claude-3-opus">
431
+ </div>
432
+ </div>
433
+ <div class="form-group">
434
+ <label for="skill-description">Description</label>
435
+ <input type="text" id="skill-description" name="description" placeholder="What this skill does">
436
+ </div>
437
+ <div class="form-group">
438
+ <label for="skill-content">Content</label>
439
+ <textarea id="skill-content" name="content" rows="16" class="skill-content-editor" placeholder="Your skill instructions here..."></textarea>
440
+ </div>
441
+ <div class="modal-actions">
442
+ <button type="button" id="skill-cancel-btn" class="btn btn-secondary">Cancel</button>
443
+ <button type="submit" class="btn btn-primary">Save</button>
444
+ </div>
445
+ </form>
446
+ </div>
447
+
448
+ <!-- Complex skill view: file tree + editor -->
449
+ <div id="skill-complex-view" style="display: none;">
450
+ <div class="skill-complex-layout">
451
+ <div class="skill-file-tree">
452
+ <div class="file-tree-header">
453
+ <span class="file-tree-title">Files</span>
454
+ </div>
455
+ <div id="skill-file-list" class="file-list"></div>
456
+ </div>
457
+ <div class="skill-editor-pane">
458
+ <div class="editor-header">
459
+ <span id="skill-current-file">SKILL.md</span>
460
+ <button type="button" id="skill-save-file-btn" class="btn btn-small btn-primary">Save File</button>
461
+ </div>
462
+ <textarea id="skill-file-editor" class="skill-content-editor" rows="20"></textarea>
463
+ </div>
464
+ </div>
465
+ <div class="modal-actions">
466
+ <button type="button" id="skill-complex-cancel-btn" class="btn btn-secondary">Close</button>
467
+ </div>
468
+ </div>
469
+ </div>
470
+ </div>
471
+
472
+ <!-- Command Modal -->
473
+ <div id="command-modal" class="modal" style="display: none;">
474
+ <div class="modal-content">
475
+ <div class="modal-header">
476
+ <h2 id="command-modal-title">Add Command</h2>
477
+ <button class="close-btn" onclick="document.getElementById('command-modal').style.display='none'">&times;</button>
478
+ </div>
479
+ <form id="command-form">
480
+ <div class="form-group">
481
+ <label for="command-name">Command Name</label>
482
+ <input type="text" id="command-name" name="name" required placeholder="my-command" pattern="[a-z0-9-]+" title="Lowercase letters, numbers, and hyphens only">
483
+ <small class="form-hint">Will be invoked as /command-name</small>
484
+ </div>
485
+ <div class="form-group">
486
+ <label for="command-description">Description</label>
487
+ <input type="text" id="command-description" name="description" placeholder="What this command does">
488
+ </div>
489
+ <div class="form-group">
490
+ <label for="command-tools">Tools (comma-separated)</label>
491
+ <input type="text" id="command-tools" name="tools" placeholder="git, Read, Bash">
492
+ </div>
493
+ <div class="form-group">
494
+ <label for="command-content">Prompt Content</label>
495
+ <textarea id="command-content" name="content" rows="12" placeholder="The prompt expansion for this command..."></textarea>
496
+ </div>
497
+ <div class="form-actions">
498
+ <button type="button" id="command-cancel-btn" class="btn-secondary">Cancel</button>
499
+ <button type="submit" class="btn-primary">Save Command</button>
500
+ </div>
501
+ </form>
502
+ <div id="command-loading" class="loading-overlay" style="display: none;">
503
+ <div class="spinner"></div>
504
+ </div>
505
+ </div>
506
+ </div>
507
+
414
508
  <script type="module" src="js/utils.js?v=4"></script>
415
509
  <script type="module" src="js/api.js?v=4"></script>
416
510
  <script type="module" src="js/modals.js?v=4"></script>
417
- <script type="module" src="js/clientView.js?v=4"></script>
511
+ <script type="module" src="js/clientView.js?v=6"></script>
418
512
  <script type="module" src="js/kanbanView.js?v=4"></script>
419
513
  <script type="module" src="js/serverView.js?v=4"></script>
420
514
  <script type="module" src="js/popularMcps.js?v=4"></script>
421
- <script type="module" src="js/main.js?v=4"></script>
515
+ <script type="module" src="js/skillsApi.js?v=7"></script>
516
+ <script type="module" src="js/main.js?v=6"></script>
517
+ <div class="version-tag">v2.3.0</div>
422
518
  </body>
423
519
  </html>