>_ ccmcp

v0.23.0

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.23.0 project: ~/git/ccmcp UNSAVED ────────────────────────────────────────────────────────────────── [MCPs] Plugins Marketplaces Discover Skills Agents Commands Tweaks 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 ctrl+g search w save

# Install

Homebrew (macOS, Linux)

brew install robworks-code/tap/ccmcp

Homebrew 5.x requires third-party taps to be trusted. If install or brew upgrade reports Refusing to load formula ... from untrusted tap, trust it once with brew trust robworks-code/tap (a one-time, per-machine step that applies to every non-official tap).

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.

Tweaks

One tab for app-level settings and maintenance. Edit ccmcp preferences (persisted to ~/.claude-mcp-config.json with env > file > default precedence) and run one-shot ops - prune, plugin-cache GC, snapshot/backup, health check. The Summary, Doctor, and Profiles views live here as sub-tabs.

Profiles

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

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|tweaks|profiles|summary|doctor]

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

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