Labsco
MCP SERVER

RSSidian

by pedramamini

Turn an RSS subscription list into a searchable, AI-summarised knowledge base in Obsidian — with semantic search over every article and an MCP service so an assistant can query it.

News, Feeds & Trend Monitoring
Summary
The quality tier is what stops this becoming another unread pile.

Every article gets a tier and a numeric value score, and the minimum tier is a config setting — so the digest is filtered before you ever see it, rather than after. Two things to plan for: summarisation runs through OpenRouter, so ingestion has a real per-run cost (which the tool tracks), and the MCP service is a set of HTTP endpoints, so `--stdio` is the mode to use when a desktop client should spawn it.

What it is

A pipeline between RSS feeds and an Obsidian vault, with an MCP service on top. It imports subscriptions from OPML, fetches new articles, stores them in SQLite with vector embeddings in an Annoy index, sends them through OpenRouter for summaries and a quality assessment, and writes digest notes into your vault. The MCP service exposes that corpus so an assistant can search and read it.

What you get
  • Subscriptions imported and exported as OPML, added individually from the command line, and muted or unmuted so a noisy feed is skipped during ingestion
  • Article content stored in SQLite with embeddings in an Annoy vector index, so search finds meaning rather than exact words
  • Quality assessment per article: an S/A/B/C/D tier and a 1-100 value score, with a configurable minimum tier so low-value content never reaches the digest
  • Digest notes generated into your Obsidian vault, collapsing overlapping stories and organised by quality tier, with feed statistics included
  • Natural-language semantic search with a tunable relevance threshold, results grouped by feed with excerpts
  • An MCP service with endpoints for search, articles, subscriptions, digest and feed statistics — `GET /mcp/search`, `GET /mcp/articles`, `GET /mcp/articles/:id/content`, `GET /mcp/subscriptions`, `GET /mcp/digest`, `GET /mcp/feed-stats`, `POST /mcp/query`
  • A backup system with automatic date stamping and a restore that shows the size and time difference and requires explicit confirmation
  • Cost tracking for every AI API call
Requirements

OpenRouter API access — the key goes in the `[openrouter]` section of `~/.config/rssidian/config.toml` or in `RSSIDIAN_OPENROUTER_API_KEY`. Python 3.9+, an OPML file of your subscriptions, and an Obsidian vault if you want the digest notes; the vault is optional. Install into a virtual environment with `uv pip install -e .` or plain pip, then run `rssidian init` to write the config. `rssidian mcp --stdio` is the mode Claude Desktop spawns directly; `rssidian mcp --port 8080` runs it as a separate HTTP service instead. Ingestion defaults to the last 7 days and `--lookback` widens it. The published project is `rssidian` 1.2.