MCP server for collecting and deduplicating content from RSS feeds and GitHub releases into AI-generated digests
Server has 6 tools with basic descriptions and some schema coverage, but significant gaps limit production readiness. All tools have descriptions (good), but 4 of 6 lack input schemas entirely. Parameter descriptions are minimal or absent. Output schemas are undocumented. Error handling is present but not recovery-focused. Naming is clear and verb-based (fetch_*, validate_*, check_*), following conventions. However, missing schemas for half the tools and lack of output documentation prevent higher scores.
Compare collected items against previous digests and classify as exact_duplicate, likely_duplicate, or unique
Fetch items from ALL RSS feeds configured in sources.yml in parallel
Fetch latest releases for all repos configured in sources.yml
Read previous digest markdown files and extract URLs + titles for deduplication
Fetch items from an RSS feed configured in sources.yml by name
Validate sources.yml structure and check that all source URLs are reachable
4 of 6 tools lack input schemas entirely (fetch_all_rss, fetch_github_releases, validate_sources, fetch_previous_urls). LLMs cannot infer parameter requirements without schemas.
Output schemas are completely undocumented. All tools return JSON via jsonResponse() helper, but the structure of returned fields (items, warnings, reachability, summary, etc.) is never declared. LLMs cannot plan downstream calls or extract data reliably.
Parameter descriptions are minimal or absent. fetch_rss has only 'Source name from sources.yml rss section' for the 'name' param. No guidance on format, constraints, or what happens if the name doesn't exist. check_duplicates param description is generic.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
Error handling lacks recovery guidance. When fetch_rss source is not found, it returns a warning in JSON but does not suggest calling validate_sources or listing available sources. Errors should guide the LLM to the next step.
Tool composition risk: fetch_rss, fetch_all_rss, and fetch_github_releases all fetch content but return different structures. No pagination or result limits documented. Large RSS feeds could blow context windows. No guidance on when to use fetch_rss vs fetch_all_rss.