Feedkeeper MCP Server
Provides tools for managing RSS/Atom feeds, including subscribing, unsubscribing, fetching unread items, searching, and marking items as read.
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., "@Feedkeeper MCP ServerCheck my feeds and show me unread items from the last 24 hours."
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.
Feedkeeper
Feedkeeper is a self-hosted RSS/Atom feed manager with a remote-capable MCP server built in. Subscribe to any feed — news sites, blogs, or a Google Alerts RSS feed — and let an MCP client like Claude read, search, and triage new items for you, from anywhere. The web UI is fully translated into English, German, and Japanese, switchable per user at any time.
It's multi-user by design: one instance can serve several people, each with their own subscriptions, read state, and API tokens.
Features
Any RSS/Atom feed — not just Google Alerts, though that's what started this project.
Multi-user — closed by default; an admin creates accounts (or invites people through the web UI).
Remote MCP access — connect Claude Desktop, Claude Code, or any other MCP client over HTTPS from anywhere, authenticated with a personal access token. No SSH tunnel required.
Web UI — subscribe/unsubscribe, browse and search items, mark things read, manage tokens and users.
Trilingual interface — English, German, and Japanese, with a language switcher; each user can pick their own, independent of the others.
Per-feed control — custom label, adjustable check interval (5 minutes to 24 hours), and a "mark all read" button per feed or across everything.
Account self-service — change your own password from Settings.
Self-hosting first — a single Node process, one SQLite file, no external services.
Hardened by default — SSRF-guarded feed fetching, rate limiting, per-user data isolation, closed signup.
Related MCP server: FreshRSS MCP Server
How it fits together
flowchart LR
WebUI(["Web UI"])
MCPClient(["MCP client<br/>(e.g. Claude)"])
subgraph Server["One Node process"]
direction LR
API["Express API<br/>session auth"]
MCPEP["MCP endpoint<br/>token auth"]
DB[("SQLite +<br/>feed poller")]
API --- DB
MCPEP --- DB
end
WebUI <--> API
MCPClient <--> MCPEPOne Node process serves the built web UI, a REST API, and an MCP endpoint (/mcp, using the Streamable HTTP transport) — all backed by the same SQLite database and feed poller.
Quick start (local)
Requires Node.js 20+.
git clone https://github.com/visualfusion/feedkeeper.git
cd feedkeeper
npm install
cp .env.example .env
# edit .env — at minimum, set SESSION_SECRET (see the comment in the file)
npm run dev:server # terminal 1
npm run dev:web # terminal 2Open http://localhost:5173 and follow the onboarding screen to create the first admin account. (Prefer the terminal? npm run setup does the same thing without a browser.)
Deploying
See docs/deployment-uberspace.md for a step-by-step guide to running Feedkeeper on Uberspace. The same steps work on any Linux host with SSH access and Node.js 20+.
For production, build once and run the compiled server:
npm run build
npm run startConnecting an MCP client
Log in to the Feedkeeper web UI and go to Settings → Personal access tokens.
Create a token and copy it immediately — it's only shown once.
Add an MCP server entry pointing at
https://<your-domain>/mcp, sendingAuthorization: Bearer <token>as a header.
Every tool call is scoped to the token's owner — a client can only see and manage that user's own feeds and items.
Available MCP tools
Tool | Description |
| List subscribed feeds with unread counts |
| Subscribe to a feed URL |
| Remove a subscription |
| Fetch unread items, optionally filtered |
| Full-text search across all items |
| Mark an item as read |
Security
Closed signup by default (
ALLOW_SIGNUP=false). An admin creates additional accounts from Settings.SSRF protection: feed URLs are validated (and every redirect hop re-validated) against private/internal IP ranges before being fetched, so this server can't be used to probe its own host or internal network.
Rate limiting on login and the general API surface.
Personal access tokens are stored as salted hashes, never in plaintext.
Per-user data isolation: every query is scoped to the authenticated user; feeds are deduplicated by URL under the hood, but subscriptions, read state, and tokens are always per-user.
Found a security issue? Please open an issue on GitHub or reach out to the maintainer directly rather than filing a public report for anything sensitive.
Configuration
See .env.example for all available environment variables.
Tech stack
Server: Node.js, TypeScript, Express, better-sqlite3,
@modelcontextprotocol/sdkWeb: React, Vite, Tailwind CSS, react-i18next
Contributing
Issues and pull requests are welcome. This is a young project — expect some rough edges.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Reddit MCP — public Reddit data via the Atom/RSS feeds.
RSS, Atom and JSON feeds for agents: find a site's feed, read items as JSON, keyless news search.
Related MCP Servers
- AlicenseBqualityCmaintenanceMCP server for fetching, parsing, and managing RSS feeds. Features Fetch and parse RSS/Atom feeds In-memory caching with TTL Batch fetching of multiple feeds Monitor feeds for new items Search content across multiple feeds Extract and format feed content651 npm12Apache 2.0
- 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.2740 npm2MIT
- FlicenseNot gradedqualityCmaintenanceEnables Claude to fetch, parse, and manage RSS/Atom feeds through the Model Context Protocol. It supports feed registration and retrieval, allowing users to access article summaries and full content from multiple sources via natural language.1-
- FlicenseAqualityDmaintenanceAn MCP server that enables users to interact with their Feedbin RSS account directly through Claude. It provides tools for reading articles, managing read and starred states, and browsing subscribed feeds and tags.151-