Technology news RSS/Atom/RDF feed reader with curated tech feeds and Cloudflare-robust fallback proxy support
Tech Feeds MCP has clear, well-structured tool definitions with proper naming (verb_noun pattern) and reasonable descriptions (100-180 chars). All three tools have complete input schemas with typed properties and required fields. However, output schemas are not documented, LLMs cannot predict response structure. Parameter descriptions are present but minimal (10-30 chars), lacking format constraints, ranges, or examples. Error handling is basic (throws generic Error objects). No tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only. The server is functional but lacks production-grade polish in schema documentation and error guidance.
Fetch and normalize any RSS / Atom / RDF feed by URL. CF-robust: fetches directly and falls back to a proxy if the source blocks the gateway. Use list_feeds first for curated sources.
List the curated technology feeds (id, title, category, source). Optionally filter by category (tech) or keyword. Pass an id to read_feed.
Read a curated technology feed by its id (from list_feeds). Returns normalized items (title, link, published, summary). Optionally filter items by keyword.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Responses appear to include {categories, count, feeds} for list_feeds and {items, ...} for read_feed, but this is inferred, not declared.
Parameter descriptions are too brief (10-30 chars). Missing format constraints, ranges, and valid value guidance. E.g., 'limit' says '1-50, default 20' in description but no JSON Schema minItems/maxItems. 'category' accepts only 'tech' but not declared as enum.
No tool annotations despite all tools being read-only. Missing readOnlyHint and idempotentHint in tool definitions. Agents cannot distinguish safe tools from destructive ones without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Error handling returns generic Error objects with minimal context. E.g., 'Unknown feed "xyz"' does not suggest calling list_feeds or provide available feed IDs. No error classification (retryable vs fatal).
fetch_feed accepts arbitrary URLs without validation beyond http/https prefix. No timeout, rate limit, or size limit documented. Agents could trigger expensive external fetches or DoS.