A CLI tool for dynamically managing MCP server configurations in Claude Code. Enable and disable MCP servers on-demand to optimize context usage and performance.
pnpx mcpick
# or
pnpm dlx mcpick
# or
npx mcpickpnpm install -g mcpick
# or
npm install -g mcpickUsing the Claude Code /doctor command you may see something like
this if you have many MCP servers configured:
Context Usage Warnings
└ ⚠ Large MCP tools context (~66,687 tokens > 25,000)
└ MCP servers:
└ mcp-omnisearch-testing: 20 tools (~10,494 tokens)
└ mcp-omnisearch: 20 tools (~10,454 tokens)
└ mcp-sqlite-tools-testing: 19 tools (~9,910 tokens)
└ mcp-sqlite-tools: 19 tools (~9,872 tokens)
└ playwright: 21 tools (~9,804 tokens)
└ (7 more servers)Claude Code loads all MCP servers from your .claude.json file at
startup, regardless of whether you need them for your current task.
This can lead to:
- 🐌 Slower Claude Code startup times
- 💾 High context token usage
- 🧠 Cognitive overload from too many available tools
McPick provides an intuitive CLI menu to:
- ✅ Toggle servers on/off - Enable only the MCP servers you need for your current task
- 📁 Manage server registry - Keep a database of all your available MCP servers
- 🔄 Safe configuration - Only modifies the
mcpServerssection, preserving other Claude Code settings - 💾 Backup & restore - Create focused backups of your MCP server configurations
┌ McPick - MCP Server Configuration Manager
│
◆ What would you like to do?
│ ● Enable / Disable MCP servers (Toggle MCP servers on/off)
│ ○ Backup config
│ ○ Add MCP server
│ ○ Restore from backup
│ ○ Load profile
│ ○ Save profile
│ ○ Exit
└MCPick supports the three MCP server scopes used by Claude Code:
| Scope | Description | Storage Location |
|---|---|---|
| Local | Project-specific servers (default) | ~/.claude.json → projects[cwd].mcpServers |
| Project | Shared via .mcp.json in repository |
.mcp.json in project root |
| User | Global servers for all projects | ~/.claude.json → mcpServers |
When you select "Enable / Disable MCP servers", MCPick will:
- Ask which scope you want to edit
- Show servers already enabled for that scope (pre-checked)
- Use
claude mcp add/removeCLI commands for Local and Project scopes
This integration ensures your changes are correctly applied to the right configuration location.
- Auto-discovery: Automatically imports servers from your existing
.claude.json - Registry sync: Maintains a registry of available servers for quick selection
- Selective enabling: Choose exactly which servers to enable via multiselect
- Configuration safety: Preserves all non-MCP settings in your Claude Code config
- Focused backups: Only backs up MCP server configurations (not the entire 30k+ line config)
- Automatic cleanup: Keeps last 10 backups to prevent storage bloat
- Easy restoration: Restore from any previous backup with a simple menu
Load predefined sets of MCP servers instantly:
# Apply a profile
mcpick --profile database
mcpick -p database
# Save current config as a profile
mcpick --save-profile mysetup
mcpick -s mysetup
# List available profiles
mcpick --list-profiles
mcpick -lProfiles are stored in ~/.claude/mcpick/profiles/. You can also
create them manually:
// ~/.claude/mcpick/profiles/database.json
{
"mcp-sqlite-tools": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-sqlite-tools"]
}
}Or use full format with mcpServers wrapper:
{
"mcpServers": {
"server-name": { ... }
}
}- Before a coding session: Run
mcpick -p <profile>or use the interactive menu to enable relevant servers - Launch Claude Code: Run
claudeto start with your configured servers - Switch contexts: Run
mcpick -p <other-profile>to quickly switch server sets
- Select "Add MCP server"
- Provide server details:
- Name (e.g., "mcp-sqlite-tools")
- Command (e.g., "npx")
- Arguments (e.g., "-y", "mcp-sqlite-tools")
- Description (optional)
- Environment variables (optional)
MCPick works with the standard Claude Code configuration format:
{
"mcpServers": {
"server-name": {
"command": "npx",
"args": ["-y", "mcp-server-package"],
"env": {
"API_KEY": "your-key"
}
}
}
}- Claude Config:
~/.claude.json(your main Claude Code configuration) - Project Config:
.mcp.json(project-specific shared config, committed to git) - MCPick Registry:
~/.claude/mcpick/servers.json(MCPick's server database) - Backups:
~/.claude/mcpick/backups/(MCP configuration backups) - Profiles:
~/.claude/mcpick/profiles/(predefined server sets)
| Scope | Location | Use Case |
|---|---|---|
| Local | ~/.claude.json → projects["/path/to/project"].mcpServers |
Personal project config |
| Project | .mcp.json in project root |
Shared team config (commit to git) |
| User | ~/.claude.json → mcpServers |
Global servers for all projects |
Note: MCPick automatically detects servers in parent directories. If you have local servers configured at
/Users/you/projectsand run MCPick from/Users/you/projects/myapp, it will find and display them.
- Non-destructive: Only modifies the
mcpServerssection of your Claude Code config - Backup integration: Automatically creates backups before major changes
- Validation: Ensures all server configurations are valid before writing
- Error handling: Graceful failure modes with helpful error messages
McPick is actively being developed with new features planned. See the roadmap for details on:
- Settings Validation - Validate your Claude Code settings files using the claude-code-settings-schema
- Permissions Management - Interactive tool permission configuration with presets (Safe Mode, Dev Mode, Review Mode)
Have ideas for other features? Open an issue or check out the contribution guide!
- Node.js 22+
- Claude Code installed and configured
- pnpm (for building from source)