MCP server for DatosVivos — AI-powered natural language interface to Colombia's datos.gov.co open data catalog. Provides tools for semantic dataset search, query generation, execution, and narrative explanation.
DatosVivos MCP server has 7 tools with READ_ONLY risk classification. Tool names follow verb_noun convention (search_, analyze_, execute_, get_, classify_, generate_, resolve_) which is positive. However, critical gaps exist: descriptions are present but lack LLM-optimization guidance (e.g., 'analyze_question' description is 180 chars but omits when/why to use it vs search_datasets); parameter descriptions are minimal or missing context about constraints; output schemas are not documented in the source code provided; no error handling guidance visible; no pagination or result-limiting patterns for search_datasets or analyze_question which could return large result sets. The 'analyze_question' tool appears to combine multiple responsibilities (intent classification, dataset retrieval, query generation, execution, explanation) which violates single-responsibility principle. Parameter 'dataset_id' is optional in analyze_question but no guidance on what happens if omitted. No evidence of input validation, rate limiting, or recovery guidance.
End-to-end analysis of a natural language question about Colombian open data. Performs intent classification, dataset retrieval, query generation, execution, and narrative explanation with verification.
Classify the intent of a natural language question about data (search, descriptive, comparative, temporal, or cross-source).
Execute a SoQL (Socrata Query Language) query against a specific dataset and return results.
Generate a natural language narrative explanation of query results, constrained to verified data and avoiding hallucinations.
Retrieve detailed metadata for a dataset including schema, column descriptions, and data profile.
Resolve geographic references (departments, municipalities, regions) from natural language to DIVIPOLA codes and validate geographic attribution.
Semantic search over Colombia's datos.gov.co catalog using natural language queries. Returns ranked list of relevant datasets with metadata.
Output schemas not documented. No visible return type specifications for any tool. LLMs cannot plan downstream calls or extract required fields without knowing response structure.
analyze_question combines multiple responsibilities (intent classification, dataset retrieval, query generation, execution, narrative generation). Violates single-responsibility principle. Should be split into separate tools for composition.
No pagination or result-limiting patterns visible. search_datasets accepts 'k' parameter but no guidance on default, max, or pagination for large result sets. Could exhaust context window.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Parameter descriptions lack constraint details. 'query' in search_datasets has no length limits, language requirements, or format guidance. 'k' has no min/max bounds. LLMs will pass arbitrary values.
No error handling guidance visible. No recovery patterns, retryability classification, or actionable error messages documented. Agents cannot self-correct on failures.