An MCP server to access RSS feeds of Google News and Google Trends
Server provides 5 tools with consistent verb-based naming (all start with 'get_'). Tool descriptions are present but generic (average 95 chars, well below the 194-char baseline for A+ tools). Input schemas are complete with proper JSON Schema types, constraints (min/max), and descriptions. However, descriptions lack LLM-optimization depth, they do not explain WHEN to use each tool vs similar ones, WHAT happens on calls, or recovery guidance on failure. Parameter descriptions are adequate (average 68 chars) but lack format hints and dependency guidance. Output schemas are partially documented via Pydantic models (ArticleOut, TrendingTermOut) visible in code, but not clearly linked in tool definitions. Error handling exists via ErrorHandlingMiddleware but no tool-level recovery guidance is provided. The 'topic' parameter in get_news_by_topic lists 60+ hardcoded examples in the description instead of declaring an enum constraint, this invites hallucinated topic values and wastes tokens. The 'summarize' parameter defaults to true and attempts LLM Sampling (deprecated pattern), falling back to NLP; this creates undocumented behavior divergence. Overall, tools are functional and usable but lack the depth and precision expected of production-grade agent tools.
Find articles by keyword using Google News.
Find articles by location using Google News.
Find articles by topic using Google News. topic is one of WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH, POLITICS, CELEBRITIES, TV, MUSIC, MOVIES, THEATER, SOCCER, CYCLING, MOTOR SPORTS, TENNIS, COMBAT SPORTS, BASKETBALL, BASEBALL, FOOTBALL, SPORTS BETTING, WATER SPORTS, HOCKEY, GOLF, CRICKET, RUGBY, ECONOMY, PERSONAL FINANCE, FINANCE, DIGITAL CURRENCIES, MOBILE, ENERGY, GAMING, INTERNET SECURITY, GADGETS, VIRTUAL REALITY, ROBOTICS, NUTRITION, PUBLIC HEALTH, MENTAL HEALTH, MEDICINE, SPACE, WILDLIFE, ENVIRONMENT, NEUROSCIENCE, PHYSICS, GEOLOGY, PALEONTOLOGY, SOCIAL SCIENCES, EDUCATION, JOBS, ONLINE EDUCATION, HIGHER EDUCATION, VEHICLES, ARTS-DESIGN, BEAUTY, FOOD, TRAVEL, SHOPPING, HOME, OUTDOORS, FASHION.
Get top news stories from Google News.
Get Google Trends data for a specific country.
Topic parameter uses inline examples (60+ hardcoded values) instead of enum constraint. This violates the constrained-input pattern, forces LLMs to hallucinate values, and wastes tokens.
Tool descriptions lack LLM-optimization guidance. None explain WHEN to use tool vs similar ones (e.g., when to call get_news_by_keyword vs get_news_by_topic vs get_top_news). Descriptions average 95 chars vs 194-char baseline, missing critical context for selection.
Summarize parameter defaults to true and uses LLM Sampling (deprecated pattern since 2025-03-26). Code shows fallback to NLP when Sampling unavailable, but this behavior divergence is undocumented. LLMs cannot predict which summarization method will be used.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Output schemas (ArticleOut, TrendingTermOut) are defined in code but not explicitly documented in tool response descriptions. LLMs cannot see Pydantic model definitions and must infer output structure from tool descriptions alone.
No pagination support documented. max_results capped at 25, but tools do not return total_count, next_cursor, or offset parameters. Large result sets risk context window exhaustion with no guidance on iterating results.
Error handling middleware exists but no tool-level recovery guidance. If an article fetch fails, LLMs are not told what to do next (retry? try different search? report to user?).