跳到主要内容
在开发 MCP 服务器或将其与应用程序集成时,有效的调试至关重要。本指南涵盖了 MCP 生态系统中可用的调试工具和方法。
本指南适用于 macOS。其他平台的指南即将推出。

调试工具概览

MCP 提供了多种不同级别的调试工具
  1. MCP 检查器
  2. Claude Desktop 开发者工具
    • 集成测试
    • 日志收集
    • Chrome 开发者工具集成
  3. 服务器日志
    • 自定义日志实现
    • 错误追踪
    • 性能监控

在 Claude Desktop 中调试

检查服务器状态

Claude.app 界面提供基础的服务器状态信息
  1. 点击 图标查看
    • 已连接的服务器
    • 可用的提示词和资源
  2. 点击“搜索与工具” 图标查看
    • 提供给模型的工具

查看日志

检查 Claude Desktop 生成的详细 MCP 日志
# Follow logs in real-time
tail -n 20 -F ~/Library/Logs/Claude/mcp*.log
日志捕获以下内容:
  • 服务器连接事件
  • 配置问题
  • 运行时错误
  • 消息交换

使用 Chrome 开发者工具

在 Claude Desktop 内访问 Chrome 开发者工具以排查客户端错误
  1. 创建一个 developer_settings.json 文件,并将 allowDevTools 设置为 true
echo '{"allowDevTools": true}' > ~/Library/Application\ Support/Claude/developer_settings.json
  1. 打开开发者工具:Command-Option-Shift-i
注意:你会看到两个开发者工具窗口
  • 主内容窗口
  • 应用标题栏窗口
使用控制台 (Console) 面板检查客户端错误。 使用网络 (Network) 面板检查:
  • 消息负载
  • 连接耗时

常见问题

工作目录

在 Claude Desktop 中使用 MCP 服务器时
  • 通过 claude_desktop_config.json 启动的服务器,其工作目录可能是未定义的(例如 macOS 上的 /),因为 Claude Desktop 可能从任何位置启动
  • 请始终在配置文件和 .env 文件中使用绝对路径,以确保操作的可靠性
  • 如果是直接通过命令行测试服务器,工作目录将是你运行命令的当前位置
例如,在 claude_desktop_config.json 中使用:
{
  "command": "npx",
  "args": [
    "-y",
    "@modelcontextprotocol/server-filesystem",
    "/Users/username/data"
  ]
}
而不是像 ./data 这样的相对路径

环境变量

MCP 服务器只会自动继承部分环境变量,如 USERHOMEPATH 若要覆盖默认变量或提供自定义变量,可以在 claude_desktop_config.json 中指定 env 键:
{
  "myserver": {
    "command": "mcp-server-myapp",
    "env": {
      "MYAPP_API_KEY": "some_key"
    }
  }
}

服务器初始化

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

连接问题

当服务器连接失败时
  1. 检查 Claude Desktop 日志
  2. 验证服务器进程是否正在运行
  3. 使用 Inspector 进行独立测试
  4. 验证协议兼容性

实现日志记录

服务端日志

在构建使用本地 stdio 传输层 的服务器时,所有记录到 stderr(标准错误)的消息都将被宿主应用程序(如 Claude Desktop)自动捕获。
本地 MCP 服务器不应向 stdout(标准输出)记录消息,因为这会干扰协议的正常运行。
对于所有 传输层,你还可以通过发送日志消息通知向客户端提供日志
server.request_context.session.send_log_message(
  level="info",
  data="Server started successfully",
)
需要记录的重要事件
  • 初始化步骤
  • 资源访问
  • 工具执行
  • 错误条件
  • 性能指标

客户端日志

在客户端应用程序中
  1. 启用调试日志
  2. 监控网络流量
  3. 追踪消息交换
  4. 记录错误状态

调试工作流

开发周期

  1. 初期开发
    • 使用 Inspector 进行基础测试
    • 实现核心功能
    • 添加日志埋点
  2. 集成测试
    • 在 Claude Desktop 中测试
    • 监控日志
    • 检查错误处理

测试变更

为了高效测试变更
  • 配置变更:重启 Claude Desktop
  • 服务器代码变更:使用 Command-R 重新加载
  • 快速迭代:开发期间使用 Inspector

最佳实践

日志策略

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

安全考虑

进行调试时
  1. 敏感数据
    • 脱敏日志内容
    • 保护凭据信息
    • 掩盖个人信息
  2. 访问控制
    • 验证权限
    • 检查身份验证
    • 监控访问模式

获取帮助

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

后续步骤