MCP server for Google News RSS feeds - search, topics, headlines, and URL resolution
This MCP server provides 3 news-fetching tools with clear naming and decent descriptions. Tool names follow verb_noun pattern (search_google_news, get_topic_news, get_top_headlines), which is strong. Descriptions are present and substantive (120-180 chars), meeting baseline minimums. However, several parameter descriptions lack actionable detail, and critical output schemas are completely undocumented. The server accepts user-friendly inputs (topic names, query strings) and defaults are sensible. Error handling is basic, no guidance on recovery steps or retryable vs. fatal conditions. The tools are well-composed for a news API wrapper, but parameter constraints (like 'max 100' for limit) are mentioned in descriptions rather than validated via JSON Schema enums/patterns. Overall, this is a solidly-built tool with good naming and descriptions, but missing the rigor expected of A-grade tools (documented output schemas, comprehensive parameter validation, recovery guidance).
Get top headlines from Google News. Returns headlines and URLs - fetch the article URLs to read full content.
Get news articles for a predefined topic (not a search query). Available topics: BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH, WORLD, US. Returns headlines and URLs - fetch the article URLs to read full content.
Search Google News with filters and operators. Query supports: OR, exact phrases (""), exclusion (-). All filters are separate parameters for LLM-friendly programmatic access. Returns headlines and URLs - fetch the article URLs to read full content.
Output schema not documented. All three tools return article lists but do not specify the structure of the returned objects (e.g., fields like 'title', 'source', 'url', 'publishedAt'). LLMs cannot plan downstream operations or extract the right fields without a declared output schema. This violates the 'Document the output schema' critical check.
Parameter constraints are mentioned in descriptions but not enforced in JSON Schema. For example, 'limit' has 'default: 20' but no 'maximum: 100' constraint in the schema itself. Similarly, 'when' has format examples ('1h', '12h', '7d', '48m') but no regex pattern to enforce the [number][h|d|m] format. LLMs cannot read text descriptions reliably, constraints must be declared in the schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 47 | - | v1 |
No error handling guidance. The code has a try-catch block but returns generic errors without recovery hints. For example, if a Google News request fails or a URL resolution times out, the LLM receives only the raw error message with no guidance on whether to retry, ask the user, or try an alternative approach.
Parameter 'topicName' in get_topic_news lacks enum constraint. The description says 'Options: BUSINESS, TECHNOLOGY, ENTERTAINMENT, ...' but the JSON Schema does not declare an enum, leaving room for hallucinated topic names like 'FINANCE' or 'POLITICS'. A strict enum would be self-documenting and prevent invalid calls.
Missing pagination support. The 'limit' parameter caps results (default 20, max 100), but there is no offset, cursor, or page parameter to retrieve results beyond the first batch. Large result sets might be truncated silently, and agents have no way to fetch the next page.
Parameter 'when' (in search_google_news) lacks a regex pattern. The description is clear ('Format: [number][h|d|m]. Examples: "1h", "12h", "1d", "7d", "48m". Max: 101h, 48m'), but the schema does not enforce it. An LLM might pass '50 hours' or '1.5d', requiring runtime validation and error reporting.