
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 分