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.
- package/.github/copilot-instructions.md +39 -21
- package/CHANGELOG.md +24 -4
- package/CONTEXT.md +49 -0
- package/README.md +149 -309
- package/dist/{add-BDyaBew0.js → add-Bok0qbXi.js} +4 -5
- package/dist/{add-json-BjgzdeG-.js → add-json-C44vy2A_.js} +3 -3
- package/dist/{atomic-write-BqEykHp9.js → atomic-write-4lANmzsO.js} +1 -1
- package/dist/{backup-DSDhHI5f.js → backup-bdg6dvsb.js} +5 -5
- package/dist/{cache-D6kd7qE8.js → cache-CSUcGdZP.js} +3 -3
- package/dist/cli-avr5R1LO.js +111 -0
- package/dist/clients-CSQgqHzb.js +30 -0
- package/dist/{clone-DYKPEsar.js → clone-CQ0skkT6.js} +6 -7
- package/dist/{config-DijVdEFn.js → config-BhX4eAgg.js} +4 -4
- package/dist/{dev-DRJRNp7y.js → dev-CTDg5g-c.js} +6 -6
- package/dist/{disable-xJXZfUR_.js → disable-DLlOj7sc.js} +3 -4
- package/dist/{enable-RrpcN6la.js → enable-CGFYYC2A.js} +3 -4
- package/dist/{get-Bb1eOOIZ.js → get-l-eAJhBy.js} +3 -3
- package/dist/{hooks-Bmn7pUZa.js → hooks-BWZ_Kgx3.js} +4 -4
- package/dist/index.js +1485 -318
- package/dist/list-By--kltj.js +100 -0
- package/dist/{marketplace-DcKk5dc1.js → marketplace-DdiKDDKK.js} +4 -5
- package/dist/output-BgN9Uuxf.js +17 -0
- package/dist/{paths-BPISiJi4.js → paths-6wrIM8yh.js} +1 -1
- package/dist/{plugin-cache-Bby9Dxm9.js → plugin-cache-DKcW8LGV.js} +3 -3
- package/dist/{plugins-Dc7DN6R_.js → plugins-CsXE8AH4.js} +5 -5
- package/dist/{profile-CX97sMGp.js → profile-DzGPsdsl.js} +5 -5
- package/dist/redact-Dltz2gde.js +88 -0
- package/dist/{reload-CYDhkCVZ.js → reload-C29-vuvy.js} +2 -2
- package/dist/{remove-D1owHLhG.js → remove-B5q4rQRU.js} +3 -4
- package/dist/{reset-project-choices-BfRSNN3m.js → reset-project-choices-Dhh4CxIC.js} +3 -3
- package/dist/{restore-DdMfUljI.js → restore-BI8aiszM.js} +6 -6
- package/dist/{settings-DEcWtzLE.js → settings-CZR8bVfh.js} +5 -5
- package/dist/skills-DPBDmION.js +216 -0
- package/dist/{validation-xMlbgGCF.js → validation-qWlF51fw.js} +1 -1
- package/package.json +20 -6
- package/dist/claude-cli-DnmBJrjg.js +0 -445
- package/dist/cli-CsFfnWBo.js +0 -84
- package/dist/hook-state-Di8lUsPr.js +0 -171
- package/dist/list-B8YeDWt6.js +0 -64
- package/dist/output-BchYq0mR.js +0 -15
- package/dist/profile-DkY_lBEm.js +0 -70
- package/dist/redact-O35tjnRD.js +0 -26
- package/dist/registry-CfUKT7_C.js +0 -92
|
@@ -1,32 +1,50 @@
|
|
|
1
|
-
#
|
|
1
|
+
# MCPick Development Instructions
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
bash commands only when you encounter unexpected information that does
|
|
5
|
-
not match the info here.**
|
|
3
|
+
## Project shape
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
MCPick is a vendor-neutral MCP configuration manager with first-class
|
|
6
|
+
Claude Code support.
|
|
8
7
|
|
|
9
|
-
|
|
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
|
-
|
|
12
|
-
- Install pnpm globally: `npm install -g pnpm` (takes ~2 seconds)
|
|
14
|
+
## Prerequisites
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
- Node.js >=22.0.0
|
|
17
|
+
- pnpm
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
- **Build**: `pnpm run build`
|
|
19
|
+
## Common commands
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
```bash
|
|
22
|
+
pnpm install
|
|
23
|
+
pnpm test
|
|
24
|
+
pnpm run check
|
|
25
|
+
pnpm build
|
|
26
|
+
```
|
|
20
27
|
|
|
21
|
-
|
|
28
|
+
## Validation before finishing
|
|
22
29
|
|
|
23
|
-
|
|
24
|
-
2. `pnpm run build` - Check for build issues
|
|
30
|
+
Always run:
|
|
25
31
|
|
|
26
|
-
|
|
32
|
+
```bash
|
|
33
|
+
pnpm run check
|
|
34
|
+
pnpm test
|
|
35
|
+
pnpm build
|
|
36
|
+
```
|
|
27
37
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
|
9
|
-
|
|
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
|
|
16
|
-
|
|
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
|
-
#
|
|
1
|
+
# MCPick
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
caches, and optimise context usage and performance.
|
|
3
|
+
[](https://viteplus.dev)
|
|
4
|
+
[](https://vitest.dev)
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
Vendor-neutral MCP configuration manager with first-class Claude Code
|
|
7
|
+
support.
|
|
8
8
|
|
|
9
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
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
|
-
|
|
55
|
-
to:
|
|
29
|
+
## Agent-first CLI
|
|
56
30
|
|
|
57
|
-
-
|
|
58
|
-
|
|
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
|
-
|
|
34
|
+
> “Use mcpick to work out how to enable this MCP server.”
|
|
71
35
|
|
|
72
|
-
|
|
36
|
+
Start with:
|
|
73
37
|
|
|
74
38
|
```bash
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
|
|
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
|
-
|
|
48
|
+
## MCP clients
|
|
93
49
|
|
|
94
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
64
|
+
```bash
|
|
65
|
+
npx mcpick clients
|
|
66
|
+
npx mcpick clients --json
|
|
67
|
+
```
|
|
111
68
|
|
|
112
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
95
|
+
## Portable skills
|
|
131
96
|
|
|
132
|
-
|
|
97
|
+
MCPick delegates portable SKILL.md management to the external `skills`
|
|
98
|
+
CLI.
|
|
133
99
|
|
|
134
100
|
```bash
|
|
135
|
-
#
|
|
136
|
-
mcpick --
|
|
137
|
-
mcpick -p database
|
|
101
|
+
# List installed skills for a client
|
|
102
|
+
npx mcpick skills list --agent pi --json
|
|
138
103
|
|
|
139
|
-
#
|
|
140
|
-
mcpick --
|
|
141
|
-
mcpick -s mysetup
|
|
104
|
+
# See available skills from a source without installing
|
|
105
|
+
npx mcpick skills add spences10/skills --list
|
|
142
106
|
|
|
143
|
-
#
|
|
144
|
-
mcpick --
|
|
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
|
-
|
|
110
|
+
# Install all skills for a client globally
|
|
111
|
+
npx mcpick skills add spences10/skills --agent opencode --skill '*' --global --yes
|
|
163
112
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
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
|
-
|
|
142
|
+
## Profiles and backups
|
|
210
143
|
|
|
211
|
-
|
|
144
|
+
Profiles and backups currently preserve MCP server and Claude Code
|
|
145
|
+
plugin state.
|
|
212
146
|
|
|
213
147
|
```bash
|
|
214
|
-
|
|
215
|
-
npx mcpick
|
|
216
|
-
npx mcpick
|
|
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
|
-
|
|
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
|
-
|
|
223
|
-
|
|
160
|
+
```text
|
|
161
|
+
MCPick - MCP Configuration Manager
|
|
224
162
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
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
|
-
|
|
231
|
-
|
|
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
|
-
|
|
178
|
+
## Config locations
|
|
234
179
|
|
|
235
|
-
|
|
236
|
-
|
|
180
|
+
MCPick reads the standard locations used by each client adapter.
|
|
181
|
+
Common paths include:
|
|
237
182
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
365
|
-
|
|
366
|
-
|
|
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.
|