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

AI-generated 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.
Before you install
The server writes to a local SQLite database: adding, deleting and refreshing feeds, changing read state, and deleting categories all modify stored data. Without a scheduled crawl the cache goes stale and readers may see empty feeds with no error. Deleting a feed or category removes stored data. Feed fetching contacts third-party publishers, and proxy settings route that traffic through the configured proxy.

Installation

In SourceWeft

  1. Open MCP Feed Reader in the dashboard and add it to a workspace.
  2. 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)

bash
uvx mcp-feed-reader-crunchtools

pip

bash
pip install mcp-feed-reader-crunchtools

Container

bash
podman run -v feedreader-data:/data quay.io/crunchtools/mcp-feed-reader

Configuration

VariableDefaultDescription
FEED_READER_DB~/.local/share/mcp-feed-reader/feeds.dbSQLite database path
HTTP_PROXY / HTTPS_PROXY / NO_PROXY(none)Standard httpx proxy variables, honoured for every feed fetch. Useful when a publisher rate-limits your egress IP — Reddit returns 429 to datacentre ranges regardless of User-Agent

Tools (17)

Feed Management

  • add_feed_tool — Add an RSS/Atom feed by URL
  • list_feeds_tool — List all feeds with unread counts
  • get_feed_tool — Get feed details
  • delete_feed_tool — Remove a feed
  • refresh_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 read
  • mark_unread_tool — Mark entry as unread
  • search_entries_tool — Full-text search (FTS5)

Category Management

  • list_categories_tool — List categories with counts
  • create_category_tool — Create category
  • rename_category_tool — Rename category
  • delete_category_tool — Delete category

Import/Export

  • import_opml_tool — Import from OPML file
  • export_opml_tool — Export as OPML
  • get_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.

bash
# Fetch all feeds via CLImcp-feed-reader-crunchtools --fetch

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:

bash
sudo systemctl daemon-reloadsudo systemctl enable --now mcp-feeds-refresh.timer

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

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  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