
MCP Feed Reader
io.github.crunchtoolsPublished by GitHub account crunchtoolsv0.1.2Updated Oct 25, 2026
RSS/Atom feed reader MCP server with SQLite backend
Overview
A local RSS/Atom feed reader MCP server backed by SQLite, letting an assistant manage feeds, read and search entries, and organize categories.
- What you can do
- Add, list, inspect, delete and refresh RSS/Atom feeds, with unread counts per feed and a dashboard stats view. List, read, mark read or unread, and full-text search entries. Create, rename and delete categories, and list them with counts. Import and export subscriptions as OPML files.
- When to use it
- Useful when you want an assistant to work with your own RSS/Atom subscriptions stored locally: triaging unread items, searching past entries, or organizing feeds into categories. It suits self-hosted or desktop setups where you control the crawl schedule.
- Requirements
- Runs as a local process, installed via uvx or pip (Python package) or as a container. A SQLite database path can be set with FEED_READER_DB; HTTP_PROXY, HTTPS_PROXY and NO_PROXY are honored for feed fetching. Network access is needed to fetch feeds, and a crawl trigger such as the CLI fetch flag or a systemd timer is required, since nothing crawls on its own.
Installation
In SourceWeft
- Open MCP Feed Reader in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
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
Source: README.md at commit 5c181e6
Tools
0Version history
1- v0.1.2LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts