调试 MCP 连接与常见配置错误
MCP 配置时最大的挫败感来自于"明明配置好了,工具就是不出现"。本节提供系统性的排错方法和最常见的 20+ 种错误场景,让你快速定位并修复问题。
调试的第一步:查看 MCP 日志
Claude Desktop 和 Cline 都会把 MCP Server 的启动日志写到本地文件:
macOS(Claude Desktop):
# 实时查看 MCP 日志
tail -f ~/Library/Logs/Claude/mcp*.log
# 查看所有 MCP 相关日志文件
ls ~/Library/Logs/Claude/
Windows(Claude Desktop):
Get-Content "$env:APPDATA\Claude\logs\mcp*.log" -Wait
Cline(VS Code):
打开 VS Code 输出面板(Cmd+Shift+U)→ 下拉选择 "Cline" → 查看 MCP 相关输出。
调试流程图
flowchart TD
A[工具未出现] --> B{检查 JSON 格式}
B -- 语法错误 --> C[用 jsonlint.com 修复]
B -- 格式正确 --> D{查看 MCP 日志}
D -- 启动失败 --> E{错误类型}
D -- 启动成功 --> F{工具列表为空}
E -- command not found --> G[检查 npx/node 安装
或使用完整路径] E -- ENOENT --> H[检查文件路径是否存在] E -- EACCES --> I[检查文件/目录权限] E -- 端口占用 --> J[换一个端口或关闭冲突进程] F -- 是 --> K[重新安装 Server npm 包] F -- 否 --> L[重启 Claude Desktop
并等待 10 秒] style C fill:#E74C3C,color:#fff style G fill:#F39C12,color:#fff style L fill:#27AE60,color:#fff
或使用完整路径] E -- ENOENT --> H[检查文件路径是否存在] E -- EACCES --> I[检查文件/目录权限] E -- 端口占用 --> J[换一个端口或关闭冲突进程] F -- 是 --> K[重新安装 Server npm 包] F -- 否 --> L[重启 Claude Desktop
并等待 10 秒] style C fill:#E74C3C,color:#fff style G fill:#F39C12,color:#fff style L fill:#27AE60,color:#fff
手动测试 MCP Server
在配置到客户端之前,先手动运行 Server 确认它能正常启动:
# 测试 filesystem server 是否能启动
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | \
npx -y @modelcontextprotocol/server-filesystem /tmp
# 预期输出(截取):
# {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"read_file",...}]}}
如果这个命令报错,说明是 Server 本身的问题,和 Claude Desktop 无关。
常见错误汇总
错误类型一:JSON 配置格式问题
// ❌ 错误:尾部逗号
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["..."], // ← 这个逗号不合法
}
}
}
// ✅ 正确
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["..."]
}
}
}
验证 JSON 的快捷命令:
python3 -m json.tool ~/Library/Application\ Support/Claude/claude_desktop_config.json
# 如果没有输出错误,格式正确
错误类型二:命令路径问题
# 错误现象:Error: spawn npx ENOENT
# 原因:Claude Desktop 启动时的 PATH 与终端不同
# 诊断:找到 npx 的完整路径
which npx
# /usr/local/bin/npx
# 修复:在配置中使用完整路径
{
"command": "/usr/local/bin/npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "..."]
}
错误类型三:权限问题
| 错误信息 | 原因 | 修复 |
|---|---|---|
EACCES: permission denied | 文件/目录无读权限 | chmod +r 对应路径 |
Error: path not allowed | 请求路径在配置目录范围外 | 添加该路径到 Server 参数 |
SQLITE_READONLY | 数据库文件只读 | chmod 644 database.db |
错误类型四:环境变量未传递
# 错误:API 密钥未生效
# Error: GITHUB_PERSONAL_ACCESS_TOKEN is not set
# 原因:.bashrc 中的环境变量在 GUI 应用中不一定生效
# 修复方案一:在 config.json 中直接写入(不推荐,有安全风险)
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxx" }
# 修复方案二:使用 launchctl(macOS)确保 GUI 应用读取环境变量
launchctl setenv GITHUB_TOKEN "ghp_xxx"
# 需要重启 Claude Desktop 后生效
错误类型五:npx 缓存问题
# 错误:旧版本 Server 残留缓存
# 症状:更新了 Server 版本但行为没有变化
# 清理 npx 缓存
npx clear-npx-cache
# 或者指定版本号强制刷新
"args": ["-y", "@modelcontextprotocol/server-filesystem@latest", "..."]
错误类型六:Server 启动超时
如果 Server 需要较长时间初始化(如下载浏览器),Claude Desktop 可能认为启动失败:
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"],
"timeout": 30000
}
}
}
MCP Inspector:官方调试工具
Anthropic 提供了一个可视化调试工具,可以在浏览器中测试 MCP Server:
# 安装并启动 Inspector
npx @modelcontextprotocol/inspector \
npx -y @modelcontextprotocol/server-filesystem /tmp
# 打开 http://localhost:5173
# 可以在 UI 中看到工具列表、手动调用工具、查看响应
这是排查"工具定义是否正确"的最直观方式。
本节执行清单
- [ ] 知道如何查看 Claude Desktop 的 MCP 日志
- [ ] 能用
python3 -m json.tool验证 JSON 格式 - [ ] 遇到
ENOENT错误时,知道用完整路径替代npx - [ ] 使用 MCP Inspector 手动测试自己的 MCP Server
- [ ] 环境变量问题时,知道 macOS 需要用
launchctl setenv