关于 MCP Feed Reader
MCP Feed Reader 是采用 SQLite 缓存的 RSS/Atom 阅读器,适合收集、搜索和整理订阅内容。抓取需单独触发,因此可将刷新安排在阅读之外。
主要功能
- 01添加、列出和移除订阅源
- 02读取和筛选分页条目
- 03全文搜索条目
- 04管理订阅分类
- 05导入和导出 OPML
适用场景
- 01集中管理 RSS/Atom 订阅
- 02按文本搜索已保存条目
- 03在报告生成前安排抓取
- 04通过 OPML 迁移订阅
MCP 相关
向 MCP 客户端提供订阅源、条目、分类、OPML 和统计工具;也可通过其命令行触发抓取。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
17收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | Feed URL(RSS、Atom 或 RDF) |
| category | any | 否 | 类别名称(不存在时会创建) |
详细介绍
mcp-feed-reader-crunchtools
用于读取 RSS/Atom 订阅源的安全 MCP 服务,使用 SQLite 后端。
安装
uvx(推荐)
uvx mcp-feed-reader-crunchtools
pip
pip install mcp-feed-reader-crunchtools
容器
podman run -v feedreader-data:/data quay.io/crunchtools/mcp-feed-reader
配置
| 变量 | 默认值 | 描述 |
|---|---|---|
FEED_READER_DB | ~/.local/share/mcp-feed-reader/feeds.db | SQLite 数据库路径 |
HTTP_PROXY / HTTPS_PROXY / NO_PROXY | (无) | 标准 httpx 代理变量,每次获取订阅源时都会生效。当发布方限制你的出口 IP 速率时很有用——无论 User-Agent 为何,Reddit 都会对数据中心网段返回 429 |
工具(17 个)
订阅源管理
add_feed_tool— 通过 URL 添加 RSS/Atom 订阅源list_feeds_tool— 列出所有订阅源及未读数量get_feed_tool— 获取订阅源详情delete_feed_tool— 移除订阅源refresh_feeds_tool— 抓取订阅源,获取新内容(速度较慢,建议使用 systemd 定时器)
条目管理
list_entries_tool— 列出条目(可筛选、分页)read_entry_tool— 阅读完整条目内容(自动标记为已读)mark_read_tool— 将条目标记为已读mark_unread_tool— 将条目标记为未读search_entries_tool— 全文搜索(FTS5)
分类管理
list_categories_tool— 列出分类及数量create_category_tool— 创建分类rename_category_tool— 重命名分类delete_category_tool— 删除分类
导入/导出
import_opml_tool— 从 OPML 文件导入export_opml_tool— 导出为 OPMLget_stats_tool— 仪表盘统计数据
后台抓取
服务不会自行抓取内容。list_entries_tool 等工具读取的是缓存;如果没有人调用 --fetch,缓存就会过期,所有读取者看到的都会是空订阅源,而且不会有任何错误提示。没有抓取触发机制的部署就是有问题的部署——每日简报就曾因此连续数天报告“没有新闻”,而全部 61 个订阅源都未被抓取。
# Fetch all feeds via CLI
mcp-feed-reader-crunchtools --fetch
systemd 定时器(推荐)
deploy/ 中提供了生产环境使用的两个单元文件。将它们复制到
/etc/systemd/system/,如果容器名称不同,请调整服务中的容器名称,然后:
sudo systemctl daemon-reload
sudo systemctl enable --now mcp-feeds-refresh.timer
该服务会在正在运行的容器内执行 --fetch(podman exec),因此数据库会保留拥有它的进程的 SELinux 类别。不要将数据目录以 :Z 绑定挂载到第二个容器中来执行抓取操作——这会重新标记卷,并导致正在运行的服务无法访问它。
定时器每小时触发一次,并在 05:45 额外触发一次。第二次触发并非多余:使用者会根据发布时间筛选条目,因此在上次抓取之后、06:00 报告之前发布的条目不会出现在该报告中,并且到第二天的时间窗口开始时已经过期——将永久丢失。任何按固定时间表运行的使用者,都需要在运行前不久进行一次抓取。
订阅源会通过条件请求(ETag / If-Modified-Since)获取。遇到速率限制、网关 5xx 或连接中断时,会采用指数退避重试,最多总共尝试三次,然后将该订阅源记录为失败。
许可证
AGPL-3.0-or-later
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。