mcpick 0.0.20 → 0.0.22

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.
Files changed (43) hide show
  1. package/.github/copilot-instructions.md +39 -21
  2. package/CHANGELOG.md +24 -4
  3. package/CONTEXT.md +49 -0
  4. package/README.md +149 -309
  5. package/dist/{add-BDyaBew0.js → add-Bok0qbXi.js} +4 -5
  6. package/dist/{add-json-BjgzdeG-.js → add-json-C44vy2A_.js} +3 -3
  7. package/dist/{atomic-write-BqEykHp9.js → atomic-write-4lANmzsO.js} +1 -1
  8. package/dist/{backup-DSDhHI5f.js → backup-bdg6dvsb.js} +5 -5
  9. package/dist/{cache-D6kd7qE8.js → cache-CSUcGdZP.js} +3 -3
  10. package/dist/cli-avr5R1LO.js +111 -0
  11. package/dist/clients-CSQgqHzb.js +30 -0
  12. package/dist/{clone-DYKPEsar.js → clone-CQ0skkT6.js} +6 -7
  13. package/dist/{config-DijVdEFn.js → config-BhX4eAgg.js} +4 -4
  14. package/dist/{dev-DRJRNp7y.js → dev-CTDg5g-c.js} +6 -6
  15. package/dist/{disable-xJXZfUR_.js → disable-DLlOj7sc.js} +3 -4
  16. package/dist/{enable-RrpcN6la.js → enable-CGFYYC2A.js} +3 -4
  17. package/dist/{get-Bb1eOOIZ.js → get-l-eAJhBy.js} +3 -3
  18. package/dist/{hooks-Bmn7pUZa.js → hooks-BWZ_Kgx3.js} +4 -4
  19. package/dist/index.js +1485 -318
  20. package/dist/list-By--kltj.js +100 -0
  21. package/dist/{marketplace-DcKk5dc1.js → marketplace-DdiKDDKK.js} +4 -5
  22. package/dist/output-BgN9Uuxf.js +17 -0
  23. package/dist/{paths-BPISiJi4.js → paths-6wrIM8yh.js} +1 -1
  24. package/dist/{plugin-cache-Bby9Dxm9.js → plugin-cache-DKcW8LGV.js} +3 -3
  25. package/dist/{plugins-Dc7DN6R_.js → plugins-CsXE8AH4.js} +5 -5
  26. package/dist/{profile-CX97sMGp.js → profile-DzGPsdsl.js} +5 -5
  27. package/dist/redact-Dltz2gde.js +88 -0
  28. package/dist/{reload-CYDhkCVZ.js → reload-C29-vuvy.js} +2 -2
  29. package/dist/{remove-D1owHLhG.js → remove-B5q4rQRU.js} +3 -4
  30. package/dist/{reset-project-choices-BfRSNN3m.js → reset-project-choices-Dhh4CxIC.js} +3 -3
  31. package/dist/{restore-DdMfUljI.js → restore-BI8aiszM.js} +6 -6
  32. package/dist/{settings-DEcWtzLE.js → settings-CZR8bVfh.js} +5 -5
  33. package/dist/skills-DPBDmION.js +216 -0
  34. package/dist/{validation-xMlbgGCF.js → validation-qWlF51fw.js} +1 -1
  35. package/package.json +20 -6
  36. package/dist/claude-cli-DnmBJrjg.js +0 -445
  37. package/dist/cli-CsFfnWBo.js +0 -84
  38. package/dist/hook-state-Di8lUsPr.js +0 -171
  39. package/dist/list-B8YeDWt6.js +0 -64
  40. package/dist/output-BchYq0mR.js +0 -15
  41. package/dist/profile-DkY_lBEm.js +0 -70
  42. package/dist/redact-O35tjnRD.js +0 -26
  43. package/dist/registry-CfUKT7_C.js +0 -92
@@ -1,32 +1,50 @@
1
- # McPick Development Instructions
1
+ # MCPick Development Instructions
2
2
 
3
- **Always reference these instructions first and fallback to search or
4
- bash commands only when you encounter unexpected information that does
5
- not match the info here.**
3
+ ## Project shape
6
4
 
7
- ## Working Effectively
5
+ MCPick is a vendor-neutral MCP configuration manager with first-class
6
+ Claude Code support.
8
7
 
9
- ### Prerequisites and Setup
8
+ - Keep MCP server functionality client-neutral where possible.
9
+ - Keep Claude Code plugins, hooks, marketplaces, and cache commands
10
+ clearly Claude-specific.
11
+ - Prefer CLI flows that work well for LLM agents: non-interactive
12
+ flags, `--json`, useful help text, and redacted output.
10
13
 
11
- - Install Node.js >=22.0.0
12
- - Install pnpm globally: `npm install -g pnpm` (takes ~2 seconds)
14
+ ## Prerequisites
13
15
 
14
- ### Development Commands
16
+ - Node.js >=22.0.0
17
+ - pnpm
15
18
 
16
- - **Format code**: `pnpm run format`
17
- - **Build**: `pnpm run build`
19
+ ## Common commands
18
20
 
19
- ## Validation Requirements
21
+ ```bash
22
+ pnpm install
23
+ pnpm test
24
+ pnpm run check
25
+ pnpm build
26
+ ```
20
27
 
21
- ### ALWAYS run these before submitting changes:
28
+ ## Validation before finishing
22
29
 
23
- 1. `pnpm run format` - Auto-format all code
24
- 2. `pnpm run build` - Check for build issues
30
+ Always run:
25
31
 
26
- #### Add changeset once you're done
32
+ ```bash
33
+ pnpm run check
34
+ pnpm test
35
+ pnpm build
36
+ ```
27
37
 
28
- Run `pnpm changeset` then follow the prompts. Use this after having
29
- finished the task. Most of the time this is a patch release for
30
- `mcpick`. Use a short and descriptive message. Always prefix the
31
- message with either `fix`, `feat`, `breaking`, or `chore` (most likely
32
- `fix` since you're mostly working on bugfixes).
38
+ `pnpm run check` validates formatting, lint, and types through
39
+ vite-plus.
40
+
41
+ ## Changesets
42
+
43
+ For user-facing changes, add a changeset:
44
+
45
+ ```bash
46
+ pnpm changeset
47
+ ```
48
+
49
+ Use a short message prefixed with `feat`, `fix`, `chore`, or
50
+ `breaking`.
package/CHANGELOG.md CHANGED
@@ -1,19 +1,39 @@
1
1
  # mcpick
2
2
 
3
+ ## 0.0.22
4
+
5
+ ### Patch Changes
6
+
7
+ - 55a46c0: chore: remove outdated documentation and refresh README for
8
+ vendor-neutral MCPick architecture and current CLI flows
9
+ - f30675a: Add vendor-neutral skills management, client-first TUI
10
+ refactor, and safer redacted CLI output for agents.
11
+
12
+ ## 0.0.21
13
+
14
+ ### Patch Changes
15
+
16
+ - 47e40be: chore: reorder TUI menu and update README for agent-first
17
+ usage
18
+
3
19
  ## 0.0.20
4
20
 
5
21
  ### Patch Changes
6
22
 
7
23
  - 00ea930: chore: add unit tests and CI workflow with GitHub Actions
8
- - 37a62e1: feat: auto-show help instead of TUI in non-TTY environments for LLM agents
9
- - fc1db54: fix: replace exec with execFile to eliminate shell injection on all platforms
24
+ - 37a62e1: feat: auto-show help instead of TUI in non-TTY environments
25
+ for LLM agents
26
+ - fc1db54: fix: replace exec with execFile to eliminate shell
27
+ injection on all platforms
10
28
 
11
29
  ## 0.0.19
12
30
 
13
31
  ### Patch Changes
14
32
 
15
- - 5ed618e: Migrate build tooling from tsc/prettier to vite-plus, fix all lint warnings
16
- - 08997dc: feat: rewrite --help for LLM agents with workflow, concepts, and examples sections
33
+ - 5ed618e: Migrate build tooling from tsc/prettier to vite-plus, fix
34
+ all lint warnings
35
+ - 08997dc: feat: rewrite --help for LLM agents with workflow,
36
+ concepts, and examples sections
17
37
 
18
38
  ## 0.0.18
19
39
 
package/CONTEXT.md ADDED
@@ -0,0 +1,49 @@
1
+ # MCPick
2
+
3
+ MCPick manages Model Context Protocol configuration across AI
4
+ development tools without making one vendor's config format the
5
+ product model.
6
+
7
+ ## Language
8
+
9
+ **MCP Server**: A runnable or remote tool provider exposed through the
10
+ Model Context Protocol. _Avoid_: Claude server, plugin server
11
+
12
+ **MCP Client**: An AI application that loads MCP Server configuration
13
+ and exposes those tools to a model. _Avoid_: Vendor, app, host
14
+
15
+ **Client Adapter**: A module that translates between MCPick's portable
16
+ MCP Server shape and one MCP Client's config file shape. _Avoid_:
17
+ Provider, integration, plugin
18
+
19
+ **Portable Server**: MCPick's canonical representation of an MCP
20
+ Server independent of any MCP Client config file. _Avoid_: Claude
21
+ config, raw config
22
+
23
+ **Config Location**: A file path and scope where an MCP Client reads
24
+ MCP Server configuration. _Avoid_: path helper, config target
25
+
26
+ **Profile**: A saved set of Portable Servers intended to be applied to
27
+ one or more MCP Clients. _Avoid_: Claude profile
28
+
29
+ ## Relationships
30
+
31
+ - An **MCP Client** reads one or more **Config Locations**.
32
+ - A **Client Adapter** translates between a **Config Location** and
33
+ **Portable Servers**.
34
+ - A **Profile** contains **Portable Servers**.
35
+ - An **MCP Server** may appear in multiple **MCP Clients** with
36
+ client-specific options.
37
+
38
+ ## Example dialogue
39
+
40
+ > **Dev:** "Can we enable the Google docs MCP server in Gemini and
41
+ > Cursor without rewriting the JSON twice?" **Domain expert:** "Yes —
42
+ > keep it as a **Portable Server**, then let each **Client Adapter**
43
+ > write the right **Config Location**."
44
+
45
+ ## Flagged ambiguities
46
+
47
+ - "server config" used to mean both MCPick registry entries and
48
+ client-specific JSON. Resolved: **Portable Server** for MCPick's
49
+ shape, **Config Location** for client-owned files.
package/README.md CHANGED
@@ -1,366 +1,206 @@
1
- # McPick
1
+ # MCPick
2
2
 
3
- A CLI tool for managing MCP servers, plugins, and plugin caches in
4
- Claude Code. Toggle servers and plugins on/off, manage stale plugin
5
- caches, and optimise context usage and performance.
3
+ [![built with vite+](https://img.shields.io/badge/built%20with-Vite+-646CFF?logo=vite&logoColor=white)](https://viteplus.dev)
4
+ [![tested with vitest](https://img.shields.io/badge/tested%20with-Vitest-6E9F18?logo=vitest&logoColor=white)](https://vitest.dev)
6
5
 
7
- ## Installation
6
+ Vendor-neutral MCP configuration manager with first-class Claude Code
7
+ support.
8
8
 
9
- ### One-time Usage (recommended)
9
+ MCPick helps humans and LLM agents inspect, toggle, and back up MCP
10
+ server configuration across multiple AI clients. Claude Code-specific
11
+ plugins, hooks, marketplaces, and cache commands remain available, but
12
+ they are no longer the core product model.
10
13
 
11
- ```bash
12
- pnpx mcpick
13
- # or
14
- pnpm dlx mcpick
15
- # or
16
- npx mcpick
17
- ```
18
-
19
- ### Global Installation
14
+ ## Install
20
15
 
21
16
  ```bash
22
- pnpm install -g mcpick
23
- # or
24
17
  npm install -g mcpick
18
+ # or run without installing
19
+ npx mcpick --help
25
20
  ```
26
21
 
27
- ## The Problem
28
-
29
- Using the Claude Code `/doctor` command you may see something like
30
- this if you have many MCP servers configured:
31
-
32
- ```bash
33
- Context Usage Warnings
34
- └ ⚠ Large MCP tools context (~66,687 tokens > 25,000)
35
- └ MCP servers:
36
- └ mcp-omnisearch-testing: 20 tools (~10,494 tokens)
37
- └ mcp-omnisearch: 20 tools (~10,454 tokens)
38
- └ mcp-sqlite-tools-testing: 19 tools (~9,910 tokens)
39
- └ mcp-sqlite-tools: 19 tools (~9,872 tokens)
40
- └ playwright: 21 tools (~9,804 tokens)
41
- └ (7 more servers)
42
- ```
43
-
44
- Claude Code loads **all** MCP servers from your `.claude.json` file at
45
- startup, regardless of whether you need them for your current task.
46
- This can lead to:
22
+ Requirements:
47
23
 
48
- - 🐌 Slower Claude Code startup times
49
- - 💾 High context token usage
50
- - 🧠 Cognitive overload from too many available tools
51
-
52
- ## The Solution
24
+ - Node.js 22+
25
+ - Claude Code is required only for Claude Code-specific commands
26
+ - The external `skills` CLI is used through `npx -y skills@latest` for
27
+ portable skills commands
53
28
 
54
- McPick provides an intuitive CLI menu and non-interactive subcommands
55
- to:
29
+ ## Agent-first CLI
56
30
 
57
- - **Toggle servers on/off** - Enable only the MCP servers you need
58
- for your current task
59
- - 🔌 **Toggle plugins on/off** - Enable or disable Claude Code
60
- marketplace plugins
61
- - 🗑️ **Manage plugin cache** - Detect stale plugins, clear caches,
62
- clean orphaned versions, refresh marketplaces
63
- - 📁 **Manage server registry** - Keep a database of all your
64
- available MCP servers
65
- - 🔄 **Safe configuration** - Only modifies the `mcpServers` section,
66
- preserving other Claude Code settings
67
- - 💾 **Backup & restore** - Create focused backups of your MCP server
68
- configurations
31
+ In non-TTY environments, MCPick shows help instead of launching the
32
+ interactive TUI. This makes it safer for prompts like:
69
33
 
70
- ## Features
34
+ > “Use mcpick to work out how to enable this MCP server.”
71
35
 
72
- ### Interactive Menu
36
+ Start with:
73
37
 
74
38
  ```bash
75
- ┌ McPick - MCP Server Configuration Manager
76
-
77
- ◆ What would you like to do?
78
- │ ● Enable / Disable MCP servers (Toggle MCP servers on/off)
79
- │ ○ Enable / Disable plugins (Toggle Claude Code plugins on/off)
80
- │ ○ Manage plugin cache (View, clear, or refresh plugin caches)
81
- │ ○ Backup config
82
- │ ○ Add MCP server
83
- │ ○ Restore from backup
84
- │ ○ Load profile
85
- │ ○ Save profile
86
- │ ○ Exit
87
-
39
+ npx mcpick --help
40
+ npx mcpick clients
41
+ npx mcpick list --json
88
42
  ```
89
43
 
90
- ### Scope Support
44
+ MCPick redacts known secret patterns before printing output. MCP
45
+ configs often contain env vars and authorization headers, so `env` and
46
+ `headers` values are shown as `***` in JSON output.
91
47
 
92
- MCPick supports the three MCP server scopes used by Claude Code:
48
+ ## MCP clients
93
49
 
94
- | Scope | Description | Storage Location |
95
- | ----------- | ------------------------------------ | --------------------------------------------- |
96
- | **Local** | Project-specific servers (default) | `~/.claude.json` → `projects[cwd].mcpServers` |
97
- | **Project** | Shared via `.mcp.json` in repository | `.mcp.json` in project root |
98
- | **User** | Global servers for all projects | `~/.claude.json` → `mcpServers` |
50
+ Supported client adapters:
99
51
 
100
- When you select "Enable / Disable MCP servers", MCPick will:
52
+ | Client | Scopes | Command examples |
53
+ | --------------------- | -------------------- | ------------------------------------------------- |
54
+ | Claude Code | local, project, user | `mcpick list`, `mcpick enable <server>` |
55
+ | Gemini CLI | project, user | `mcpick list --client gemini-cli --scope project` |
56
+ | VS Code / Copilot | project | `mcpick list --client vscode --scope project` |
57
+ | Cursor | project, user | `mcpick list --client cursor --scope user` |
58
+ | Windsurf | user | `mcpick list --client windsurf --scope user` |
59
+ | OpenCode | project, user | `mcpick list --client opencode --scope project` |
60
+ | Pi via pi-mcp-adapter | project, user | `mcpick list --client pi --scope user` |
101
61
 
102
- 1. Ask which scope you want to edit
103
- 2. Show servers already enabled for that scope (pre-checked)
104
- 3. Use `claude mcp add/remove` CLI commands for Local and Project
105
- scopes
62
+ Show known config locations:
106
63
 
107
- This integration ensures your changes are correctly applied to the
108
- right configuration location.
109
-
110
- ### Smart Server Management
64
+ ```bash
65
+ npx mcpick clients
66
+ npx mcpick clients --json
67
+ ```
111
68
 
112
- - **Auto-discovery**: Automatically imports servers from your existing
113
- `.claude.json`
114
- - **Registry sync**: Maintains a registry of available servers for
115
- quick selection
116
- - **Selective enabling**: Choose exactly which servers to enable via
117
- multiselect
118
- - **Configuration safety**: Preserves all non-MCP settings in your
119
- Claude Code config
69
+ ## MCP server commands
120
70
 
121
- ### Backup System
71
+ ```bash
72
+ # List Claude Code registry/status
73
+ npx mcpick list
74
+ npx mcpick list --json
75
+
76
+ # List another client
77
+ npx mcpick list --client pi --scope user --json
78
+ npx mcpick list --client opencode --scope project
79
+
80
+ # Claude Code enable/disable
81
+ npx mcpick enable <server> --scope local
82
+ npx mcpick disable <server> --scope local
83
+
84
+ # Add/remove Claude Code server definitions
85
+ npx mcpick add --name <server> --command npx --args "-y,package-name"
86
+ npx mcpick add-json <name> '{"command":"npx","args":["-y","package-name"]}'
87
+ npx mcpick remove <server>
88
+ ```
122
89
 
123
- - **Focused backups**: Only backs up MCP server configurations (not
124
- the entire 30k+ line config)
125
- - **Automatic cleanup**: Keeps last 10 backups to prevent storage
126
- bloat
127
- - **Easy restoration**: Restore from any previous backup with a simple
128
- menu
90
+ For secret-backed servers, prefer environment variable references and
91
+ secret-safe loading tools. MCPick redacts printed values, but MCP
92
+ client config files may still store secrets in plain text because that
93
+ is how many clients currently load MCP credentials.
129
94
 
130
- ### Profiles
95
+ ## Portable skills
131
96
 
132
- Load predefined sets of MCP servers instantly:
97
+ MCPick delegates portable SKILL.md management to the external `skills`
98
+ CLI.
133
99
 
134
100
  ```bash
135
- # Apply a profile
136
- mcpick --profile database
137
- mcpick -p database
101
+ # List installed skills for a client
102
+ npx mcpick skills list --agent pi --json
138
103
 
139
- # Save current config as a profile
140
- mcpick --save-profile mysetup
141
- mcpick -s mysetup
104
+ # See available skills from a source without installing
105
+ npx mcpick skills add spences10/skills --list
142
106
 
143
- # List available profiles
144
- mcpick --list-profiles
145
- mcpick -l
146
- ```
147
-
148
- Profiles are stored in `~/.claude/mcpick/profiles/`. You can also
149
- create them manually:
150
-
151
- ```json
152
- // ~/.claude/mcpick/profiles/database.json
153
- {
154
- "mcp-sqlite-tools": {
155
- "type": "stdio",
156
- "command": "npx",
157
- "args": ["-y", "mcp-sqlite-tools"]
158
- }
159
- }
160
- ```
107
+ # Install one skill
108
+ npx mcpick skills add spences10/skills --agent pi --skill svelte-runes --yes
161
109
 
162
- Or use full format with `mcpServers` wrapper:
110
+ # Install all skills for a client globally
111
+ npx mcpick skills add spences10/skills --agent opencode --skill '*' --global --yes
163
112
 
164
- ```json
165
- {
166
- "mcpServers": {
167
- "server-name": { ... }
168
- }
169
- }
113
+ # Update/remove
114
+ npx mcpick skills update --global --yes
115
+ npx mcpick skills remove svelte-runes --agent pi --yes
170
116
  ```
171
117
 
172
- ### Plugin Cache Management
173
-
174
- Claude Code caches marketplace plugins at `~/.claude/plugins/cache/`.
175
- When marketplace authors update plugins, your cached versions can go
176
- stale. McPick detects this and lets you fix it.
118
+ ## Claude Code-specific tools
177
119
 
178
- #### Interactive
179
-
180
- Select "Manage plugin cache" from the main menu to:
181
-
182
- - **View cache status** - See all cached plugins with staleness
183
- indicators (version mismatch, commits behind, orphaned versions)
184
- - **Clear plugin caches** - Refreshes the marketplace and clears
185
- selected caches so they rebuild with the latest version
186
- - **Clean orphaned versions** - Remove old version directories marked
187
- as orphaned
188
- - **Refresh marketplaces** - Git pull all marketplace clones to get
189
- latest plugin listings
190
-
191
- #### CLI Subcommands
120
+ These commands wrap Claude Code concepts and are intentionally
121
+ client-specific:
192
122
 
193
123
  ```bash
194
- # Show cache status for all plugins
124
+ # Plugins
125
+ npx mcpick plugins list
126
+ npx mcpick plugins install <name>@<marketplace>
127
+ npx mcpick plugins enable <name>@<marketplace>
128
+ npx mcpick plugins disable <name>@<marketplace>
129
+
130
+ # Marketplaces
131
+ npx mcpick marketplace list
132
+ npx mcpick marketplace add <source>
133
+ npx mcpick marketplace update
134
+ npx mcpick marketplace remove <name>
135
+
136
+ # Hooks and plugin cache
137
+ npx mcpick hooks list
195
138
  npx mcpick cache status
196
- npx mcpick cache status --json
197
-
198
- # Clear a specific plugin cache (refreshes marketplace first)
199
- npx mcpick cache clear plugin-name@marketplace
200
- npx mcpick cache clear --all
201
-
202
- # Remove orphaned version directories
203
- npx mcpick cache clean-orphaned
204
-
205
- # Refresh all marketplace clones
206
139
  npx mcpick cache refresh
207
140
  ```
208
141
 
209
- ### Plugin Management
142
+ ## Profiles and backups
210
143
 
211
- Install, update, and toggle Claude Code marketplace plugins:
144
+ Profiles and backups currently preserve MCP server and Claude Code
145
+ plugin state.
212
146
 
213
147
  ```bash
214
- # List all plugins and their status
215
- npx mcpick plugins list
216
- npx mcpick plugins list --json
148
+ npx mcpick --profile database
149
+ npx mcpick --save-profile mysetup
150
+ npx mcpick --list-profiles
151
+
152
+ npx mcpick backup
153
+ npx mcpick restore [file]
154
+ ```
155
+
156
+ ## Interactive TUI
217
157
 
218
- # Install/uninstall a plugin (wraps claude plugin CLI)
219
- npx mcpick plugins install plugin-name@marketplace
220
- npx mcpick plugins uninstall plugin-name@marketplace
158
+ Running `npx mcpick` in a terminal launches the human-facing menu:
221
159
 
222
- # Update a plugin to latest version
223
- npx mcpick plugins update plugin-name@marketplace
160
+ ```text
161
+ MCPick - MCP Configuration Manager
224
162
 
225
- # Enable/disable a plugin
226
- npx mcpick plugins enable plugin-name@marketplace
227
- npx mcpick plugins disable plugin-name@marketplace
163
+ What would you like to do?
164
+ Enable / Disable MCP servers
165
+ Skills
166
+ Client-specific tools
167
+ Load profile
168
+ Save profile
169
+ Backup config
170
+ Restore from backup
171
+ Exit
228
172
  ```
229
173
 
230
- All plugin commands support `--scope` (user, project, local) and
231
- `--json` flags.
174
+ The primary TUI flow is client-first: choose a client, then toggle its
175
+ MCP servers. Claude Code plugins, hooks, marketplaces, and cache live
176
+ under “Client-specific tools”.
232
177
 
233
- ### CLI Subcommands
178
+ ## Config locations
234
179
 
235
- McPick supports both an interactive menu (default) and non-interactive
236
- CLI subcommands for scripting and LLM tool use:
180
+ MCPick reads the standard locations used by each client adapter.
181
+ Common paths include:
237
182
 
238
- ```bash
239
- # MCP server management
240
- npx mcpick list # List servers
241
- npx mcpick enable <server> # Enable a server
242
- npx mcpick disable <server> # Disable a server
243
- npx mcpick add --name <n> ... # Add a server
244
- npx mcpick remove <server> # Remove a server
245
-
246
- # Backups and profiles
247
- npx mcpick backup # Create backup
248
- npx mcpick restore [file] # Restore from backup
249
- npx mcpick profile list # List profiles
250
- npx mcpick profile load <name> # Load a profile
251
- npx mcpick profile save <name> # Save current config
252
-
253
- # Plugin management
254
- npx mcpick plugins list # List plugins
255
- npx mcpick plugins enable <key> # Enable plugin
256
- npx mcpick plugins disable <key> # Disable plugin
257
- npx mcpick plugins install <key> # Install from marketplace
258
- npx mcpick plugins uninstall <key> # Remove plugin
259
- npx mcpick plugins update <key> # Update to latest version
260
-
261
- # Cache management
262
- npx mcpick cache status # Show staleness info
263
- npx mcpick cache clear [key] # Clear plugin cache
264
- npx mcpick cache clean-orphaned # Remove orphaned dirs
265
- npx mcpick cache refresh # Git pull marketplaces
266
- ```
183
+ | Path | Purpose |
184
+ | ------------------------ | ----------------------------------------------- |
185
+ | `~/.claude.json` | Claude Code local/user MCP config |
186
+ | `.mcp.json` | Shared project MCP config |
187
+ | `.gemini/settings.json` | Gemini CLI project config |
188
+ | `.vscode/mcp.json` | VS Code / Copilot project config |
189
+ | `.cursor/mcp.json` | Cursor project config |
190
+ | `opencode.json` | OpenCode project config |
191
+ | `~/.config/mcp/mcp.json` | Shared global MCP config used by pi-mcp-adapter |
192
+ | `.pi/mcp.json` | Pi project override |
267
193
 
268
- All subcommands support `--json` for machine-readable output.
269
-
270
- ### Typical Workflow
271
-
272
- 1. **Before a coding session**: Run `mcpick -p <profile>` or use the
273
- interactive menu to enable relevant servers
274
- 2. **Launch Claude Code**: Run `claude` to start with your configured
275
- servers
276
- 3. **Switch contexts**: Run `mcpick -p <other-profile>` to quickly
277
- switch server sets
278
-
279
- ### Adding New Servers
280
-
281
- 1. Select "Add MCP server"
282
- 2. Provide server details:
283
- - Name (e.g., "mcp-sqlite-tools")
284
- - Command (e.g., "npx")
285
- - Arguments (e.g., "-y", "mcp-sqlite-tools")
286
- - Description (optional)
287
- - Environment variables (optional)
288
-
289
- ## Configuration
290
-
291
- MCPick works with the standard Claude Code configuration format:
292
-
293
- ```json
294
- {
295
- "mcpServers": {
296
- "server-name": {
297
- "command": "npx",
298
- "args": ["-y", "mcp-server-package"],
299
- "env": {
300
- "API_KEY": "your-key"
301
- }
302
- }
303
- }
304
- }
305
- ```
194
+ MCPick-owned state lives under `~/.claude/mcpick/` for historical
195
+ compatibility.
306
196
 
307
- ### File Locations
308
-
309
- - **Claude Config**: `~/.claude.json` (your main Claude Code
310
- configuration)
311
- - **Project Config**: `.mcp.json` (project-specific shared config,
312
- committed to git)
313
- - **MCPick Registry**: `~/.claude/mcpick/servers.json` (MCPick's
314
- server database)
315
- - **Backups**: `~/.claude/mcpick/backups/` (MCP configuration backups)
316
- - **Profiles**: `~/.claude/mcpick/profiles/` (predefined server sets)
317
- - **Plugin Cache**: `~/.claude/plugins/cache/` (cached plugin files)
318
- - **Installed Plugins**: `~/.claude/plugins/installed_plugins.json`
319
- (plugin install registry)
320
- - **Marketplaces**: `~/.claude/plugins/marketplaces/` (marketplace git
321
- clones)
322
-
323
- #### MCP Server Storage by Scope
324
-
325
- | Scope | Location | Use Case |
326
- | ------- | ------------------------------------------------------------ | ---------------------------------- |
327
- | Local | `~/.claude.json` → `projects["/path/to/project"].mcpServers` | Personal project config |
328
- | Project | `.mcp.json` in project root | Shared team config (commit to git) |
329
- | User | `~/.claude.json` → `mcpServers` | Global servers for all projects |
330
-
331
- > **Note**: MCPick automatically detects servers in parent
332
- > directories. If you have local servers configured at
333
- > `/Users/you/projects` and run MCPick from
334
- > `/Users/you/projects/myapp`, it will find and display them.
335
-
336
- ## Safety Features
337
-
338
- - **Non-destructive**: Only modifies the `mcpServers` section of your
339
- Claude Code config
340
- - **Backup integration**: Automatically creates backups before major
341
- changes
342
- - **Validation**: Ensures all server configurations are valid before
343
- writing
344
- - **Error handling**: Graceful failure modes with helpful error
345
- messages
346
-
347
- ## Future Features
348
-
349
- McPick is actively being developed with new features planned. See the
350
- [roadmap](./docs/ROADMAP.md) for details on:
351
-
352
- - **Settings Validation** - Validate your Claude Code settings files
353
- using the
354
- [claude-code-settings-schema](https://github.com/spences10/claude-code-settings-schema)
355
- - **Permissions Management** - Interactive tool permission
356
- configuration with presets (Safe Mode, Dev Mode, Review Mode)
357
-
358
- Have ideas for other features?
359
- [Open an issue](https://github.com/spences10/mcpick/issues) or check
360
- out the [contribution guide](./docs/ROADMAP.md)!
361
-
362
- ## Requirements
197
+ ## Development
363
198
 
364
- - Node.js 22+
365
- - Claude Code installed and configured
366
- - pnpm (for building from source)
199
+ ```bash
200
+ pnpm install
201
+ pnpm test
202
+ pnpm run check
203
+ pnpm build
204
+ ```
205
+
206
+ See `docs/VENDOR_NEUTRAL_ARCHITECTURE.md` for architecture notes.