mcp-gouv-fr
MCP server for exploring French public open data via APIs like data.gouv.fr, geo.api.gouv.fr, INSEE Sirene, and Radio France.
README
mcp-gouv-fr
MCP server built with FastMCP for Claude Desktop, Cursor, and other clients. Use it to explore French public open data through ready-made tools instead of calling each portal yourself.
Source repository: github.com/gghez/mcp-gouv-fr
APIs
| API | What you can do |
|---|---|
| data.gouv.fr | Search and open datasets: metadata, organization, and links to files or APIs. |
| geo.api.gouv.fr | Look up communes, departments, and regions (names, codes, and related geography). |
| INSEE API Sirene | Look up a legal entity (SIREN) or an establishment (SIRET); needs an INSEE API key. |
| Radio France Open API | Run GraphQL queries on Radio France open data; needs an API token. |
data.gouv.fr
Tools use the datagouv_ prefix.
| Tool | What it does |
|---|---|
datagouv_search_datasets |
Search datasets by title, description, or organization, with pagination. |
datagouv_get_dataset |
Full metadata and resource links for one dataset (id or slug). |
geo.api.gouv.fr
Tools use the geo_ prefix.
| Tool | What it does |
|---|---|
geo_search_communes |
Search communes by name, postal code, and/or department (at least one filter). |
geo_get_commune |
Commune details by INSEE municipality code. |
geo_search_departements |
List or search departments. |
geo_get_departement |
Department detail by code. |
geo_search_regions |
List or search regions. |
geo_get_region |
Region detail by code. |
INSEE API Sirene
Tools use the insee_ prefix. Set MCP_GOUV_INSEE_API_KEY or these tools will report a configuration error.
| Tool | What it does |
|---|---|
insee_get_unite_legale |
Legal unit (unité légale) by 9-digit SIREN. |
insee_get_etablissement |
Establishment (établissement) by 14-digit SIRET. |
Radio France Open API
Tools use the radiofrance_ prefix. Set MCP_GOUV_RADIOFRANCE_API_TOKEN for radiofrance_graphql.
| Tool | What it does |
|---|---|
radiofrance_graphql |
Execute a GraphQL query against Radio France public data. |
Default transport is stdio for local MCP clients; streamable HTTP is optional for remote access (see Transports and CLI options).
Prerequisites
- uv installed and available on your
PATH(souvxworks). - This project targets Python 3.14 (
requires-pythoninpyproject.toml). uv will provision a compatible interpreter when installing from Git or from a local checkout. - If you use
uvxwith agit+https://...URL (recommended install-from-GitHub flow below), Git must be installed andgitmust be on thePATHof the MCP subprocess. uv clones or updates the repo using Git; if Git is missing you get:Git executable not found. On Windows, Claude Desktop sometimes spawns MCP servers with a shorterPATHthan your terminal: either use the clone +uv runsetup, or extendPATHin the serverenvblock (see below).
Recommended setup: MCP config with uvx (GitHub)
uvx runs the published console script mcp-gouv-fr in an isolated environment. You can point it at this repository with --from and a Git URL (no manual clone required).
Command shape:
uvx --from git+https://github.com/gghez/mcp-gouv-fr.git mcp-gouv-fr
Optional: pin a branch, tag, or commit after @ in the URL (see uv tools guide), for example git+https://github.com/gghez/mcp-gouv-fr.git@v0.1.0.
Claude Desktop (claude_desktop_config.json)
Typical path on Windows: %APPDATA%\Claude\claude_desktop_config.json.
{
"mcpServers": {
"mcp-gouv-fr": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/gghez/mcp-gouv-fr.git",
"mcp-gouv-fr"
],
"env": {
"PATHEXT": ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW"
}
}
}
}
Restart Claude Desktop after editing. If uvx is not found, use the full path to the uv executable and run uv tool run instead of uvx, or add uv to your user PATH.
If uv fails with “Git executable not found” (common on Windows), the MCP host did not expose git on PATH. Fixes:
- System-wide (simplest): add
C:\Program Files\Git\cmd(or your Git install) to the user or systemPATHin Windows Settings so GUI apps (Claude Desktop) inherit it, then restart Claude. - Per server: set
env.PATHin the MCP JSON to a single string that lists every folder the process needs, in order — at minimum Git’scmdand the folder containinguv.exe/uvx.exe(e.g.C:\Users\YOU\.local\bin). Some clients replace the processPATHentirely whenenvis set, so do not rely on${PATH}expansion unless you verified your client merges variables. - Avoid Git at MCP startup: use clone +
uv run(uv run --directory … mcp-gouv-fr) afteruv syncin that clone; uv then runs the project without cloning from Git on each start.
Cursor and other editors
Use the same JSON shape in your MCP servers configuration: command uvx, args as above. For stdio, do not pass extra arguments unless you need non-default transport (see below).
If uvx is not on PATH (Windows)
Use the full path to uv.exe and the equivalent invocation:
{
"mcpServers": {
"mcp-gouv-fr": {
"command": "C:\\Users\\YOU\\AppData\\Local\\Programs\\uv\\uv.exe",
"args": [
"tool",
"run",
"--from",
"git+https://github.com/gghez/mcp-gouv-fr.git",
"mcp-gouv-fr"
]
}
}
}
Adjust the command path to match your uv installation.
Alternative: clone the repo and run with uv
For a fixed checkout or local changes:
git clone https://github.com/gghez/mcp-gouv-fr.git
cd mcp-gouv-fr
uv sync
uv run mcp-gouv-fr
MCP JSON (stdio) — set --directory to your clone:
{
"mcpServers": {
"mcp-gouv-fr": {
"command": "uv",
"args": [
"run",
"--directory",
"C:\\path\\to\\mcp-gouv-fr",
"mcp-gouv-fr"
]
}
}
}
Transports and CLI options
Default is stdio (suitable for Claude Desktop and Cursor).
uvx --from git+https://github.com/gghez/mcp-gouv-fr.git mcp-gouv-fr --transport stdio
Streamable HTTP (bind address, port, path can be changed):
uvx --from git+https://github.com/gghez/mcp-gouv-fr.git mcp-gouv-fr --transport streamable-http --host 127.0.0.1 --port 8765 --path /mcp
Environment variables (optional): MCP_GOUV_TRANSPORT, MCP_GOUV_HOST, MCP_GOUV_PORT, MCP_GOUV_HTTP_PATH, MCP_GOUV_APIS (comma-separated API ids; default: all), MCP_GOUV_LOG_LEVEL (logging level for stderr; default: INFO).
Environment variables (API behavior)
| Variable | Description |
|---|---|
MCP_GOUV_APIS |
Comma-separated API ids to load (datagouv, geo, insee, radiofrance); default is all |
MCP_GOUV_DATAGOUV_API_BASE |
data.gouv API base URL (default: https://www.data.gouv.fr/api/1) |
MCP_GOUV_GEO_API_BASE |
Geo API base URL (default: https://geo.api.gouv.fr) |
MCP_GOUV_INSEE_API_KEY |
INSEE portal consumer key for Sirene (required for insee_* tools; from portail-api.insee.fr) |
MCP_GOUV_INSEE_SIRENE_API_BASE |
Sirene 3.11 API base (default: https://api.insee.fr/api-sirene/3.11) |
MCP_GOUV_RADIOFRANCE_GRAPHQL_URL |
Radio France GraphQL endpoint (default: https://openapi.radiofrance.fr/v1/graphql) |
MCP_GOUV_RADIOFRANCE_API_TOKEN |
Radio France Open API key (x-token); required for radiofrance_graphql (portal) |
MCP_GOUV_HTTP_TIMEOUT |
Outbound HTTP timeout in seconds (default: 30) |
MCP_GOUV_USER_AGENT |
User-Agent header for HTTP requests |
MCP_GOUV_LOG_LEVEL |
Stderr log level for the server process (DEBUG, INFO, WARNING, …; default: INFO) |
In MCP JSON, set these under env next to command / args if your client supports it.
INSEE Sirene (API key required)
Unlike data.gouv and geo.api.gouv.fr, Sirene lookups will not work until you set an API key. Subscribe to the Sirene API on the INSEE developer portal, generate a consumer key, and expose it to the MCP process as MCP_GOUV_INSEE_API_KEY. The server sends it as the X-INSEE-Api-Key-Integration header to api.insee.fr. If this variable is missing or empty, the insee_* tools return an error that asks you to configure it.
When using Claude Desktop or Cursor, add MCP_GOUV_INSEE_API_KEY to the server’s environment (e.g. env in the MCP JSON config) so the subprocess inherits it.
Development
Contributors: tests and lint live in the repo. Run uv run pytest and uv run ruff check src. Install Git hooks with uv run pre-commit install (runs ruff check --fix on commit). Tool outputs use Pydantic models (JSON Schema for MCP clients). See AGENTS.md for layout conventions (nested tests next to the code they cover).
License
Not set yet (no LICENSE file in this repository).
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.