npm install -g ccm  ·  Node 20+  ·  Free & open source

Stop hunting for
config files

CCM is a single pane of glass for every Claude Code configuration — MCP servers, hooks, permissions, CLAUDE.md files — across every project. All in one place, live.

$ npm install -g ccm
CCM Dashboard localhost:3737
CCM
MCP Servers 11
Hooks 6
Permissions 14
CLAUDE.md 5
Templates 6
Backups

MCP Servers

11 across 4 projects live
🗄️
neon-postgres OK
npx @neondatabase/mcp-server-neon
desktop
🔵
linear OK
npx @linear/mcp-server
desktop
📬
gmail OK
npx @gptscript-ai/gmail-mcp
desktop
📋
asana OK
npx @asana/mcp
desktop
🟣
wordpress OK
node /opt/mcp-wp/server.js
manapower
🏦
stripe OK
npx @stripe/mcp --tools=all
shopify-app
⚠️
hostinger-api MISSING
node /opt/hostinger/mcp.js
infra
🖨️
printful STALE
npx printful-mcp@1.0.1
shopify-app
🐘
mariadb OK
npx mcp-server-mariadb
manapower
🗂️
filesystem OK
npx @modelcontextprotocol/server-filesystem
desktop
🌐
brave-search TEMPLATE
npx @modelcontextprotocol/server-brave-search
infra
9 healthy
1 missing
1 stale
1 template
The Problem

Your config is everywhere.
You're the only map.

Claude Code stores config in at least 5 different locations across your system. Every project adds more. You lose track. Things break silently.

WITHOUT CCM — config spread across system
🖥️
claude_desktop_config.json
~/Library/Application Support/Claude/
desktop
⚙️
settings.json
~/.claude/
global
🔒
settings.local.json
~/.claude/
global
📄
CLAUDE.md
~/.claude/ + every project/
×N
🔌
.mcp.json
~/repos/project-a/
project
⚙️
settings.json
~/repos/project-a/.claude/
×N
...and N more across every project you've ever opened
CCM
WITH CCM — everything in one view
🔌
MCP Servers 11 found 9 OK · 2 issues
🪝
Hooks 6 total all active
🔐
Permissions 14 rules no conflicts
📄
CLAUDE.md files 5 projects watching
🧩
Templates 6 ready deploy any
🗄️
Backups auto atomic writes
All configs discovered · secrets masked · live watching
CLI

Every capability
from the terminal.

Every CCM capability is available from the terminal. Pipe into your scripts, run in CI, or just stay in the terminal when that's where you already are.

  • ccm scandiscover all config files across all projects
  • ccm healthcheck every MCP command exists and is runnable
  • ccm list mcpsshow all MCP servers, secrets masked
  • ccm list hooksall hooks grouped by event type
  • ccm list permissionsallow/deny rules by project scope
  • ccm list skillsskills from ~/.claude/skills/
  • ccm move mcprelocate MCP between desktop ↔ project
  • ccm templates listreusable MCP configs with placeholder secrets
  • ccm comparediff MCP & permissions between two projects
  • ccm backup restoreroll back any config write atomically
  • ccm servelaunch the web dashboard on port 3737
ccm health
ccm scan
ccm list mcps
zsh
~ $ ccm health
MCP Health Check:
[OK]  neon-postgres (Desktop) — npx
[OK]  linear (Desktop) — npx
[OK]  gmail (Desktop) — npx
[OK]  asana (Desktop) — npx
[OK]  filesystem (Desktop) — npx
[OK]  mariadb (manapower) — npx
[OK]  wordpress (manapower) — node
[OK]  stripe (shopify-app) — npx
[OK]  brave-search (infra) — npx
[NOT FOUND]  hostinger-api (infra) — node /opt/hostinger/mcp.js
[NOT FOUND]  printful (shopify-app) — npx printful-mcp@1.0.1
9 OK · 2 issues found
~ $ ccm scan
Config files found:
[Desktop]  ~/Library/Application Support/Claude/claude_desktop_config.json
[Global Settings]  ~/.claude/settings.json
[Global Settings Local]  ~/.claude/settings.local.json
[Global CLAUDE.md]  ~/.claude/CLAUDE.md
[~/repos/manapower]
mcpJson: ~/repos/manapower/.mcp.json
settings: ~/repos/manapower/.claude/settings.json
claudeMd: ~/repos/manapower/CLAUDE.md
[~/repos/shopify-app]
mcpJson: ~/repos/shopify-app/.mcp.json
settings: ~/repos/shopify-app/.claude/settings.json
[~/repos/infra]
mcpJson: ~/repos/infra/.mcp.json
4 projects · 11 config files discovered
~ $ ccm list mcps
[Desktop]
neon-postgres  npx @neondatabase/mcp-server-neon --api-key=••••••••
linear  npx @linear/mcp-server --token=••••••••
gmail  npx @gptscript-ai/gmail-mcp
asana  npx @asana/mcp
filesystem  npx @modelcontextprotocol/server-filesystem /
[~/repos/manapower]
mariadb  npx mcp-server-mariadb --password=••••••••
wordpress  node /opt/mcp-wp/server.js
[~/repos/shopify-app]
stripe  npx @stripe/mcp --api-key=••••••••
printful  npx printful-mcp@1.0.1
secrets masked automatically
Features

Built for how Claude Code
actually works

Not a generic config tool. Understands every file format, location, and quirk of Claude Code's configuration system.

🔍

Auto-Discovery

Finds every config file automatically — desktop app, global settings, and every project in your workspace. Walk subdirectories, decode Claude's project dir encoding, surface what exists.

~/.claude/projects/ .mcp.json CLAUDE.md chokidar
🛡️

Secret Masking

Detects API keys, tokens, passwords, and connection strings by key name and value pattern. Replaces them with •••••••• everywhere they appear — CLI output, dashboard, templates.

sk- / rk_ prefix detection env vars CLI args

Live File Watching

SSE stream pushes config changes to the dashboard the moment any file is saved. No polling. No refresh. Your view stays in sync with what's actually on disk.

SSE stream chokidar debounced
🔒

Atomic Writes + Backups

Every config write goes through a lock, creates a timestamped backup, and uses atomic file replacement. Bad write? Roll back in one command. Never corrupt a config file again.

proper-lockfile ccm backup restore ~/.ccm/backups/
📦

MCP Templates

Save any MCP server config as a reusable template — secrets become named placeholders automatically. Deploy to any project in one command, filling in your credentials once.

ccm templates save ccm add mcp ~/.ccm/templates/
🩺

Health Checks

Verifies that the command for every MCP server actually exists on your PATH or as an absolute path. Instantly see which servers would fail before Claude Code even tries to start them.

ccm health PATH resolution all projects
↔️

Move & Compare

Promote an MCP server from project scope to desktop, or demote a global permission to per-project. Compare two projects side-by-side to spot drift before it causes issues.

ccm move mcp ccm move permission ccm compare
🌐

Web Dashboard

Full browser UI at localhost:3737. Token-authenticated, live-updating via SSE. Browse all MCPs, hooks, permissions, and CLAUDE.md files without touching the terminal.

ccm serve port 3737 token auth
🔌

Bundled Templates

Ships with ready-to-deploy templates for popular services: Stripe, Neon Postgres, MariaDB, WordPress, Hostinger API, Printful. Configure once, reuse everywhere.

stripe neon-postgres wordpress mariadb
Install

Up in 30 seconds

One global install. Works immediately on any machine with Node 20+.

STEP 01
Install globally

Requires Node.js 20 or later.

npm install -g ccm
STEP 02
Scan your setup

See everything CCM discovers instantly.

ccm scan
STEP 03
Open the dashboard

Browser UI with live watching.

ccm serve
STEP 04
Check MCP health

Find broken configs before Claude does.

ccm health
Node.js ≥ 20
macOS / Linux / WSL
MIT license, free forever
No telemetry

Your Claude config,
finally under control.

Stop opening config files by hand. See everything in one place — from the terminal or the browser.

npm install -g ccm  ·  MIT  ·  Node 20+  ·  no telemetry