Skip to main content

MCP profile manager for Claude Code — pick which MCP servers load per project

Project description

mancp

A lightweight MCP profile manager for Claude Code and Conductor. Pick which MCP servers load per project instead of dumping them all into every session.

The problem

Claude Code merges user-level MCPs from ~/.claude.json into every project, always. There's no per-project exclusion. With 10+ MCPs configured, you burn 30-50k tokens on tool definitions before writing a line of code.

mancp stores all your MCPs in a central registry and lets you toggle each one independently between user scope (~/.claude.json) and project scope (.mcp.json).

Install

uvx mancp

Or install permanently:

uv tool install mancp

Quick start

# 1. Import your existing MCPs (once)
mancp init

# 2. Open the TUI in any project
cd ~/repos/my-project
mancp

mancp init reads all MCP servers from ~/.claude.json (global + all project scopes) into ~/.config/mancp/mcps.json. Safe to re-run -- skips duplicates.

TUI

  mancp  |  my-project  |  12 in store
 U  P  name                        command / url
 U  -  github                      npx  -y  @modelcontextprotocol/server-github
 -  P  motherduck                  npx  -y  @motherduck/mcp-server
 U  P  filesystem                  npx  -y  @anthropic/mcp-server-filesystem
 -  -  slack                       npx  -y  @anthropic/mcp-server-slack
  j/k navigate   u user   p project   enter detail   d delete   s save   q quit

Each MCP has two independent toggles:

Key Action
u Toggle user scope (~/.claude.json) for current row
p Toggle project scope (.mcp.json) for current row
j / k or arrows Navigate list
enter Open detail view (shows config, secrets masked)
s / ctrl+s Save all changes
q / esc Quit without saving

Status columns

  • U (yellow) -- active in ~/.claude.json user scope (loads in all projects)
  • P (cyan) -- active in project .mcp.json (loads only in this project)
  • - (dim) -- not active in that scope

An MCP can be in both scopes, neither, or just one. On save, mancp writes ~/.claude.json and .mcp.json to match what you see.

Detail view

Press enter on any row to see the full MCP config (secrets masked). From there:

  • d -- delete from store permanently
  • q / esc -- close

Other commands

mancp list       # Show store with active status indicators
mancp clean      # Remove all MCPs from ~/.claude.json (with confirmation)

Store format

~/.config/mancp/mcps.json -- plain JSON, same structure as .mcp.json's mcpServers block. You can edit it directly to rename entries or fix configs.

Notes

  • .mcp.json should be in .gitignore if it contains tokens
  • ~/.claude.json is backed up automatically before every write
  • The TUI auto-detects new MCPs added via claude mcp add since last init

Development

git clone https://github.com/dumkydewilde/mancp
cd mancp
uv sync --dev
uv run pytest

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mancp-0.1.0.tar.gz (44.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mancp-0.1.0-py3-none-any.whl (31.9 kB view details)

Uploaded Python 3

File details

Details for the file mancp-0.1.0.tar.gz.

File metadata

  • Download URL: mancp-0.1.0.tar.gz
  • Upload date:
  • Size: 44.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mancp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4c6ecc3a2e5bd7e6bf0505c395e813cd045c22381a16408a09d5fd2bf1969dbd
MD5 31de174baf5e8abce2d72fa70f84c448
BLAKE2b-256 3f9cc3f8a7c7910721ba66ade8eb7e4531859554a749a7229838e51425f11f6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for mancp-0.1.0.tar.gz:

Publisher: publish.yml on dumkydewilde/mancp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mancp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mancp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 31.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mancp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 681d5fdc34f01d39f7b00b8e07282bb2bf2d41f7e3e9b95e0dabbe28806ec6c8
MD5 5ffb4169d9c5361191a7bcb0289f3f12
BLAKE2b-256 5575ff263f9d1697ac3cefb7e688826adeacce2111f1e73cff1f6b4489c20a21

See more details on using hashes here.

Provenance

The following attestation bundles were made for mancp-0.1.0-py3-none-any.whl:

Publisher: publish.yml on dumkydewilde/mancp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page