MCP Server for FreshRSS - Read, manage, and organize your RSS feeds
Strong schema definitions with Zod validation across all 27 tools. All tools have descriptions (10-100 chars) and input schemas with typed parameters. Naming follows verb_noun convention consistently. However, descriptions are often terse (many under 50 chars), lacking context on WHEN to use tools or dependencies between them. Output schemas are not documented, LLMs cannot predict response structure. Error handling maps to MCP error codes but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification in metadata.
Add labels to articles
Delete a folder/category (feeds will be moved to default)
Delete a label
Edit a feed subscription (rename or move to different category)
Export all subscriptions as OPML
Get a feed favicon as an MCP resource (Fever API)
Get unread counts and statistics
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Responses must include IDs for chaining (e.g., list_articles must return article IDs for mark_as_read).
Terse descriptions (many under 50 chars) lack context on WHEN to use tools or dependencies. E.g., 'List articles from FreshRSS with optional filtering' does not explain when to use list_articles vs list_unread_article_ids, or that streamId overrides other filters.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Metadata marks tools as READ_ONLY, WRITE, or DESTRUCTIVE, but these are not exposed in MCP tool definitions. LLMs cannot infer safety/idempotency.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Get current user information
Import subscriptions from OPML
List articles from FreshRSS with optional filtering
List favicons for subscribed feeds (Fever API)
List all subscribed RSS feeds
List all folders/categories
List all labels/tags
List starred/saved article IDs (Fever API)
List unread article IDs (Fever API)
Mark all articles in a stream as read
Mark one or more articles as read
Mark one or more articles as unread
Quick-add a feed URL; FreshRSS will detect the actual feed.
Remove labels from articles
Rename a folder/category
Rename a label
Star/favorite one or more articles
Subscribe to a new RSS feed
Remove star from one or more articles
Unsubscribe from an RSS feed
Error handling maps to MCP error codes but lacks recovery guidance. mapErrorToMcp() returns generic messages like 'FreshRSS authentication failed' without suggesting next steps (e.g., 'Verify FRESHRSS_URL and API credentials').
Parameter descriptions lack format/constraint details. E.g., 'Filter by feed ID' does not explain format (numeric, UUID, string). 'Stream ID' references greader format but does not document valid patterns or examples.