内容
# ChangeDetection.io MCP 服务器
<p align="center">
<a href="https://buymeacoffee.com/rusty4" target="_blank">
<img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="50">
</a>
</p>
<!-- mcp-name: io.github.rusty4444/changedetection-mcp -->
ChangeDetection.io 的 MCP(模型上下文协议)服务器,为 AI 代理提供原生访问 [ChangeDetection.io](https://github.com/dgtlmoon/changedetection.io) 的能力,ChangeDetection.io 是一款开源的网站变更检测和监控平台。
## 功能
- **监视管理** — 创建、列出、更新、删除和触发监视的重新检查
- **变更历史** — 浏览快照历史并获取任意两个时间点的差异
- **每个监视的操作熔断器** — `get_snapshot_diff` 为该监视配置了一个可调节的后续变异操作限制,以防止一个噪音页面触发无限的重新检查或编辑
- **标签管理** — 使用标签/组组织监视
- **搜索** — 通过 URL 或标题对监视进行全文搜索
- **系统信息** — 快速查看健康状况和统计数据
## 为什么存在
尽管 ChangeDetection.io 是最受欢迎的自托管工具之一(拥有 31k+ GitHub 星标),但当时并没有 MCP 服务器来支持它。这个服务器填补了这一空白,让 AI 代理可以:
- "监视此产品页面,当它发生变化时通知我"
- "显示我所有失败的监视"
- "昨天这个页面发生了什么变化?"
- "为这个职位列表设置一个监视"
## 快速开始
### 前提条件
- 运行中的 ChangeDetection.io 实例(自托管或 SaaS)
- 从设置 → API 获取的 API 密钥
### 安装
```bash
pip install changedetection-mcp
```
### 配置
将以下内容添加到您的 MCP 客户端配置(Claude Desktop、Cursor、Hermes Agent 等):
```json
{
"mcpServers": {
"changedetection": {
"command": "changedetection-mcp",
"env": {
"CHANGEDETECTION_BASE_URL": "http://localhost:5000",
"CHANGEDETECTION_API_KEY": "your-api-key-here"
}
}
}
}
```
### 与 Hermes Agent 一起使用
创建 `~/.hermes/skills/changedetection/SKILL.md`(参见 `skill/` 目录)或配置为 MCP 服务器:
```bash
hermes mcp add changedetection --command "changedetection-mcp"
hermes config set changedetection.base_url "http://localhost:5000"
hermes config set changedetection.api_key "your-api-key"
```
## API 覆盖
| 工具 | 描述 |
|------|-------------|
| `list_watches` | 列出所有监视(可选标签过滤器,限制/偏移) |
| `get_watch` | 获取单个监视的完整详细信息 |
| `create_watch` | 从 URL 创建新的监视 |
| `update_watch` | 更新现有的监视(暂停,重命名,改变计划等) |
| `delete_watch` | 删除监视及其所有历史记录 |
| `recheck_watch` | 触发立即重新检查 |
| `get_watch_history` | 列出监视的变更历史快照 |
| `get_snapshot_diff` | 获取两个快照之间的差异 |
| `search_watches` | 通过 URL 或标题进行全文搜索 |
| `list_tags` | 列出所有标签/组 |
| `create_tag` | 为组织创建标签 |
| `get_system_info` | 获取服务器统计信息(监视数量,运行时间,版本) |
## 安全熔断器:每个监视的操作限制
当代理请求页面差异时,该差异可能会触发后续操作,例如立即重新检查、监视编辑或删除。为了防止一个噪音网站触发连锁反应,`get_snapshot_diff` 在返回之前为每个监视设置了一个熔断器。
默认情况下,每个差异允许 **3 个变异 MCP 操作** 用于该监视。熔断器适用于:
- `recheck_watch`
- `update_watch`
- `delete_watch`
在预算用完后,这些工具将返回一个明确的阻止消息,而不是调用 ChangeDetection.io API。熔断器是进程内且按监视 UUID 进行的;没有设置熔断器的监视不会受到影响。
配置:
```bash
# 默认:3。设置为 0 以全局禁用熔断器。
export CHANGEDETECTION_MCP_ACTION_LIMIT_PER_WATCH=3
```
每次调用时,可以使用 `get_snapshot_diff` 的可选 `action_limit` 参数覆盖默认值:
```text
get_snapshot_diff(uuid="...", from_timestamp="previous", to_timestamp="latest", action_limit=1)
```
使用 `action_limit=0` 禁用该监视的熔断器,或再次调用 `get_snapshot_diff` 并设置更高的值以重新启用。
## 开发
```bash
git clone https://github.com/rusty4444/changedetection-mcp.git
cd changedetection-mcp
uv venv
source .venv/bin/activate
uv pip install -e ".[dev]"
```
## 许可证
MIT — 请参阅 `LICENSE`。