mcpmatrix
定义一次MCP服务器,并从单个规范配置生成客户端配置。
此版本支持:
- Codex CLI
- 克劳德代码CLI
- 双子星命令行工具
- 从现有客户端文件导入配置
- 显式配置验证
doctor诊断- 交互式TUI
- 具有保留功能的版本化备份
安装
从npm全局安装:
npm install -g @mokivan/mcpmatrix可用二进制文件:
mcpmatrixmmx
最低Node.js版本:
20
成套合同:
- 支持的公共接口:
mcpmatrix,mmx,并记录CLI标志 - 不支持:从包内部或
dist/*
快速开始
- 创建默认配置:
mcpmatrix init- 编辑
~/.mcpmatrix/config.yml使用您的MCP服务器和范围:
servers:
github:
transport: stdio
command: npx
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_TOKEN: ${env:GITHUB_TOKEN}
medusa:
transport: remote
protocol: http
url: https://docs.medusajs.com/mcp
scopes:
global:
enable:
- github
tags:
ecommerce:
enable:
- medusa
repos:
"/Users/ivan/dev/store":
tags: ["ecommerce"]
enable: []- 验证、预览和应用:
mcpmatrix validate
mcpmatrix doctor
mcpmatrix schema
mcpmatrix plan
mcpmatrix apply
mcpmatrix backups list
mcpmatrix rollback --client codex可选交互式工作流:
mcpmatrix tui导入现有配置
将MCP服务器从支持的客户端文件导入 ~/.mcpmatrix/config.yml:
mcpmatrix import检测到的来源:
- 食品法典:
~/.codex/config.toml - 克劳德代码:
~/.claude.json - 双子座:
~/.gemini/settings.json
导入规则:
- 导入失败,如果
~/.mcpmatrix/config.yml已存在 - 导入的服务器成为
servers - 在中启用了导入的服务器名称
scopes.global.enable - 食品法典进口
command作为transport: stdio和url作为transport: remote - Claude导入stdio、远程HTTP和远程SSE条目
- Gemini使用以下方式导入stdio和远程HTTP条目
httpUrl - 同一服务器名称的规范定义冲突导致导入失败
命令
mcpmatrix init
在以下位置创建初始配置文件 ~/.mcpmatrix/config.yml.
mcpmatrix import
将现有的MCP客户端配置导入到规范的YAML文件中。
mcpmatrix schema
打印打包的JSON模式路径 file:// URI用于 ~/.mcpmatrix/config.yml.
当您的编辑器没有自动拾取模式头或您想手动配置模式关联时,这很有用。
mcpmatrix validate
验证:
- YAML语法
- env引用语法
- 对已定义服务器的作用域引用
- 可通过PATH或可执行路径使用stdio命令
- 远程MCP URL和身份验证结构
`mcpmatrix doctor [--repo
]`
运行更完整的诊断过程:
- MCP命令在本地解析
- 远程MCP URL在结构上有效
- 已定义引用的环境变量
- 配置的仓库路径是可访问的
- 可以解析和检查检测到的回购
- 堆栈文件建议标签,而无需自动修改配置
- 据报道,Codex、Claude和Gemini具有兼容性
建议的堆栈标签:
package.json->nodepom.xml->java.csproj->dotnet
`mcpmatrix plan [--repo
]`
解析当前存储库的活动服务器集,并显示:
- 检测到回购路径
- 主动标签
- 活动服务器
- 全局与repo范围的服务器分区
- 传输和每个客户端的兼容性
- 将要更新的文件
- 估计差异大小
存储库检测顺序:
- `--repo
`
- 向上搜索
.git - 当前工作目录
`mcpmatrix apply [--repo
]`
解析相同的服务器集并写入客户端配置。
客户端输出:
- 全球食品法典委员会:
~/.codex/config.toml - Codex回购范围:
/.codex/config.toml - 克劳德代码全局:
~/.claude.json - Claude代码仓库范围:
/.mcp.json - 双子座全球:
~/.gemini/settings.json - Gemini回购范围:
/.gemini/settings.json
写入行为:
- 全局作用域只写入解析自的服务器
scopes.global.enable - repo作用域只写入从匹配的repo解析的服务器
tags和enable,不包括已在全球范围内活动的名称 - Codex仅更新托管
mcpmatrix每个里面的块config.toml,在下面使用命名的TOML表mcp_servers - 克劳德只更新
mcpServers内部部分.claude.json和.mcp.json - Gemini仅更新
mcpServers内部部分settings.json - stdio和支持的远程传输按客户端格式呈现
apply如果任何活动服务器无法由Codex、Claude或Gemini表示,则在写入之前失败- 保留这些管理区域之外的现有内容
- 在覆盖之前备份现有文件
apply在所有选定目标之间都是事务性的:要么更新所有全局和仓库范围的文件,要么恢复以前的状态
备份文件:
- 存储于
~/.mcpmatrix/backups/ - 文件名按客户端和作用域进行版本控制,例如
codex-global-YYYY-MM-DD-HH-MM.toml - 每个备份都存储了精确的实时目标路径的元数据
- 每个精确的目标文件保留最新的3个备份
回滚行为:
- 如果任何目标写入失败,
mcpmatrix apply退出非零 - mcpmatrix将所有选定的客户端文件恢复到应用前的状态
- 失败的应用程序不应留下混合客户端状态
兼容性说明:
- 在加载规范配置或导入/更新客户端配置时,mcpmatrix允许UTF-8 BOM前缀的YAML、TOML和JSON配置文件
`mcpmatrix backups list [--client ] [--repo
]`
列出存储在中的版本化备份 ~/.mcpmatrix/backups/.
输出包括:
- 客户端组
- 范围
- 备份文件名
- 推断时间戳
- 实时目标路径
- 完整备份路径
如果不存在备份,该命令将打印一条空状态消息并成功退出。
`mcpmatrix rollback [--client ] [--backup ] [--repo
]`
将版本备份还原到实时客户端配置文件中。
行为:
- 不带标志,恢复Codex、Claude和Gemini的最新全局备份
- 和
--client,仅还原所选范围内该客户端的最新备份 - 和
--repo,恢复该存储库的最新存储库范围备份 - 和
--backup,按基本名称从以下位置还原特定备份文件~/.mcpmatrix/backups/或通过绝对路径 - 当
--backup和--client如果两者都提供,则备份必须属于该客户端 - 当
--backup和--repo如果两者都提供,则备份必须属于该存储库并具有存储库范围
故障规则:
- 全局回滚是严格的:如果缺少任何所需的客户端备份,则不会恢复任何内容
- 回购回滚是严格的:如果缺少任何所需的回购范围的客户端备份,则不会恢复任何内容
- 当该客户端不存在备份时,单客户端回滚失败
- 无效或不匹配的备份参数退出非零
- 回滚不会为还原的文件创建新的备份条目
`mcpmatrix tui [--repo
]`
为检测到的仓库打开交互式终端UI。TUI可以:
- 可视化活动MCP服务器
- 检查回购状态和
doctor输出 - 打开
~/.mcpmatrix/config.yml在$EDITOR - 在中启用或禁用回购本地MCP
scopes.repos..enable
键盘快捷键:
↑/↓移动所选内容Enter或Space切换所选的回购本地MCP/按名称筛选服务器列表d打开结构化doctor报告e在中打开规范配置$EDITOR并在退出时重新加载r刷新仓库检测和已解析的服务器状态q或Esc退出当前视图或关闭TUI
规范架构的当前限制:
- 从继承的服务器
global或tags在TUI中可见,但不能在那里禁用,因为范围合并只是累加的
配置
全局配置位置:
~/.mcpmatrix/config.yml自动补全支持:
mcpmatrix init写ayaml-language-server将模式头插入到生成的配置文件中mcpmatrix schema打印打包的模式路径和URI,以便手动设置编辑器- 打包的架构文件:
schemas/mcpmatrix-config.schema.json
公共架构:
servers:
:
transport: stdio
command: string
args: string[]
env:
: string
:
transport: remote
protocol: auto | http | sse
url: string
headers:
: string
auth:
type: none | bearer | oauth
scopes:
global:
enable: string[]
tags:
:
enable: string[]
repos:
:
tags: string[]
enable: string[]规则:
- 服务器名称必须唯一
stdio服务器使用command,args,以及envremote服务器使用protocol,url,headers,以及auth- 范围是累加的
- 分辨率顺序为
global -> tags -> repo - 删除重复的服务器名称,同时保留首次出现
- env引用必须使用
${env:VAR_NAME}使用插值语法时 - 插值可以出现在任何字符串字段中
- repo匹配使用跨Windows、Linux和macOS的规范化绝对路径
发展
安装依赖项:
npm install构建:
npm run build运行检查:
npm run lint
npm run typecheck
npm test
npm run test:docs
npm run test:release
npm run test:smoke
npm run pack:check释放
公共范围的包 @mokivan/mcpmatrix 在合并后从GitHub Actions发布到 master 或手动运行 Release 工作流程。工作流由版本和注册表检查保护。发布工作流详细信息 docs/releasing.md.
兼容性
- 支持的运行时:Node.js
20+ - 支持的客户端:Codex CLI、Claude Code CLI、Gemini CLI
- semver仅适用于记录在案的CLI
- 导入包内部不在支持合同范围内,可能会中断,恕不另行通知
故障排除
validate执行命令失败通常意味着可执行文件在本地不可用PATH或者不是可执行文件路径validate远程服务器故障通常意味着url,protocol,或auth块格式不正确doctor当引用的env var缺失或配置的repo路径不再存在时失败doctor还报告无法应用于Codex、Claude或Gemini的活动服务器import失败时~/.mcpmatrix/config.yml已存在,或者当同一服务器名称在客户端之间具有冲突的规范定义时apply故障应恢复到之前的客户端状态;如果错误仍然存在,请检查报告的目标路径和备份文件- 如果客户端配置在Windows上包含UTF-8 BOM,mcpmatrix仍应正确解析它;如果没有,则将其视为错误
- 使用
mcpmatrix backups list在运行之前检查可用的还原点mcpmatrix rollback
文档保护
当实施路线图阶段或支持的客户端矩阵发生变化时,请在相同的更改中更新此README。
该案例的最低README更新:
- 支持的客户端
- 面向用户的命令或设置更改
- 如果包元数据发生更改,则发布和安装说明
- 保持
docs/specs/spec-cli.md与公共CLI界面对齐 - 保持
npm run test:docs经过 - 当
package.json.version更改,添加匹配项CHANGELOG.md节和保持npm run test:release经过
真相之源
执行顺序如下:
- 路线图文件
docs/ - 规范规范
docs/specs/ - 代码in
src/
规范规范是前缀为的文件 spec-.
