MCP server for Medellín news, events, and city data
Server has 6 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools are READ_ONLY and lack error handling guidance. Descriptions are present but generic (avg ~80 chars, below 194-char baseline). Parameter descriptions exist but lack actionable constraints. No output schemas documented. Tool naming is verb-forward (fetch_, get_, list_) which is good, but parameter naming inconsistencies (e.g., 'feed' vs 'source_id') and missing enum constraints on several tools reduce clarity. No tool annotations (readOnlyHint, idempotentHint) despite all being read-only. Error responses not visible in code, likely return raw API errors without recovery guidance.
Get current air quality readings from SIATA monitoring stations in Medellín
Fetch recent news articles from Medellín media sources
Fetch recent messages from a public Medellín Telegram channel
Fetch news headlines from ALL Medellín RSS feeds in parallel
Fetch news headlines from a single Medellín RSS feed
List all available news and data sources for Medellín
No output schemas documented for any tool. LLMs cannot predict response structure, forcing them to guess at field names and types for downstream chaining.
No error handling guidance in tool descriptions. Responses likely return raw API errors (e.g., 'SIATA returned 500') without actionable recovery steps for LLMs.
Tool descriptions are generic and lack context for LLM selection. E.g., 'Fetch recent news articles' does not explain when to use fetch_news vs get_news vs get_all_news, or what distinguishes them.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Parameter descriptions lack actionable constraints. E.g., 'Number of articles to return per source (max 20)' states the limit but does not explain why or what happens if exceeded. No enum constraints on 'feed' parameter values.
No tool annotations despite all tools being read-only. Missing readOnlyHint and idempotentHint annotations prevent LLMs from optimizing retry logic and caching strategies.