rss-feeds-mcp
# RSS Feeds MCP Server
An MCP server for digital marketers to fetch, search, and filter RSS blog feeds.
Works with Claude Desktop and any MCP-compatible client.
## Quick setup with Claude Code (copy this prompt)
Open [Claude Code](https://docs.anthropic.com/en/docs/claude-code) in your
terminal and paste the prompt below. It clones this repo, builds it, and wires
it into Claude Desktop for you.
```text
Set up this RSS MCP server for my Claude Desktop.
Repo: https://github.com/lionkiii/rss-feeds-mcp
Do all of the following:
1. Clone the repo into a sensible folder (e.g. ~/mcp-servers/rss-feeds-mcp) if it isn't already cloned, then cd into it.
2. Run `npm install` and `npm run build`. Confirm `dist/index.js` exists.
3. Find the absolute path to my node binary (`which node`; if it is under nvm use that full path, because Claude Desktop does not load my shell PATH).
4. Locate my Claude Desktop config:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows: %APPDATA%\Claude\claude_desktop_config.json
Create the file with `{}` if it does not exist. Back it up first.
5. IMPORTANT: fully quit Claude Desktop before editing the config, because a running Claude Desktop rewrites the file on write and will discard my changes. On macOS quit it with `osascript -e 'tell application "Claude" to quit'`.
6. Merge (do not overwrite) an "mcpServers" entry named "rss-feeds" whose "command" is my absolute node path and whose "args" is the absolute path to dist/index.js. Keep the JSON valid and preserve any existing config keys and other mcpServers.
7. Relaunch Claude Desktop and verify the config still contains the rss-feeds entry after launch, and that a node process running dist/index.js was spawned.
8. Tell me to try: "fetch the latest marketing blogs".
```
## Tools
- `list_categories` - list feed categories
- `list_feeds` - list configured feeds
- `add_feed` - add a feed (name, url, category)
- `remove_feed` - remove a feed by name
- `fetch_blogs` - latest posts across all feeds (range, limit)
- `fetch_by_category` - posts filtered by category
- `fetch_from_source` - posts from one source
- `search_blogs` - keyword search across all feeds
Date ranges: `1d`, `7d`, `1w`, `30d`, `1m`, `this_week`, `this_month`.
## Setup
```bash
npm install
npm run build
```
## Connect to Claude Desktop
Config file (macOS):
`~/Library/Application Support/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"rss-feeds": {
"command": "node",
"args": ["/absolute/path/to/RSS/dist/index.js"]
}
}
}
```
Notes:
- Use an absolute path to `dist/index.js`.
- If `node` is installed via nvm, use the absolute node path (e.g.
`~/.nvm/versions/node/<version>/bin/node`) because Claude Desktop does not
load your shell PATH.
- Run `npm run build` after editing `src/index.ts`, then restart Claude Desktop.
## Managing feeds
Feeds live in `feeds.json`. Edit directly or use the `add_feed` / `remove_feed`
tools. All feed requests use a browser User-Agent and a 20s hard timeout so a
slow or dead feed can never hang the whole request.
TDQS
Scored across 8 tools
Each fetch operation has a clearly distinct filtering mechanism—date range for fetch_blogs, category for fetch_by_category, specific source for fetch_from_source, and keyword for search_blogs. Feed management tools (add, list, remove) target different lifecycle stages without overlap.
Most tools follow a clear verb_noun pattern (add_feed, list_feeds, search_blogs). The fetch operations slightly deviate with prepositions (fetch_by_category, fetch_from_source) but remain consistent with each other and readable.
Eight tools provides excellent coverage for RSS management without bloat. The set includes feed CRUD operations (minus update), multiple retrieval strategies, and category management—appropriate scope for an RSS server.
Covers core RSS workflows well: adding/removing feeds, listing metadata, and retrieving content via multiple filters. Minor gap in missing update_feed operation (for changing categories or URLs), though agents can work around this via remove/add sequence.