Skip to main content
Glama
README.md
# 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

B3.2/5.0

Scored across 27 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness5/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues