MCP server for interacting with RSS feeds, managing subscriptions, and retrieving articles with filtering and tagging capabilities
RSS MCP server has critical definition gaps. Tool descriptions are present but lack actionable detail for LLM selection. Parameter descriptions are minimal or absent (e.g., 'status' and 'source' in get_content lack guidance on valid values). Input schemas lack enum constraints, type specificity, and required field declarations. No output schemas documented. Error handling is absent, no guidance on recovery or invalid input handling. Naming is acceptable (verb-noun pattern) but parameter design forces LLMs to guess at constraints.
Get articles by subscribing to RSS, status has only two values: normal, favorite, source is empty to indicate all sources, Sort by article time, with the latest at the front.
All sources of the article, the result is in array form. If you want to use the source parameter of get_content, which values should be used, call it first
Set article tag, status has only two values: normal, favorite, articleId is article id
Parameter descriptions missing or trivial. 'status' in get_content and set_tag lacks guidance; description says 'has only two values: normal, favorite' but does not explain when to use each or what they mean semantically. 'source' description is vague ('Feed source title to filter by, empty string for all sources'), LLM cannot infer whether to pass feed URL, feed ID, or feed name.
No enum constraints in input schemas. 'status' parameter accepts free-form strings instead of enum ['normal', 'favorite']. LLMs will hallucinate invalid values. Schemas show type:'string' but no enum, pattern, or constraint.
Output schemas not documented. No description of what get_content, get_sources, or set_tag return. LLMs cannot plan downstream tool calls or extract required fields (e.g., does get_content return article IDs needed for set_tag?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If set_tag fails (invalid articleId, permission denied), the tool returns no actionable error message. LLM cannot self-correct or retry intelligently.
Missing required field declarations. Input schemas do not specify which parameters are required vs optional. LLM may omit 'articleId' in set_tag or 'limit' in get_content, causing silent failures.