Error: Cannot start MCP server
原因分析:
- 端口被占用
- 依赖缺失
- 配置文件错误
解决方案:
# 1. 检查端口占用
lsof -i :3000 # 或您配置的端口
# 2. 重新安装依赖
pnpm install
# 3. 检查配置
cat src/config/defaultConfig.tsError: Cannot find module '@types/node'
解决方案:
# 安装缺失的类型定义
pnpm add -D @types/node @types/jest
# 重新构建
pnpm build❌ 执行失败: 无效的微信文章URL
原因分析:
- URL格式不正确
- 非微信公众号文章链接
- URL中包含特殊字符
解决方案:
// 正确的URL格式
const validUrls = [
'https://mp.weixin.qq.com/s/AbCdEfGhIjKlMnOpQrStUv',
'https://mp.weixin.qq.com/s?__biz=xxx&mid=xxx&idx=1'
];
// 避免的URL格式
const invalidUrls = [
'http://mp.weixin.qq.com/s/xxx', // 使用https
'https://weixin.qq.com/xxx', // 缺少mp子域名
'https://mp.weixin.qq.com/' // 不是文章链接
];❌ 执行失败: 页面加载超时
原因分析:
- 网络连接不稳定
- 目标服务器响应慢
- 反爬虫机制限制
解决方案:
// 1. 使用保守策略
{
"strategy": "conservative",
"delay_seconds": 5
}
// 2. 减少并发数
{
"concurrent_limit": 1,
"delay_seconds": 10
}
// 3. 手动配置超时
{
"custom_timeouts": {
"page_load": 60000,
"network": 45000
}
}❌ 执行失败: 无法提取文章内容
原因分析:
- 页面结构发生变化
- JavaScript渲染问题
- 内容被加密或保护
解决方案:
# 1. 更新选择器配置
# 编辑 src/config/wechatSelectors.ts
# 2. 启用调试模式
export MCP_DEBUG=true
pnpm start
# 3. 检查页面截图
# 截图会保存在 test-output/screenshots/❌ 执行失败: Permission denied
解决方案:
# 1. 检查目录权限
ls -la ./output
# 2. 修改权限
chmod 755 ./output
# 3. 或使用不同的输出目录
{
"output_dir": "~/Downloads/articles"
}❌ 执行失败: No space left on device
解决方案:
# 1. 检查磁盘空间
df -h
# 2. 清理输出目录
rm -rf ./output/old_articles
# 3. 配置自动清理
{
"auto_cleanup": true,
"max_files": 1000
}System memory usage: 95%
原因分析:
- 并发数过高
- 图片文件过大
- 内存泄漏
解决方案:
// 1. 降低并发数
{
"concurrent_limit": 1,
"batch_size": 5
}
// 2. 禁用图片下载
{
"save_images": false
}
// 3. 启用内存监控
export MCP_MEMORY_MONITOR=trueAverage crawl time: 45 seconds per article
解决方案:
// 1. 使用快速策略
{
"strategy": "fast",
"delay_seconds": 1
}
// 2. 增加并发数(谨慎)
{
"concurrent_limit": 3
}
// 3. 优化输出格式
{
"output_format": "markdown", // 比JSON更快
"save_images": false // 跳过图片下载
}Client error: Tool not found
解决方案:
# 1. 检查工具注册
pnpm test -- --testNamePattern="工具定义"
# 2. 重启MCP服务器
pnpm start
# 3. 验证工具列表
# 使用MCP客户端调用 list_toolsClient error: Invalid response format
解决方案:
// 检查MCPOutputAdapter配置
const adapter = new MCPOutputAdapter();
const result = adapter.validateMCPFormat(response);
if (!result) {
console.error('响应格式验证失败');
}❌ 执行失败: Connection refused
解决方案:
# 1. 检查网络连接
ping mp.weixin.qq.com
# 2. 配置代理(如需要)
export HTTP_PROXY=http://proxy.company.com:8080
export HTTPS_PROXY=http://proxy.company.com:8080
# 3. 配置用户代理
{
"user_agent": "Mozilla/5.0 (compatible; CrawlBot/1.0)"
}❌ 执行失败: IP blocked or rate limited
解决方案:
// 1. 增加延迟
{
"delay_seconds": 30,
"random_delay": true
}
// 2. 使用代理轮换(高级功能)
{
"proxy_rotation": true,
"proxy_list": ["proxy1:8080", "proxy2:8080"]
}
// 3. 暂停抓取
// 等待几小时后重试# 设置日志级别
export LOG_LEVEL=debug
# 启用MCP调试
export MCP_DEBUG=true
# 启用性能监控
export PERF_MONITOR=true// 使用状态查询工具
const status = await mcpClient.callTool('crawl_get_status', {});
console.log(status.content[0].text);# 运行诊断脚本
pnpm run diagnose
# 输出系统信息
pnpm run system-info{
"strategy": "conservative",
"concurrent_limit": 1,
"delay_seconds": 10,
"retries": 3,
"timeout_multiplier": 2.0
}{
"strategy": "fast",
"concurrent_limit": 5,
"delay_seconds": 1,
"save_images": false,
"output_format": "markdown"
}{
"strategy": "basic",
"concurrent_limit": 3,
"delay_seconds": 2,
"save_images": true,
"output_format": "markdown"
}# 服务器日志
tail -f logs/crawl-mcp.log
# 错误日志
tail -f logs/error.log
# 性能日志
tail -f logs/performance.log如果问题仍未解决,请:
- 收集错误信息和日志
- 记录重现步骤
- 提供系统环境信息
- 在项目仓库提交 Issue
# 完全重置
rm -rf node_modules
rm -rf dist
rm -rf output
pnpm install
pnpm build
pnpm start提示:大多数问题都可以通过调整抓取策略和降低并发数来解决。如果遇到持续问题,建议先使用保守配置进行测试。