mcpField
M
MCP Feed Reader

MCP Feed Reader

本地服务
github.com/crunchtools生产力03 天前更新

关于 MCP Feed Reader

MCP Feed Reader 是采用 SQLite 缓存的 RSS/Atom 阅读器,适合收集、搜索和整理订阅内容。抓取需单独触发,因此可将刷新安排在阅读之外。

主要功能

  1. 01添加、列出和移除订阅源
  2. 02读取和筛选分页条目
  3. 03全文搜索条目
  4. 04管理订阅分类
  5. 05导入和导出 OPML

适用场景

  1. 01集中管理 RSS/Atom 订阅
  2. 02按文本搜索已保存条目
  3. 03在报告生成前安排抓取
  4. 04通过 OPML 迁移订阅

MCP 相关

向 MCP 客户端提供订阅源、条目、分类、OPML 和统计工具;也可通过其命令行触发抓取。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"crunchtools-feed-reader": {
"command": "uvx",
"args": [
"mcp-feed-reader-crunchtools"
]
}
}
}
启动命令uvx mcp-feed-reader-crunchtools

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-feed-reader-crunchtools0.1.2

工具

17

收录的工具列表 · 更新于 3 周前

参数类型必填说明
urlstring是Feed URL(RSS、Atom 或 RDF)
categoryany否类别名称(不存在时会创建)

详细介绍

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.dbSQLite 数据库路径
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 — 导出为 OPML
  • get_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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。