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.jsonuser 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 permanentlyq/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.jsonshould be in.gitignoreif it contains tokens~/.claude.jsonis backed up automatically before every write- The TUI auto-detects new MCPs added via
claude mcp addsince last init
Development
git clone https://github.com/dumkydewilde/mancp
cd mancp
uv sync --dev
uv run pytest
License
MIT
Release files for mancp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mancp-0.2.0.tar.gz | 54.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mancp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 97.1 kB
Release files / mancp-0.2.0.tar.gz
| Download URL | mancp-0.2.0.tar.gz |
|---|---|
| Size | 54.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b675ebfed904bd8159317451154f8a3bb94dccf56d28f65c811d77e403e271e6
|
|
BLAKE2b-256 checksum How to use checksums |
a3b66ddce61f4adc2260ad201b6e2f260d9d6850dad45fd6da521a810ada6200
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 8, 2026.
Transparency logRelease files / mancp-0.2.0-py3-none-any.whl
| Download URL | mancp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 42.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bd1c16ee84997f3a90fc35d92befd62b4a0d4798a00ab0b4c041183dee9e4836
|
|
BLAKE2b-256 checksum How to use checksums |
c2615f6866d1ff0c692772dde0c4bd34d737bf00f6797685ce436a8e9689ba7c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 8, 2026.
Transparency log