
MCP Feed Reader
io.github.crunchtools由 GitHub 账号 crunchtools 发布v0.1.2更新于 Oct 25, 2026
RSS/Atom feed reader MCP server with SQLite backend
概览
本地运行的 RSS/Atom 阅读器 MCP 服务器,以 SQLite 为后端,让助手管理订阅源、阅读和搜索条目并整理分类。
- 可以做什么
- 添加、列出、查看、删除和刷新 RSS/Atom 订阅源,并显示未读数和统计面板。列出、阅读条目,标记已读或未读,并进行全文搜索。创建、重命名和删除分类,并列出各分类数量。以 OPML 文件导入和导出订阅。
- 适用场景
- 适合希望助手处理本地保存的个人 RSS/Atom 订阅时使用,例如筛选未读内容、搜索历史条目或把订阅源整理进分类。也适合由自己掌控抓取时间的自托管或桌面环境。
- 运行要求
- 作为本地进程运行,可通过 uvx 或 pip 安装 Python 包,也可用容器运行。可用 FEED_READER_DB 指定 SQLite 数据库路径;抓取订阅源时会使用 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY。抓取订阅源需要网络访问,并且必须配置抓取触发方式(如命令行抓取参数或 systemd 定时器),因为服务器不会自行抓取。
安装
在 SourceWeft 中
- 打开 控制台中的 MCP Feed Reader,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
mcp-feed-reader-crunchtools
Secure MCP server for RSS/Atom feed reading with SQLite backend.
Installation
uvx (recommended)
pip
Container
Configuration
Tools (17)
Feed Management
add_feed_tool— Add an RSS/Atom feed by URLlist_feeds_tool— List all feeds with unread countsget_feed_tool— Get feed detailsdelete_feed_tool— Remove a feedrefresh_feeds_tool— Crawl feed sources for new content (slow, prefer systemd timer)
Entry Management
list_entries_tool— List entries (filterable, paginated)read_entry_tool— Read full entry content (auto-marks read)mark_read_tool— Mark entries as readmark_unread_tool— Mark entry as unreadsearch_entries_tool— Full-text search (FTS5)
Category Management
list_categories_tool— List categories with countscreate_category_tool— Create categoryrename_category_tool— Rename categorydelete_category_tool— Delete category
Import/Export
import_opml_tool— Import from OPML fileexport_opml_tool— Export as OPMLget_stats_tool— Dashboard stats
Background Fetching
Nothing in the server crawls on its own. list_entries_tool and friends read a
cache; if no one calls --fetch, that cache goes stale and every reader sees an
empty feed with no error anywhere. A deployment without a crawl trigger is a
broken deployment — this bit the daily briefing, which reported "no news" for
days while all 61 feeds sat unfetched.
systemd timer (recommended)
deploy/ ships the two units used in production. Copy them to
/etc/systemd/system/, adjust the container name in the service if yours
differs, then:
The service runs --fetch inside the running container
(podman exec), so the database keeps the SELinux category of the process that
owns it. Do not bind-mount the data directory into a second container with
:Z to run the crawl — that relabels the volume and locks the live server out.
The timer fires hourly, plus once at 05:45. That second entry is not redundant: consumers window entries on publication time, so an entry published between the last crawl and a 06:00 report is missing from that report and already older than the next day's window start — it is lost for good. Any consumer on a fixed schedule wants a crawl shortly before it.
Feeds are fetched conditionally (ETag / If-Modified-Since). A rate limit,
gateway 5xx, or dropped connection is retried with exponential backoff, up to
three attempts in all, before the feed is recorded as failed.
License
AGPL-3.0-or-later
来源:README.md,提交 5c181e6
工具
0版本历史
1- v0.1.2最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分