MCP server for integrating GNews API with FastMCP. Provides tools to search and retrieve news articles from GNews API. Search for articles by keywords or get trending headlines by category.
Two well-structured tools with complete input schemas, clear descriptions, and proper Pydantic models. Tool names follow verb_noun convention (search_news, get_top_headlines). Descriptions are adequate (100-150 chars). All parameters have types and descriptions. Output schemas are documented via NewsArticle, SearchNewsResponse, TopHeadlinesResponse models. Error handling includes API key validation, rate limit detection, and timeout management with actionable messages. Main gaps: no enum constraints for category/language/country (free-form strings invite hallucination), parameter descriptions reference external docs instead of inline constraints, and no pagination guidance in descriptions despite supporting it.
Get trending news articles by category
Search for news articles by keywords
Category and language parameters accept free-form strings instead of enums. 'category' should enumerate: general, world, nation, business, technology, entertainment, sports, science, health. 'language' and 'country' should list valid codes. LLMs will hallucinate invalid values.
Parameter descriptions reference external docs ('See docs for full list') instead of inline constraints. LLMs cannot access external docs and will guess. Inline the valid values or provide a discovery tool.
Pagination is supported (page parameter) but not mentioned in tool descriptions. LLMs may not realize they can paginate and will assume single-page results. Add pagination guidance to descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
API key is injected via environment variable (correct), but no tool description mentions this prerequisite. LLMs should know the server requires GNEWS_API_KEY to be set.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Both tools are read-only and idempotent, annotate them to help clients optimize caching and retry logic.