FreshRSS MCP Server
# FreshRSS MCP Server
Model Context Protocol (MCP) server for interacting with a FreshRSS instance.
## Features
- Articles: list, filter, read/unread, star/unstar, mark‑all‑read
- Feeds: list, subscribe, unsubscribe, rename, move between folders
- Folders & labels: list, create via tagging, rename, delete
- OPML: export/import subscriptions
- Quick‑add: add a site URL and let FreshRSS discover the feed
- Fever helpers: favicons, unread/starred ID lists
## Requirements
- Node.js 18+
- FreshRSS with Google Reader API enabled
- FreshRSS API password (Settings → Profile → API Management)
## Installation
```bash
npm install -g @equaldepth/freshrss-mcp-server
```
## Usage
### Claude Desktop
```json
{
"mcpServers": {
"freshrss": {
"command": "npx",
"args": ["@equaldepth/freshrss-mcp-server"],
"env": {
"FRESHRSS_URL": "https://your-freshrss-instance.com",
"FRESHRSS_USERNAME": "your-username",
"FRESHRSS_API_PASSWORD": "your-api-password"
}
}
}
}
```
### GitHub Copilot
```json
{
"servers": {
"freshrss": {
"command": "npx",
"args": ["@equaldepth/freshrss-mcp-server"],
"env": {
"FRESHRSS_URL": "https://your-freshrss-instance.com",
"FRESHRSS_USERNAME": "your-username",
"FRESHRSS_API_PASSWORD": "your-api-password"
}
},
}
}
```
## Tools
Articles:
- `list_articles`
- `mark_as_read`
- `mark_as_unread`
- `star_articles`
- `unstar_articles`
- `mark_all_as_read`
Feeds:
- `list_feeds`
- `subscribe`
- `unsubscribe`
- `edit_feed`
- `export_opml`
- `import_opml`
- `quickadd_feed`
Folders & labels:
- `list_folders`
- `list_labels`
- `add_labels`
- `remove_labels`
- `rename_folder`
- `rename_label`
- `delete_folder`
- `delete_label`
Stats:
- `get_stats`
- `get_user_info`
Favicons & sync (Fever API):
- `list_favicons`
- `get_feed_favicon`
- `list_unread_article_ids`
- `list_starred_article_ids`
## Examples
```json
{ "name": "list_articles", "arguments": { "filter": "unread", "order": "newest", "count": 10 } }
{ "name": "list_articles", "arguments": { "state": "starred", "count": 5 } }
{ "name": "subscribe", "arguments": { "url": "https://example.com/feed.xml", "title": "Example", "category": "Tech" } }
{ "name": "edit_feed", "arguments": { "feedId": "1", "category": "Tech" } }
{ "name": "export_opml", "arguments": {} }
```
Tool inputs are strictly validated; unknown fields error.
## Development
```bash
npm run dev
npm run lint
npm run typecheck
npm run format
npm run build
```
## License
MIT
TDQS
Scored across 27 tools
Each tool has a clearly distinct purpose targeting specific resources and actions in the FreshRSS domain. For example, list_articles vs. mark_as_read vs. subscribe are unambiguous, and even similar tools like add_labels and remove_labels are clearly differentiated by their opposing actions.
All tools follow a consistent verb_noun naming pattern throughout, such as list_articles, edit_feed, delete_folder, and mark_as_read. There are no deviations in style or convention, making the tool set highly predictable and readable.
With 27 tools, the count is on the high side for an RSS server, bordering on heavy. While it covers many operations, it may feel overwhelming compared to a more streamlined set of 3-15 tools, though it is not extreme like 50+ tools.
The tool set provides comprehensive CRUD and lifecycle coverage for RSS feed management, including subscription handling, article reading/starring, labeling, folder management, and import/export. No obvious gaps exist; agents can perform all core workflows without dead ends.