调试工具概览
MCP 提供了多个不同层级的调试工具:- MCP Inspector:交互式、与传输方式无关的 测试界面。可通过 stdio 或带有 SSE 服务器的 HTTP 进行连接,调用 tools、 prompts 和 resources,并查看 通知流。这应该是你的首选。
- 服务器日志:通过 stderr(stdio 传输)或通过
notifications/message(所有传输方式)输出结构化日志。 - 客户端开发者工具:大多数 MCP 客户端都会暴露日志和连接 状态。下面的 Claude Desktop 中的调试 是一个示例,或者查阅你所使用客户端的文档。
实现日志记录
服务端日志记录
当构建使用本地 stdio 传输 的服务器时,所有记录到 stderr(标准错误)的消息 都会被宿主应用程序自动捕获。 对于使用 HTTP with SSE 传输 的服务器, stderr 不会被客户端捕获。请使用下面的日志消息通知、 你自己的服务端日志聚合,或标准 HTTP 工具(curl、浏览器 DevTools Network 面板)来检查请求和 SSE 流。 对于所有传输,你也可以通过发送日志消息通知来 向客户端提供日志:debug 到 emergency)。客户端可以在运行时通过
logging/setLevel
请求调整最低级别。
需要记录的重要事件:
- 初始化步骤
- 资源访问
- 工具执行
- 错误情况
- 性能指标
常见问题
下面的示例使用 Claude Desktop 的claude_desktop_config.json;相同的
原则也适用于任何基于 stdio 的 MCP 客户端。
工作目录
当 MCP 客户端启动一个 stdio 服务器时:- 通过客户端配置启动的服务器,其工作目录可能是
未定义的(例如在 macOS 上可能是
/),因为客户端可能从 任何位置启动 - 在配置和
.env文件中始终使用绝对路径,以确保 稳定运行 - 通过命令行直接测试服务器时,工作目录将是 你运行命令时所在的位置
claude_desktop_config.json 中,使用:
./data 这样的相对路径
环境变量
通过 stdio 启动的 MCP 服务器只会自动继承 一小部分环境变量(具体集合取决于平台)。 要覆盖默认变量或提供你自己的变量,可以在claude_desktop_config.json 中指定一个 env 键:
服务器初始化
常见的初始化问题:-
路径问题
- 服务器可执行文件路径不正确
- 缺少所需文件
- 权限问题
- 尝试为
command使用绝对路径
-
配置错误
- 无效的 JSON 语法
- 缺少必需字段
- 类型不匹配
-
环境问题
- 缺少环境变量
- 变量值不正确
- 权限限制
连接问题
当服务器无法连接时:- 检查客户端日志
- 验证服务器进程是否正在运行
- 使用 Inspector 独立测试
- 验证 协议兼容性
- 检查
能力协商:
错误
-32602是 标准的 JSON-RPC “Invalid params” 错误码,并会在许多 场景中返回。一个常见原因是服务器向 未声明该能力的客户端发送 sampling 请求。检查initialize交互 以验证双方都已声明了你预期的内容
在 Claude Desktop 中进行调试
Claude Desktop 是众多 MCP 客户端之一。它可在 macOS 和 Windows 上使用。检查服务器状态
点击聊天输入框中的“添加文件、连接器等”加号图标,然后 将鼠标悬停在 Connectors 菜单上,以查看已连接的服务器和可用工具。查看日志
日志文件写入到:- macOS:
~/Library/Logs/Claude - Windows:
%APPDATA%\Claude\logs
- 服务器连接事件
- 配置问题
- 运行时错误
- 消息交互
使用 Chrome DevTools
在 Claude Desktop 中访问 Chrome 的开发者工具,以排查 客户端错误:- 创建一个
developer_settings.json文件,并将allowDevTools设置为 true:
- 打开 DevTools:
Command-Option-I(macOS)或Ctrl+Alt+I(Windows)
- 主内容窗口
- 应用标题栏窗口
- 消息载荷
- 连接时序
调试工作流
开发周期
-
初始开发
- 使用 Inspector 进行基本测试
- 实现核心功能
- 添加日志点
-
集成测试
- 在目标 MCP 客户端中进行测试
- 监控日志
- 检查错误处理
测试更改
要高效测试更改:- 配置更改:重启 MCP 客户端
- 服务器代码更改:重启客户端(对于 Claude Desktop,请完全退出 并重新打开;仅关闭窗口是不够的)
- 快速迭代:在开发期间使用 Inspector
最佳实践
日志策略
-
结构化日志
- 使用一致的格式
- 包含上下文
- 添加时间戳
- 跟踪请求 ID
-
错误处理
- 记录堆栈跟踪
- 包含错误上下文
- 跟踪错误模式
- 监控恢复情况
-
性能跟踪
- 记录操作耗时
- 监控资源使用情况
- 跟踪消息大小
- 测量延迟
安全注意事项
在调试时:-
敏感数据
- 清理日志
- 保护凭据
- 屏蔽个人信息
-
访问控制
- 验证权限
- 检查身份验证
- 监控访问模式
获取帮助
当遇到问题时:-
第一步
- 检查服务器日志
- 使用 Inspector 进行测试
- 检查配置
- 验证环境
- 支持渠道
-
提供信息
- 日志摘录
- 配置文件
- 复现步骤
- 环境详情
下一步
MCP Inspector
学习使用 MCP Inspector
构建一个 MCP 服务器
一步步从零开始构建服务器
连接本地服务器
claude_desktop_config.json 完整参考与故障排查