Skip to main content
在开发 MCP 服务器或将其与应用程序集成时,有效的调试至关重要。 本指南介绍了 MCP 生态系统中可用的调试工具和方法。

调试工具概览

MCP 提供了多个不同层级的调试工具:
  1. MCP Inspector:交互式、与传输方式无关的 测试界面。可通过 stdio 或带有 SSE 服务器的 HTTP 进行连接,调用 toolspromptsresources,并查看 通知流。这应该是你的首选。
  2. 服务器日志:通过 stderr(stdio 传输)或通过 notifications/message (所有传输方式)输出结构化日志。
  3. 客户端开发者工具:大多数 MCP 客户端都会暴露日志和连接 状态。下面的 Claude Desktop 中的调试 是一个示例,或者查阅你所使用客户端的文档。

实现日志记录

服务端日志记录

当构建使用本地 stdio 传输 的服务器时,所有记录到 stderr(标准错误)的消息 都会被宿主应用程序自动捕获。
本地 MCP 服务器不应将消息记录到 stdout(标准输出),因为这 会干扰协议运行。
对于使用 HTTP with SSE 传输 的服务器, stderr 不会被客户端捕获。请使用下面的日志消息通知、 你自己的服务端日志聚合,或标准 HTTP 工具(curl、浏览器 DevTools Network 面板)来检查请求和 SSE 流。 对于所有传输,你也可以通过发送日志消息通知来 向客户端提供日志:
MCP 定义了八个 RFC 5424 严重性级别 (从 debugemergency)。客户端可以在运行时通过 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 键:

服务器初始化

常见的初始化问题:
  1. 路径问题
    • 服务器可执行文件路径不正确
    • 缺少所需文件
    • 权限问题
    • 尝试为 command 使用绝对路径
  2. 配置错误
    • 无效的 JSON 语法
    • 缺少必需字段
    • 类型不匹配
  3. 环境问题
    • 缺少环境变量
    • 变量值不正确
    • 权限限制

连接问题

当服务器无法连接时:
  1. 检查客户端日志
  2. 验证服务器进程是否正在运行
  3. 使用 Inspector 独立测试
  4. 验证 协议兼容性
  5. 检查 能力协商: 错误 -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 的开发者工具,以排查 客户端错误:
  1. 创建一个 developer_settings.json 文件,并将 allowDevTools 设置为 true:
  1. 打开 DevTools:Command-Option-I(macOS)或 Ctrl+Alt+I(Windows)
注意:你会看到两个 DevTools 窗口:
  • 主内容窗口
  • 应用标题栏窗口
使用 Console 面板检查客户端错误。 使用 Network 面板检查:
  • 消息载荷
  • 连接时序

调试工作流

开发周期

  1. 初始开发
    • 使用 Inspector 进行基本测试
    • 实现核心功能
    • 添加日志点
  2. 集成测试
    • 在目标 MCP 客户端中进行测试
    • 监控日志
    • 检查错误处理

测试更改

要高效测试更改:
  • 配置更改:重启 MCP 客户端
  • 服务器代码更改:重启客户端(对于 Claude Desktop,请完全退出 并重新打开;仅关闭窗口是不够的)
  • 快速迭代:在开发期间使用 Inspector

最佳实践

日志策略

  1. 结构化日志
    • 使用一致的格式
    • 包含上下文
    • 添加时间戳
    • 跟踪请求 ID
  2. 错误处理
    • 记录堆栈跟踪
    • 包含错误上下文
    • 跟踪错误模式
    • 监控恢复情况
  3. 性能跟踪
    • 记录操作耗时
    • 监控资源使用情况
    • 跟踪消息大小
    • 测量延迟

安全注意事项

在调试时:
  1. 敏感数据
    • 清理日志
    • 保护凭据
    • 屏蔽个人信息
  2. 访问控制
    • 验证权限
    • 检查身份验证
    • 监控访问模式
有关 MCP 攻击向量和缓解措施的完整说明,请参阅 安全最佳实践

获取帮助

当遇到问题时:
  1. 第一步
    • 检查服务器日志
    • 使用 Inspector 进行测试
    • 检查配置
    • 验证环境
  2. 支持渠道
  3. 提供信息
    • 日志摘录
    • 配置文件
    • 复现步骤
    • 环境详情

下一步

MCP Inspector

学习使用 MCP Inspector

构建一个 MCP 服务器

一步步从零开始构建服务器

连接本地服务器

claude_desktop_config.json 完整参考与故障排查