{"id":51414075,"url":"https://github.com/spences10/mcpick","last_synced_at":"2026-07-04T17:30:40.199Z","repository":{"id":317050303,"uuid":"1065798175","full_name":"spences10/mcpick","owner":"spences10","description":"Claude Code extension manager — MCP servers, plugins (skills, hooks, agents), and marketplaces","archived":false,"fork":false,"pushed_at":"2026-06-24T19:03:57.000Z","size":491,"stargazers_count":86,"open_issues_count":4,"forks_count":12,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-24T21:04:03.800Z","etag":null,"topics":["anthropic","claude","claude-code","cli","marketplaces","mcp","plugins","skills"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spences10.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-28T12:59:51.000Z","updated_at":"2026-06-24T19:02:50.000Z","dependencies_parsed_at":"2025-10-17T20:40:38.827Z","dependency_job_id":"9f164aea-0368-465a-a191-e08d042aded8","html_url":"https://github.com/spences10/mcpick","commit_stats":null,"previous_names":["spences10/mcpick"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/spences10/mcpick","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spences10%2Fmcpick","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spences10%2Fmcpick/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spences10%2Fmcpick/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spences10%2Fmcpick/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spences10","download_url":"https://codeload.github.com/spences10/mcpick/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spences10%2Fmcpick/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35130722,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-04T02:00:05.987Z","response_time":113,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anthropic","claude","claude-code","cli","marketplaces","mcp","plugins","skills"],"created_at":"2026-07-04T17:30:39.908Z","updated_at":"2026-07-04T17:30:40.190Z","avatar_url":"https://github.com/spences10.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MCPick\n\n[![built with vite+](https://img.shields.io/badge/built%20with-Vite+-646CFF?logo=vite\u0026logoColor=white)](https://viteplus.dev)\n[![tested with vitest](https://img.shields.io/badge/tested%20with-Vitest-6E9F18?logo=vitest\u0026logoColor=white)](https://vitest.dev)\n\nVendor-neutral MCP configuration manager with first-class Claude Code\nsupport.\n\nMCPick helps humans and LLM agents inspect, toggle, and back up MCP\nserver configuration across multiple AI clients. Claude Code-specific\nplugins, hooks, marketplaces, and cache commands remain available, but\nthey are no longer the core product model.\n\n## Install\n\n```bash\nnpm install -g mcpick\n# or run without installing\nnpx mcpick --help\n```\n\nRequirements:\n\n- Node.js 22+\n- Claude Code is required only for Claude Code-specific commands\n- The external `skills` CLI is used through `npx -y skills@latest` for\n  portable skills commands\n\n## Agent-first CLI\n\nIn non-TTY environments, MCPick shows help instead of launching the\ninteractive TUI. This makes it safer for prompts like:\n\n\u003e “Use mcpick to work out how to enable this MCP server.”\n\nStart with:\n\n```bash\nnpx mcpick --help\nnpx mcpick clients\nnpx mcpick list --json\n```\n\nMCPick redacts known secret patterns before printing output. MCP\nconfigs often contain env vars and authorization headers, so `env` and\n`headers` values are shown as `***` in JSON output.\n\n## MCP clients\n\nSupported client adapters:\n\n| Client                | Scopes               | Command examples                                  |\n| --------------------- | -------------------- | ------------------------------------------------- |\n| Claude Code           | local, project, user | `mcpick list`, `mcpick enable \u003cserver\u003e`           |\n| Gemini CLI            | project, user        | `mcpick list --client gemini-cli --scope project` |\n| VS Code / Copilot     | project              | `mcpick list --client vscode --scope project`     |\n| Cursor                | project, user        | `mcpick list --client cursor --scope user`        |\n| Windsurf              | user                 | `mcpick list --client windsurf --scope user`      |\n| OpenCode              | project, user        | `mcpick list --client opencode --scope project`   |\n| Pi via pi-mcp-adapter | project, user        | `mcpick list --client pi --scope user`            |\n\nShow known config locations:\n\n```bash\nnpx mcpick clients\nnpx mcpick clients --json\n```\n\n## MCP server commands\n\n```bash\n# List Claude Code registry/status\nnpx mcpick list\nnpx mcpick list --json\n\n# List another client\nnpx mcpick list --client pi --scope user --json\nnpx mcpick list --client opencode --scope project\n\n# Claude Code enable/disable\nnpx mcpick enable \u003cserver\u003e --scope local\nnpx mcpick disable \u003cserver\u003e --scope local\n\n# Add/remove Claude Code server definitions\nnpx mcpick add --name \u003cserver\u003e --command npx --args \"-y,package-name\"\nnpx mcpick add-json \u003cname\u003e '{\"command\":\"npx\",\"args\":[\"-y\",\"package-name\"]}'\nnpx mcpick remove \u003cserver\u003e\n```\n\nFor secret-backed servers, prefer environment variable references and\nsecret-safe loading tools. MCPick redacts printed values, but MCP\nclient config files may still store secrets in plain text because that\nis how many clients currently load MCP credentials.\n\n## Portable skills\n\nMCPick delegates portable SKILL.md management to the external `skills`\nCLI.\n\n```bash\n# List installed skills for a client\nnpx mcpick skills list --agent pi --json\n\n# See available skills from a source without installing\nnpx mcpick skills add spences10/skills --list\n\n# Install one skill\nnpx mcpick skills add spences10/skills --agent pi --skill svelte-runes --yes\n\n# Install all skills for a client globally\nnpx mcpick skills add spences10/skills --agent opencode --skill '*' --global --yes\n\n# Update/remove\nnpx mcpick skills update --global --yes\nnpx mcpick skills remove svelte-runes --agent pi --yes\n```\n\n## Claude Code-specific tools\n\nThese commands wrap Claude Code concepts and are intentionally\nclient-specific:\n\n```bash\n# Plugins\nnpx mcpick plugins list\nnpx mcpick plugins install \u003cname\u003e@\u003cmarketplace\u003e\nnpx mcpick plugins enable \u003cname\u003e@\u003cmarketplace\u003e\nnpx mcpick plugins disable \u003cname\u003e@\u003cmarketplace\u003e\n\n# Marketplaces\nnpx mcpick marketplace list\nnpx mcpick marketplace add \u003csource\u003e\nnpx mcpick marketplace update\nnpx mcpick marketplace remove \u003cname\u003e\n\n# Hooks and plugin cache\nnpx mcpick hooks list\nnpx mcpick cache status\nnpx mcpick cache refresh\n```\n\n## Profiles and backups\n\nProfiles are portable MCP server snapshots. Claude Code plugin state\nis preserved as optional Claude-specific profile metadata.\n\n```bash\n# Legacy Claude Code shortcuts still work\nnpx mcpick --profile database\nnpx mcpick --save-profile mysetup\nnpx mcpick --list-profiles\n\n# Save/load profiles for a specific MCP client\nnpx mcpick profile save work --client vscode --scope project\nnpx mcpick profile load work --client opencode --scope project\nnpx mcpick profile load work --client pi --scope user\n\nnpx mcpick backup\nnpx mcpick restore [file]\n\n# Safe-write rollback backups created before config mutations\nnpx mcpick rollback --list\nnpx mcpick rollback [file]\n```\n\n## Interactive TUI\n\nRunning `npx mcpick` in a terminal launches the human-facing menu:\n\n```text\nMCPick - MCP Configuration Manager\n\nWhat would you like to do?\n  Enable / Disable MCP servers\n  Skills\n  Client-specific tools\n  Load profile\n  Save profile\n  Backup config\n  Restore from backup\n  Exit\n```\n\nThe primary TUI flow is client-first: choose a client, then toggle its\nMCP servers. Claude Code plugins, hooks, marketplaces, and cache live\nunder “Client-specific tools”.\n\n## Config locations\n\nMCPick reads the standard locations used by each client adapter.\nCommon paths include:\n\n| Path                     | Purpose                                         |\n| ------------------------ | ----------------------------------------------- |\n| `~/.claude.json`         | Claude Code local/user MCP config               |\n| `.mcp.json`              | Shared project MCP config                       |\n| `.gemini/settings.json`  | Gemini CLI project config                       |\n| `.vscode/mcp.json`       | VS Code / Copilot project config                |\n| `.cursor/mcp.json`       | Cursor project config                           |\n| `opencode.json`          | OpenCode project config                         |\n| `~/.config/mcp/mcp.json` | Shared global MCP config used by pi-mcp-adapter |\n| `.pi/mcp.json`           | Pi project override                             |\n\nMCPick-owned state lives under `~/.claude/mcpick/` for historical\ncompatibility.\n\n## Development\n\n```bash\npnpm install\npnpm test\npnpm run check\npnpm build\n```\n\nSee `docs/VENDOR_NEUTRAL_ARCHITECTURE.md` for architecture notes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspences10%2Fmcpick","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspences10%2Fmcpick","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspences10%2Fmcpick/lists"}