MCP server for managing and crawling RSS feeds with support for fetching articles, managing keywords, and web crawling via Firecrawl
RssFeedMCP has 11 tools with explicit registration and schemas. Naming follows verb-noun convention (fetch, get, list, add, remove, search) which is good. However, descriptions are uniformly generic and lack actionable context. All tools have input schemas with basic type definitions, but several lack sufficient detail. Parameter descriptions are minimal. Output schemas are not documented. Error handling is present but generic ('Error fetching RSS feeds: {error.message}'). No output structure is defined for agents to understand what fields to expect. The STDIO transport is a hard constraint limiting remoteability. Overall, this is a competent but underdeveloped implementation that would benefit from richer descriptions, documented output schemas, and clearer error guidance.
Add a new interest keyword to the database
Add a new RSS feed to the database
Fetch articles from configured RSS feeds
Fetch articles from configured RSS feeds by category
Get articles matching user interest keywords
Get the latest articles from configured RSS feeds
Get a list of all user interest keywords
Descriptions are generic and lack context for tool selection. E.g., 'Fetch articles from configured RSS feeds' does not explain WHEN to use fetchRssFeeds vs getLatestRssFeeds vs fetchRssFeedsByCategory. LLMs cannot disambiguate.
Output schemas are not documented. Tools return JSON with 'content' and 'isError' fields, but the structure of the actual article/feed data is unknown to the agent. Agents cannot reason about downstream tool chaining or field extraction.
No pagination support. Tools accept a 'limit' parameter but no offset, cursor, or next_token field is returned. If results exceed the limit, agents cannot retrieve additional data without re-running the query.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 45 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 38 | - | v1 |
Get a list of all configured RSS feeds
Remove an interest keyword from the database
Remove an RSS feed from the database
Search for articles in configured RSS feeds
Error messages are not actionable. E.g., 'Error fetching RSS feeds: {error.message}' gives no guidance on recovery (retry? call a discovery tool? ask the user?). Agents cannot determine the error category.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Risk labels are provided in metadata but not exposed to the protocol. This means agents cannot infer which tools are safe to retry.
Destructive operations (removeRssFeed, removeKeyword) do not support dry-run or confirmation patterns. An agent can permanently delete a feed or keyword without explicit user consent.
Parameter descriptions lack detail. E.g., 'category' in fetchRssFeedsByCategory has description 'Category name to filter feeds by' but does not explain what valid categories exist, how to discover them, or what happens if an invalid category is passed.