Manage your MCP (Model Context Protocol) server definitions in one place and apply them to supported agents.
| Agent | id | Config Path |
|---|---|---|
| Claude Code | claude-code |
~/.claude.json |
| Claude Desktop | claude-desktop |
macOS: ~/Library/Application Support/Claude/claude_desktop_config.jsonWindows: %APPDATA%\Claude\claude_desktop_config.jsonLinux: ~/.config/Claude/claude_desktop_config.json |
| Codex CLI | codex-cli |
~/.codex/config.toml |
| Cursor | cursor |
~/.cursor/mcp.json |
| Gemini CLI | gemini-cli |
~/.gemini/settings.json |
| GitHub Copilot CLI | github-copilot-cli |
~/.copilot/mcp-config.json |
More agents may be added in the future.
npm install -g mmcp$ mmcp add [--env KEY=VALUE ...] [--config <path>] [--force] -- <name> <command> [args...]
# e.g.
$ mmcp add -- context7 npx -y @upstash/context7-mcp@latest
$ mmcp add -- everything npx -y @modelcontextprotocol/server-everything@latestAdds the MCP server definition into ~/.mmcp.json.
You can check configured servers anytime:
$ mmcp list [--config <path>]
context7: npx -y @upstash/context7-mcp@latest
everything: npx -y @modelcontextprotocol/server-everything@latestSet which agents to apply to (e.g. claude-code).
$ mmcp agents add [--config <path>] <name...>
# e.g.
$ mmcp agents add claude-code
$ mmcp agents add claude-desktop
$ mmcp agents add codex-cli
$ mmcp agents add cursor
$ mmcp agents add gemini-cli
$ mmcp agents add github-copilot-cliList registered agents:
$ mmcp agents list [--config <path>]
claude-code
claude-desktop
codex-cli
cursor
gemini-cli
github-copilot-cli$ mmcp apply [--mode merge|replace]See Apply modes for what each mode does.
That’s it. Your MCP servers from ~/.mmcp.json will be written into the agent’s config (e.g. ~/.claude.json for Claude Code).
mmcp stores configuration as JSON. Default location is ~/.mmcp.json.
Example:
{
"mode": "merge",
"agents": [
"claude-code",
"claude-desktop",
"codex-cli",
"cursor",
"gemini-cli",
"github-copilot-cli"
],
"mcpServers": {
"context7": {
"command": "npx",
"args": [
"-y",
"@upstash/context7-mcp@latest"
],
"env": {}
},
"everything": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-everything@latest"
],
"env": {}
}
}
}mode controls how agent configs are updated when you run mmcp apply.
Existing agent entries stay unless mmcp overrides the same name.
Existing agent config
{
"mcpServers": {
"other": {
"command": "custom"
}
}
}mmcp.json
{
"mode": "merge",
"agents": [...],
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"]
}
}
}After applying
{
"mcpServers": {
"other": {
"command": "custom"
},
+ "context7": {
+ "command": "npx",
+ "args": ["-y", "@upstash/context7-mcp@latest"]
+ }
}
}All agent-side entries are removed and re-created from mmcp.
Existing agent config
{
"mcpServers": {
"other": {
"command": "custom"
}
}
}mmcp.json
{
"mode": "replace",
"agents": [...],
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"]
}
}
}After applying
{
"mcpServers": {
- "other": {
- "command": "custom"
- }
+ "context7": {
+ "command": "npx",
+ "args": ["-y", "@upstash/context7-mcp@latest"]
+ }
}
}