FreshRSS MCP Server
# FreshRSS MCP Server
A Model Context Protocol server for interacting with FreshRSS feeds via the Fever API.
This TypeScript-based MCP server allows AI assistants to interact with your FreshRSS instance, enabling them to:
- List and browse your RSS feeds
- Fetch unread items
- Mark items as read/unread
- Get items from specific feeds
## Features
### Tools
- `list_feeds` - List all feed subscriptions
- `get_feed_groups` - Get feed groups
- `get_unread` - Get unread items
- `get_feed_items` - Get items from a specific feed
- `mark_item_read` - Mark an item as read
- `mark_item_unread` - Mark an item as unread
- `mark_feed_read` - Mark all items in a feed as read
- `get_items` - Get specific items by their IDs
## Requirements
- A running FreshRSS instance with API access enabled
- API endpoint URL, username, and password for your FreshRSS instance
## Development
Install dependencies:
```bash
npm install
```
Build the server:
```bash
npm run build
```
For development with auto-rebuild:
```bash
npm run watch
```
### Environment Variables
You need to set the following environment variables:
- `FRESHRSS_API_URL`: URL to your FreshRSS instance (e.g., "https://rss.example.com")
- `FRESHRSS_USERNAME`: Your FreshRSS username
- `FRESHRSS_PASSWORD`: Your FreshRSS password
## Installation
To use with Claude Desktop, add the server config:
On MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
On Windows: `%APPDATA%/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"freshrss": {
"command": "node",
"args": ["/path/to/freshrss-server/build/index.js"],
"env": {
"FRESHRSS_API_URL": "https://your-freshrss-instance.com",
"FRESHRSS_USERNAME": "your-username",
"FRESHRSS_PASSWORD": "your-password"
}
}
}
}
```
For Cline MCP integration, add to your MCP settings:
```json
{
"mcpServers": {
"freshrss": {
"command": "node",
"args": ["/path/to/freshrss-server/build/index.js"],
"env": {
"FRESHRSS_API_URL": "https://your-freshrss-instance.com",
"FRESHRSS_USERNAME": "your-username",
"FRESHRSS_PASSWORD": "your-password"
}
}
}
}
```
### Debugging
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), which is available as a package script:
```bash
npm run inspector
```
The Inspector will provide a URL to access debugging tools in your browser.
## Security Note
This server requires your FreshRSS credentials. For security:
- Never commit your credentials to version control
- Always use environment variables for sensitive information
- Consider using a dedicated FreshRSS account with appropriate permissions
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Contributing
Contributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
TDQS
Scored across 8 tools
Each tool has a clear, distinct purpose: listing feeds, retrieving items by different criteria, and toggling read state. The three retrieval tools (get_unread, get_feed_items, get_items) are differentiated by their filters, and the mark operations are unambiguous.
Most tools follow a get_<resource> or mark_<resource>_<state> pattern, but list_feeds uses 'list' instead of 'get', and get_unread omits the noun 'items'. These minor deviations are still readable and predictable.
Eight tools is well-scoped for an RSS reader, covering the core read and mark operations without excessive granularity. Each tool earns its place in the set.
The read and mark workflows are well covered, but the server lacks feed management operations (add, update, delete feeds) and has no search capability. These gaps limit the toolset to a read-only consumer rather than a full FreshRSS manager.