Config Schema
Canonical path: ~/.mcpup/config.json
Versioning
- Current schema version:
1 - Unknown newer versions are rejected.
- Older versions require explicit migrators before load/write.
Top-Level Shape
{
"version": 1,
"servers": {},
"clients": {},
"profiles": {},
"activeProfile": ""
}
servers
Map key: server name (^[a-z0-9][a-z0-9-]{0,62}$, reserved names blocked)
{
"github": {
"command": "npx -y @modelcontextprotocol/server-github",
"args": ["--foo"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
},
"description": "GitHub MCP server"
}
}
Env values support:
- Literal value, for example
"abc123" - Reference value, for example
"${GITHUB_TOKEN}"
clients
Map key: client name (claude-code, cursor, claude-desktop, codex, opencode)
Each client stores per-server state:
{
"cursor": {
"servers": {
"github": {
"enabled": true,
"enabledTools": ["search_issues"],
"disabledTools": ["delete_issue"]
}
}
}
}
Rules:
- Referenced server must exist in
servers. - A tool cannot appear in both
enabledToolsanddisabledTools.
profiles
Profile structure:
{
"coding": {
"servers": ["github", "postgres"],
"tools": {
"github": {
"enabled": ["search_issues"],
"disabled": ["delete_issue"]
}
}
}
}
Rules:
- Profile name pattern:
^[a-z0-9][a-z0-9-_]{0,62}$ - Referenced servers must exist in
servers.
activeProfile
- Optional string.
- If set, it must reference an existing profile key.