MCP上游API监视器v2
使用智能LLM分析监控MCP服务器的上游API更改,并在检测到可操作的更改时发送Slack通知。
特性
- 自动发现:通过扫描自动查找MCP
mcp-*目录 - 基于哈希的变化检测:有效检测网页或RSS提要何时更改
- LLM动力分析:使用Claude Sonnet智能分析变化并确定影响
- 三剂管道:API研究员→ MCP研究员→ 工程师决定
- 智能缓存:MCP依赖性分析已缓存30天
- Slack通知:仅在需要采取行动时发送警报
- GitHub操作:具有手动触发选项的自动月度检查
快速开始
# Install dependencies
npm install
# Discover MCPs in parent directory
npm run discover
# Check sources for changes (hash-based only)
npm run check-sources
# Run full check with LLM analysis
ANTHROPIC_API_KEY="sk-ant-..." npm run check命令
| 命令 | 描述 |
|---|---|
npm run discover | 列出所有MCP及其上游API |
npm run check-sources | 检查源是否有更改(基于哈希,无LLM) |
npm run check | 使用LLM代理运行完整分析 |
npm run notify-test | 发送测试Slack通知 |
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
ANTHROPIC_API_KEY | For check | 用于LLM分析的Claude API密钥 |
SLACK_WEBHOOK_URL | 用于通知 | Slack传入webhook URL |
MCP_SCAN_ROOT | 否 | 目录包含 mcp-* 文件夹(默认:父目录) |
GitHub操作设置
工作流在每月1日自动运行,也可以手动触发。
- 去你的仓库 设置→ 秘密和变量→ 行动
- 添加这些秘密:
- ANTHROPIC_API_KEY -您的Claude API密钥 - SLACK_WEBHOOK_URL -您的Slack webhook URL
- 手动触发: 行动→ MCP上游API监测器→ 运行工作流
运作原理
v2监视器使用3代理LLM管道:
- 基于哈希的变化检测:获取网页和RSS提要,计算哈希值,高效检测更改
- 代理人1-API研究员:分析更改的页面内容以提取与API相关的公告(弃用、中断更改、新功能、维护)
- 代理人2-MCP研究员:通过阅读CLAUDE.md和源代码(结果缓存30天)了解每个MCP所依赖的API
- 代理人3-工程师:根据API变更和MCP依赖性决定需要采取什么行动
- 通知:仅在需要采取行动时发送到Slack(紧急或通知级别)
监控源
监测人员追踪以下瑞典政府API来源:
| 提供者 | 来源 |
|---|---|
| 瑞典水文气象局 | 开放式数据门户、API文档、RSS提要 |
| 交通 | Trafiklab新闻,开发者门户,RSS订阅源 |
| 上海大学 | 主页,资源门户 |
| 自然 保护 局 | Geodata门户、开放数据门户、RSS订阅源 |
配置
源注册表(config/sources.yaml)
sources:
my-api:
name: "My API"
web_pages:
- url: "https://api.example.com/docs"
description: "API documentation"
- url: "https://api.example.com/feed.rss"
description: "RSS feed"状态文件(state/last-check.json)
商店:
- 用于变化检测的内容哈希
- MCP研究员缓存(30天TTL)
- 上次检查时间戳
建筑
├── .github/
│ └── workflows/
│ └── monitor.yml # GitHub Actions workflow
├── config/
│ └── sources.yaml # Web pages and RSS feeds to monitor
├── state/
│ └── last-check.json # Hashes + MCP researcher cache
├── src/
│ ├── agents/
│ │ ├── api-researcher.ts # LLM: Extracts API changes from pages
│ │ ├── mcp-researcher.ts # LLM: Understands MCP dependencies
│ │ └── engineer.ts # LLM: Decides action needed
│ ├── types.ts # Shared type definitions
│ ├── llm-client.ts # Claude API wrapper
│ ├── discovery.ts # Auto-discover MCPs
│ ├── source-checker.ts # Hash-based change detection
│ ├── slack-notifier.ts # Send Slack notifications
│ └── index.ts # CLI entry point
└── README.md成本
将Claude Sonnet用于所有3个代理:
- 估计:每次完整运行约0.15-0.30美元(4个API×3个代理)
- MCP研究人员的结果已缓存,以尽量减少重复调用
- 仅分析实际更改的页面
- 无需支付任何费用
check-sources(仅哈希,无LLM)
操作级别
| 级别 | 描述 | 通知 |
|---|---|---|
| 紧急 | 需要立即采取行动的重大变更和弃用 | 是 |
| 通知 | 值得了解的变化 | 是 |
| 无 | 没有可操作的更改 | 否 |
故障排除
“未设置ANTHROPIC_API_KEY”:
- 这
check命令需要用于LLM分析的API密钥 - 使用
check-sources用于无LLM的基于哈希的检测
Slack通知未发送:
- 验证
SLACK_WEBHOOK_URL设置正确 - 跑
npm run notify-test测试webhook - 仅在需要采取行动时发送通知(不是“无”)
未发现MCP:
- 确保目录名以开头
mcp- - 集
MCP_SCAN_ROOT转到包含MCP的目录 - 检查MCP目录是否有CLAUDE.md文件
未分析的变更:
- 首次运行建立基线(检测到新页面)
- 后续运行会比较哈希值以检测实际变化
GitHub操作失败:
- 验证是否在仓库设置中设置了机密
- 检查一下
ANTHROPIC_API_KEY和SLACK_WEBHOOK_URL有效
