MCP server for accessing India's Open Government Data (data.gov.in) platform. Provides tools to fetch records and metadata from OGD resources with filtering, pagination, and sorting capabilities.
Two well-defined tools with complete input schemas, clear descriptions, and thoughtful parameter design. resource_data and resource_meta both have detailed descriptions (180+ chars) explaining purpose, prerequisites, and usage patterns. Input schemas are properly typed with required fields marked. Parameters include helpful context (e.g., 'Example resourceId 9ef84268-d588-465a-a308-a864a43d0070'). However, output schemas are not documented, LLMs cannot predict response structure. Error handling is implicit (API quirks documented in comments but not surfaced to callers). Tool names follow verb_noun pattern but lack action clarity: 'resource_data' and 'resource_meta' are domain-specific; 'fetch_resource_data' and 'get_resource_schema' would be clearer. No tool annotations (readOnlyHint, idempotentHint) despite both being read-only operations.
Fetch records from any India Open Government Data (data.gov.in) resource by its resourceId. Supports pagination, per-field filtering, field projection, and sorting. The resourceId is the UUID shown on a dataset's page on data.gov.in (and in its API URL, e.g. api.data.gov.in/resource/<resourceId>). Example resourceId 9ef84268-d588-465a-a308-a864a43d0070 is "Current Daily Price of Various Commodities from Various Markets (Mandi)" with fields like state, district, market, commodity, variety, grade, arrival_date, min_price, max_price, modal_price. Use resource_meta first if you do not know a resource's field ids.
Fetch the schema/metadata for a data.gov.in resource by resourceId: title, publishing org, sector, last-updated time, and the list of fields (each with name, id, type). Use this to discover the filterable/sortable field ids before calling resource_data. The resourceId is the UUID from the dataset's page on data.gov.in.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Callers must infer from API docs or trial-and-error.
Tool names lack action verbs. 'resource_data' and 'resource_meta' are domain-specific nouns; 'fetch_resource_data' or 'get_resource_schema' would clarify intent for LLMs.
No tool annotations. Both tools are read-only and idempotent but lack readOnlyHint/idempotentHint annotations to signal safety to agents.
Error handling relies on API response inspection (status/message fields) rather than structured error responses. Callers must parse JSON to detect 'Meta not found' vs 'no matching rows'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
No pagination guidance in resource_data description. Agents don't know result limits, whether offset/limit are required, or how to detect end-of-results.