>_ ccmcp

v0.12.1

A dynamic CLI and TUI for managing Claude Code's MCP servers, plugins, and per-project overrides across every scope Claude Code honors.

# Why

Claude Code auto-loads MCP servers from at least six distinct places — user config, local project state, committed .mcp.json, bundled plugin .mcp.jsons, claude.ai OAuth integrations, and in-memory overrides. Starting a session with all of them enabled burns hundreds of tokens of context before you type a character.

The built-in /mcp menu toggles things one row at a time. ccmcp toggles them in bulk, by scope, or by filter, and gives you a single view that reflects what will actually load in the current project.

ccmcp — MCPs tab
ccmcp v0.12.1 project: ~/git/ccmcp UNSAVED ────────────────────────────────────────────────────────────────── [MCPs] Plugins Marketplaces Discover Skills Agents Commands Profiles Summary Doctor scope: effective [x] u context7 user-scope stdio [x] l github local to this project [x] p supabase ./.mcp.json [x] P plugin:vercel:vercel plugin-registered [x] @ claude.ai Gmail OAuth integration [~] P plugin:context7:context7 disabled here [ ] s old-name in stash space toggle A/N bulk enable/disable / filter w save

# Install

Homebrew (macOS, Linux)

brew install robworks-code/tap/ccmcp

go install (Go 1.25+)

go install github.com/ringo380/ccmcp@latest

Prebuilt binaries

Download from the releases page.

From source

git clone https://github.com/ringo380/ccmcp
cd ccmcp
go build -ldflags='-s -w' -o ~/bin/ccmcp .

# Quick start

In any project directory:

ccmcp

The effective view is the default. It lists every MCP that will load in this project, with a badge showing its source and a checkbox showing whether it's currently enabled here. Three keystrokes to turn off every plugin-registered MCP for this project:

/plugin      <enter>      N      w

Undo the same way with A.

# What ccmcp sees

BadgeSourceLocationEffect
uuser~/.claude.json#/mcpServersloads in every project
llocal~/.claude.json#/projects[…]/mcpServersthis directory only
pproject./.mcp.jsonshared via git, team-wide
Ppluginbundled .mcp.json per enabled pluginloads when plugin enabled
@claude.aiOAuth remote integrationloads wherever you're signed in
sstash~/.claude-mcp-stash.jsonccmcp-owned, parked

Effective-view marks

# What you get

Bulk toggles

Filter by substring, then A/N flips every visible row at once — per scope, in one keystroke.

Scope-aware

One view across user, local, .mcp.json, plugin-bundled, and claude.ai OAuth. Every row has a resolved source.

Stash

Park servers you don't currently need in ~/.claude-mcp-stash.json. S smart-toggles — stash a live row, unstash a parked one.

Profiles

Snapshot the current project's MCP set and reapply it later with one keystroke.

Prune stale overrides

ccmcp mcp prune classifies every entry in disabledMcpServers into 7 buckets and removes what's truly stale — orphan plugin keys, deleted MCPs — while preserving intentional per-project disables.

Plugin installer

Four marketplace source formats (bare path, url, git-subdir, github), with optional sha pinning and purge-on-remove.

Safety

Atomic writes (temp + fsync + rename). Every mutation snapshots the target file to ~/.claude-mcp-backups/. --dry-run never touches disk.

Scriptable

Every TUI action has a CLI equivalent. ccmcp status --json for pipelines. 158 tests cover readers, writers, and a headless TUI state machine.

Skills, Agents & Commands

List, enable/disable, create, move, and remove skills, agents, and slash commands across user, project, and plugin scopes. ccmcp command conflicts surfaces shadowed commands before they bite.

Doctor

Lint CLAUDE.md and MEMORY.md for structural issues — stale entries, missing sections, broken pointers. Press f in the TUI to preview an autofix as a unified diff or F to bulk-fix every issue sharing the cursor's code in one keystroke (programmatic edits stack directly; CLI codes bundle into a single Claude Haiku invocation). The bundled l review and post-review a apply use the same single-call pattern. Every fix snapshots the original to ~/.claude-mcp-backups/doctor/ and Claude-CLI fixes can be reverted with u.

Reports

Point-in-time snapshots, cross-project sweep tables, drift diffs against a baseline, and full stale-override audits — all in JSON, Markdown, or CSV.

# CLI

ccmcp status                                   # show everything at once
ccmcp status --json                            # JSON for scripts

ccmcp mcp list [--scope SCOPE]                 # user|local|project|plugin|claudeai|stash|all
ccmcp mcp enable  <name> [--scope SCOPE]
ccmcp mcp disable <name> [--scope SCOPE] [--to-stash]
ccmcp mcp move    <name> --to {user|local|stash}
ccmcp mcp override <name> [--undo]             # per-project disable
ccmcp mcp prune [--dry-run] [--yes] [--include-stash-ghosts]
ccmcp mcp stash   [<name>...]                  # user-scope → stash
ccmcp mcp restore [<name>...]                  # stash → user-scope (alias: unstash)

ccmcp profile save|list|show|use|delete <name> [<mcp>...]
ccmcp profile export <name> [--out FILE] [--with-config]
ccmcp profile import [FILE|-] [--overwrite]

ccmcp skill   list [--scope user|project|plugin] [--enabled|--disabled]
ccmcp skill   enable|disable <name> [<name>...]
ccmcp skill   new|move|rm|show <name> [--scope user|project]

ccmcp agent   list|new|move|rm|show <name>

ccmcp command list [--scope user|project|plugin]
ccmcp command conflicts [--include-ignored] [--json]
ccmcp command resolve <effective-name> [--strategy disable-skill|ignore|list]

ccmcp report snapshot [--out FILE] [--format json|md|csv]
ccmcp report sweep    [--base PATH] [--format json|md|csv]
ccmcp report drift    --from <snapshot.json> [--format json|md]
ccmcp report audit    [--format json|md|csv]

ccmcp doctor md [--user] [--memory-dir DIR]
ccmcp doctor md --llm-review [--provider anthropic|openai]

ccmcp plugin list [--enabled|--disabled]
ccmcp plugin enable|disable|install|remove <id> [--marketplace M] [--purge]
ccmcp marketplace list|add|remove <name> [--source github|git|local] [--repo R]

ccmcp tui --dump [--tab mcps|plugins|skills|agents|commands|profiles|summary|doctor]

Global flags: --path <dir>, --dry-run, --json, --no-color.

Full key reference, scope terminology, and implementation notes live in the README.