mcp-gouv-fr
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_GOUV_APIS | No | Comma-separated list of API ids to load (datagouv, geo, insee, radiofrance). Default: all. | |
| MCP_GOUV_HOST | No | Host for streamable HTTP transport (default: 127.0.0.1). | |
| MCP_GOUV_PORT | No | Port for streamable HTTP transport (default: 8765). | |
| MCP_GOUV_HTTP_PATH | No | Path for streamable HTTP transport (default: /mcp). | |
| MCP_GOUV_LOG_LEVEL | No | Logging level (DEBUG, INFO, WARNING, ...). Default: INFO. | |
| MCP_GOUV_TRANSPORT | No | Transport type: stdio or streamable-http (default: stdio). | |
| MCP_GOUV_USER_AGENT | No | User-Agent header for HTTP requests. | |
| MCP_GOUV_GEO_API_BASE | No | Base URL for geo.api.gouv.fr (default: https://geo.api.gouv.fr). | |
| MCP_GOUV_HTTP_TIMEOUT | No | Outbound HTTP timeout in seconds (default: 30). | |
| MCP_GOUV_INSEE_API_KEY | No | Required for INSEE Sirene tools (insee_*). Subscribe at https://portail-api.insee.fr/ and set this as the consumer key. | |
| MCP_GOUV_DATAGOUV_API_BASE | No | Base URL for data.gouv.fr API (default: https://www.data.gouv.fr/api/1). | |
| MCP_GOUV_INSEE_SIRENE_API_BASE | No | Base URL for INSEE Sirene API (default: https://api.insee.fr/api-sirene/3.11). | |
| MCP_GOUV_RADIOFRANCE_API_TOKEN | No | Required for radiofrance_graphql tool. Get your API token at https://developers.radiofrance.fr/ | |
| MCP_GOUV_RADIOFRANCE_GRAPHQL_URL | No | GraphQL endpoint for Radio France (default: https://openapi.radiofrance.fr/v1/graphql). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| datagouv_search_datasetsA | Search datasets (title, description, organization). Args: query: Free-text search query. page: Page number (1-based). page_size: Page size (keep reasonably small, e.g. ≤ 100). |
| datagouv_get_datasetA | Return dataset metadata and resources for one dataset. Args: dataset_id: Dataset id or slug. |
| geo_search_communesA | Search communes by name, postal code, and/or parent department. At least one of Args:
nom: Substring or fuzzy name (e.g. |
| geo_get_communeA | Return one commune by INSEE municipality code. Args:
code: INSEE |
| geo_search_departementsA | List all departments or fuzzy-search them by name. Args:
nom: When set, filters departments by name; when omitted, returns the full list
(subject to |
| geo_get_departementA | Return one department by code, including its region when available. Args:
code: Official department code (e.g. |
| geo_search_regionsA | List all regions or fuzzy-search them by name. Args: nom: When set, filters regions by name; when omitted, returns every region. limit: Cap on returned rows (France has fewer than 20 regions). |
| geo_get_regionA | Return one region by code. Args:
code: Official region code (e.g. |
| insee_get_unite_legaleA | Return the legal unit (unité légale) for one 9-digit SIREN. Use this to resolve a company identifier to its official INSEE record (status, denomination, activity codes, etc.). Requires a valid portal API key. Args: siren: Nine-digit SIREN (spaces optional). |
| insee_get_etablissementA | Return the establishment (établissement) for one 14-digit SIRET. Use this for a specific branch or address (SIRET includes the SIREN plus a NIC). Requires a valid portal API key. Args: siret: Fourteen-digit SIRET (spaces optional). |
| radiofrance_graphqlA | Execute a GraphQL query or mutation against the Radio France Open API. The upstream API is documented at https://developers.radiofrance.fr/ (programs, channels, podcasts). Use introspection or the hosted explorer (with your API token) to discover fields and types. Args: query: GraphQL document (query or mutation). variables: Optional variables object; omit or pass empty dict when the query has none. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Each tool targets a distinct resource and action: datasets, communes, departements, regions, legal units, establishments, and a generic GraphQL access point are all cleanly separated. Search vs. get operations are unambiguous within each domain, and no two tools appear to overlap in purpose.
Tool names follow a consistent domain_verb_noun pattern: datagouv_search/get, geo_search/get, insee_get, and radiofrance_graphql. snake_case is used uniformly, and the verbs search/get clearly indicate whether a tool lists/filters or fetches a single entity.
11 tools is a reasonable, well-scoped count for a public-data server covering datasets, administrative geography, and company records. The radiofrance_graphql tool is a broad catch-all that slightly expands the server's scope, but it is still a single coherent integration point.
The dataset and geography domains have solid search/get coverage for their core entities, and INSEE identifiers map directly to legal units and establishments. Missing search-by-name for INSEE and some administrative geography depth (e.g., arrondissements) are minor gaps for a read-only public-data server.