Security Feeds MCP. Cybersecurity — advisories, breaches and enterprise-security news. CF-robust RSS / Atom / RDF reader over a curated, edge-verified registry; on a Cloudflare egress block it falls back to the rss2json proxy.
Three well-named tools with clear, actionable descriptions (avg 156 chars). All tools have complete input schemas with required fields and type definitions. Naming follows verb_noun pattern (list_, read_, fetch_). However, parameter descriptions lack detail on constraints (e.g., 'limit' has no min/max guidance), output schemas are not documented, and error handling is minimal. No tool annotations (readOnlyHint, idempotentHint) despite all being read-only operations. Missing guidance on when to use fetch_feed vs read_feed.
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 cybersecurity feeds (id, title, category, source). Optionally filter by category (security) or keyword. Pass an id to read_feed.
Read a curated cybersecurity 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 (feed metadata, items array, via field, total_matching count). Forces trial-and-error parsing.
Parameter 'limit' lacks min/max constraints in descriptions. Schema shows 1-50 range in description text only, not in JSON Schema minValue/maxValue. LLMs may pass invalid values.
No tool annotations despite all tools being read-only. Missing readOnlyHint would help agents understand these are safe to retry and have no side effects.
Error handling is minimal. callTool() throws generic Error objects with no recovery guidance. E.g., 'Unknown feed' error does not suggest calling list_feeds first.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Ambiguous tool selection: fetch_feed and read_feed both fetch feeds. Description says 'Use list_feeds first for curated sources' but does not clearly state when to prefer read_feed over fetch_feed.