mcp-doctor 是一个面向 MCP(Model Context Protocol)服务器的诊断工具,以零配置 CLI 的形式提供。随着 MCP 服务器逐渐成为 AI 辅助开发的骨干,服务器数量增多会带来一些不易察觉的问题:服务器宕机直到工具调用失败才被发现、配置文件中硬编码的密钥泄露、响应缓慢的服务器拖慢整个 AI 工作流、不同工具之间的配置不一致导致在 Cursor 中可用的设置在 Claude Desktop 中失效。mcp-doctor 旨在通过单个命令快速检查所有工具中的全部服务器。
主要能力
- 连接健康检查:对所有 MCP 服务器执行 JSON-RPC initialize 握手,验证服务器是否响应。
- 安全审计:检查配置中的明文密钥、参数中的令牌、危险的 shell 命令以及过宽的权限。
- 延迟基准测试:测量每个已配置服务器的 JSON-RPC 往返延迟,并给出 fast / ok / slow 评级。
- 配置发现与合并:自动读取各工具标准位置的配置文件,将发现的服务器合并到单一视图中。
使用方式
mcp-doctor 无需配置,会自动找到服务器。支持以下命令:
- doctor:完整检查,一次性运行 scan、security 和 bench,并打印摘要(推荐)。
- scan:测试所有 MCP 服务器的连接,发现配置并验证每个服务器响应 JSON-RPC 握手。
- security:审计配置中的安全问题,检查泄露的密钥、过宽的权限和风险命令模式。
- bench:对每个已配置的服务器测量 JSON-RPC 往返延迟,进行基准测试。
所有命令都支持 --json 参数,用于输出机器可读的结构化结果,适合 CI 管道、仪表盘或脚本使用。
MCP 服务器模式
mcp-doctor 本身也可以作为 MCP 服务器运行,将 scan、security、bench 和 doctor 暴露为 AI 助手可直接调用的工具。当不带参数调用且 stdin 被管道输入时,它会自动以 stdio 传输启动服务器模式;也可以显式运行。这意味着 AI 助手可以按需诊断自身的 MCP 基础设施。
在 CI 中使用
可以在 CI 中使用 mcp-doctor 自动捕获损坏的服务器和泄露的密钥,该 action 通过 ${{ steps.mcp-doctor.outputs.result }} 输出 JSON 供下游处理。
支持的工具
支持 Claude Code、Cursor、VS Code、Windsurf 和 Claude Desktop。mcp-doctor 从各工具的标准位置读取配置文件,并合并所有发现的服务器。
运行要求
需要 Node.js 18+。
贡献
欢迎贡献:可提交 issue 或 pull request。创建功能分支(git checkout -b my-feature),提交更改。