cpa_final_answer exactly once and put the complete natural user-facing answer in its answer argument. Preserve the user’s requested language, format, Markdown, detail level, and brevity inside answer; after the answer is complete, append one final line containing exactly
调试工具概览
MCP 提供了多个不同层级的调试工具:- MCP Inspector:交互式、与传输无关的 测试界面。可连接到 stdio 或 Streamable HTTP 服务器,调用 工具、 提示 和 资源,并观察 通知流。这应该是你的首选入口。
- 服务器日志:通过 stderr(stdio 传输)输出结构化日志,或通过
OpenTelemetry(所有传输)输出。
协议内的 日志记录
(
notifications/message)自协议版本2026-07-28起已弃用。 - 客户端开发者工具:大多数 MCP 客户端都会暴露日志和连接 状态。例如下面的 在 Claude Desktop 中调试 是一个示例,或者查阅你所使用客户端的文档。
实现日志记录
服务端日志记录
当构建使用本地 stdio 传输 的服务器时,所有记录到 stderr(标准错误)的消息都会被主机应用程序 自动捕获。 对于使用 Streamable HTTP 传输 的服务器, stderr 不会被客户端捕获。请使用你自己的服务端日志聚合 或 OpenTelemetry 来记录日志,并使用标准 HTTP 工具(curl、浏览器 DevTools 的 Network 面板)来检查请求和 SSE 流。 对于所有 传输,请记录服务器在运行时正在执行的操作:debug 到 emergency)。客户端通过在请求的 _meta 中设置
io.modelcontextprotocol/logLevel
字段,按请求选择接收日志消息。对于省略此字段的请求,服务器不得发送 notifications/message。
需要记录的重要事件:
- 启动步骤
- 资源访问
- 工具执行
- 错误情况
- 性能指标
常见问题
下面的示例使用 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 独立测试
- 验证
协议兼容性:调用
server/discover来查看 服务器支持哪些协议版本。UnsupportedProtocolVersionError(-32022)会在其data字段中列出服务器支持的 版本 - 检查
每个请求的
_meta字段: 每个请求都必须携带io.modelcontextprotocol/protocolVersion和io.modelcontextprotocol/clientCapabilities,客户端还应当包含io.modelcontextprotocol/clientInfo。缺少任一 必需字段的请求都会以错误-32602(Invalid params)被拒绝,这与许多其他格式错误输入返回的 错误码相同。如果服务器需要请求的clientCapabilities未声明的某项能力,例如 elicitation,它会返回一个MissingRequiredClientCapabilityError(-32021),并指出缺失的 能力。检查请求的_meta和server/discover响应,以 验证双方都声明了你所期望的内容
在 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 参考和故障排除