freshrss-mcp
Provides tools for managing RSS feeds through a FreshRSS instance, including listing feeds, reading articles, marking read/unread, starring, and adding feeds.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@freshrss-mcpshow unread articles from my feeds"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
freshrss-mcp
An MCP server that puts a small, well-typed toolset in front of a FreshRSS instance, so an AI assistant (Claude, etc.) can read and manage your feeds: list subscriptions, browse unread/starred articles, read full content, mark read/unread, star, add feeds, and mark whole streams read.
It talks to FreshRSS over its built-in Google Reader-compatible API
(/api/greader.php), so it works with any standard FreshRSS install — no
plugins or schema changes required.
The server speaks MCP over streamable HTTP on a single port and gates the
endpoint with a static bearer token. /healthz is open for liveness/readiness.
Tools
Tool | Description |
| Authenticated user + instance URL — a quick connectivity/credentials check. |
| Subscribed feeds with category and unread count. |
| Categories/folders with total unread count. |
| Articles (newest first), filterable by |
| Full HTML content of a single article by id. |
| Toggle read state for one or more article ids. |
| Toggle the star/favorite for one or more article ids. |
| Mark an entire stream (all, a feed, or a category) read, optionally only items older than N seconds. |
| Subscribe to a new feed URL, optionally filed under a category. |
Article ids returned by list_articles/get_article are the values you pass
back to the mutating tools.
Related MCP server: FreshRSS MCP Server
Configuration
All configuration is via environment variables (see .env.example):
Variable | Required | Description |
| yes | Base URL of your FreshRSS instance, without |
| yes | FreshRSS username. |
| yes | The per-user API password (see below) — not the web login password. |
| recommended | Bearer token clients must send. If unset, the MCP endpoint is unauthenticated — only acceptable for purely local use. |
| no | Listen port (default |
| no | Per-request timeout to FreshRSS, seconds (default |
Enabling the FreshRSS API
In FreshRSS, go to Settings → Authentication and enable "Allow API access" (the global toggle for the GReader/Fever APIs).
Go to Settings → Profile and set an API password. This is a dedicated password used only by API clients; it is separate from your login password. Put it in
FRESHRSS_API_PASSWORD.
Running locally
cp .env.example .env # then edit .env with your instance details
pip install -r requirements.txt
set -a && . ./.env && set +a
python server.py
# MCP endpoint: http://localhost:8080/mcp
# Health check: http://localhost:8080/healthzOr with Docker:
docker build -t freshrss-mcp .
docker run --rm -p 8080:8080 --env-file .env freshrss-mcpConnecting a client
Add it as a streamable-HTTP MCP server. With the Claude Code CLI:
claude mcp add --transport http freshrss https://your-host/mcp \
--header "Authorization: Bearer $MCP_TOKEN"Any MCP client that supports HTTP transports works the same way: point it at
https://your-host/mcp and send Authorization: Bearer <MCP_TOKEN>.
Security notes
No secrets live in this repo. Credentials are supplied only at runtime via environment variables.
.envis gitignored; only.env.example(placeholders) is committed.Always set
MCP_TOKENfor any networked deployment — without it the endpoint is open to anyone who can reach it.The server stores no data on disk; every call proxies to FreshRSS. The ClientLogin token is held only in memory and refreshed automatically on 401.
Prefer giving the MCP its own FreshRSS user/API password so access can be revoked independently of your main account.
How it works
server.py is a single FastMCP
streamable-HTTP app. A small GReader client handles ClientLogin auth (token
cached in memory, auto-refreshed on 401) and the handful of GReader endpoints
the tools need. A Starlette middleware enforces the bearer token on everything
except /healthz.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Track and browse RSS feeds with ease. Fetch the latest entries from any feed URL and extract full…
Search a curated RSS feed directory and fetch latest articles. EN/JA. Sign in to use favorites.
Your curated sources (RSS, YouTube, podcasts, Google News) as context for any AI agent. 26 tools.
- NewsmindOAuthapp.newsmind
Read, search and track your RSS feeds: semantic search, story clustering, watches, OPML import.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with RSS readers that support the FreshRSS API through natural language. Allows users to manage and query their RSS feeds and articles via LLM conversations.7MIT
- FlicenseNot gradedqualityDmaintenanceEnables interaction with FreshRSS RSS feed readers through the Google Reader compatible API. Supports feed management, article reading/searching, and marking articles as read or starred.-
- AlicenseBqualityDmaintenanceEnables interaction with FreshRSS instances through the Google Reader API. Supports managing articles, feeds, folders, labels, and OPML import/export for RSS feed aggregation through natural language.27212MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with FreshRSS feeds via the Fever API, allowing listing feeds, fetching unread items, marking items as read/unread, and managing feed subscriptions.8169MIT