调试工具概览
MCP 提供了若干用于在不同层面进行调试的工具:- MCP Inspector:交互式、与传输无关的测试 UI。连接到 stdio 或 Streamable HTTP 服务器,调用工具、提示和资源,并观察通知流。这应当是你的第一站。
- 服务器日志:结构化日志输出到 stderr(stdio 传输)或通过
notifications/message(所有传输)。 - 客户端开发者工具:大多数 MCP 客户端都暴露日志和连接状态。参见下方在 Claude Desktop 中调试作为一个示例,或查阅你客户端的文档。
实现日志记录
服务器端日志
在构建使用本地 stdio 传输的服务器时,所有记录到 stderr(标准错误)的消息都会被宿主应用自动捕获。 对于使用 Streamable HTTP 传输的服务器,stderr 不会被客户端捕获。请使用下面的日志消息通知、你自己的服务器端日志聚合,或标准的 HTTP 工具(curl、浏览器 DevTools Network 面板)来检查请求、Mcp-Session-Id header 和 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” 代码,会在许多上下文中返回。一个常见原因是服务器向未声明相应能力的客户端发送了采样或征询请求。检查initialize交换以验证双方都声明了你所期望的内容
在 Claude Desktop 中调试
Claude Desktop 是众多 MCP 客户端之一。它在 macOS 和 Windows 上可用。检查服务器状态
点击聊天输入框中的 “Add files, connectors, and more” 加号图标,然后将鼠标悬停在 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 参考和故障排查