Model Context Protocol (MCP) server for interacting with data.gouv.fr datasets and resources via LLM chatbots
Server has 9 well-named, read-only tools with consistent verb-noun naming (search_*, get_*, list_*, query_*). All tools have descriptions (avg ~120 chars) and input schemas with typed parameters. However, output schemas are not documented in the source code, LLMs cannot see what fields to expect from responses. Parameter descriptions are present but minimal (avg ~50 chars), lacking format constraints, ranges, and dependency hints. No error handling guidance visible. Tools follow single-responsibility principle and chain well (search → get_info → get_spec → query). Missing: output schema documentation, richer parameter descriptions with constraints, error recovery guidance.
Get detailed metadata about a specific dataservice (external third-party API). Returns title, description, organization, base_api_url, machine_documentation_url (OpenAPI/Swagger spec), license, and dates. To use a dataservice: (1) get its info here, (2) fetch the OpenAPI spec via get_dataservice_openapi_spec, (3) call base_api_url per spec.
Fetch and summarize the OpenAPI/Swagger spec for a dataservice (external third-party API). Retrieves the machine_documentation_url from the dataservice metadata, fetches the spec, and returns a summary of available endpoints with their parameters. Use this to understand how to call the API. Typical workflow: search_dataservices → get_dataservice_info → get_dataservice_openapi_spec → call the API using base_api_url per spec.
Get detailed metadata about a specific dataset. Returns title, description, organization, tags, resource count, creation/update dates, and license information.
Get metrics (views, downloads, etc.) for a dataset, resource, organization, or reuse.
Get detailed metadata about a specific resource (file) in a dataset.
Output schemas not documented. LLMs cannot see what fields responses contain, forcing them to guess downstream field names and risking broken tool chains.
Parameter descriptions lack format constraints and ranges. E.g., 'page_size' says 'default: 20, max: 100' but no minimum stated; 'time_granularity' has no enum of valid values (month, day, year?); 'sort_order' mentions 'asc' or 'desc' but not as an enum.
No error handling guidance. Tools lack descriptions of failure modes, recovery steps, or actionable error messages. E.g., what happens if a dataset_id is invalid? Should the LLM retry, search, or ask the user?
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
List all resources (files) in a dataset with their IDs and titles.
Query data from a resource via the Tabular API with pagination and filtering.
Search for dataservices (APIs) on data.gouv.fr.
Search for datasets on data.gouv.fr.
get_metrics parameter 'model' lacks enum constraint. Description says 'e.g. datasets, resources, organizations, reuses' but does not declare these as the only valid values. LLMs may hallucinate invalid model names.
Pagination parameters (page, page_size) present but no documentation of total count or next_cursor in responses. LLMs cannot determine if more results exist or how to fetch them efficiently.