{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"github_mcp-datagouv-datagouv-mcp","slug":"mcp-datagouv-datagouv-mcp","name":"datagouv-mcp","type":"mcp","url":"https://github.com/datagouv/datagouv-mcp","page_url":"https://unfragile.ai/mcp-datagouv-datagouv-mcp","categories":["mcp-servers"],"tags":["mcp","mcp-server","open-data","opendata"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"github_mcp-datagouv-datagouv-mcp__cap_0","uri":"capability://search.retrieval.keyword.based.dataset.discovery.via.federated.search","name":"keyword-based dataset discovery via federated search","description":"Exposes the data.gouv.fr API v1 GET /1/datasets/ endpoint through an MCP tool that accepts free-text search queries and returns paginated dataset metadata (title, description, organization, tags, update frequency). Implements client-side pagination and result ranking to surface the most relevant datasets from France's national open data catalog without requiring users to manually navigate the web interface.","intents":["I want to find datasets related to a specific topic (e.g., 'housing', 'transportation') without browsing the web","I need to discover what open datasets exist for a given domain before analyzing them","I want to search across all French government datasets in a single query"],"best_for":["Data analysts building research queries in AI chatbots","Non-technical users exploring French open data programmatically","Teams building data discovery workflows into LLM agents"],"limitations":["Search is keyword-based only — no semantic/vector search across dataset descriptions","Results are limited to data.gouv.fr catalog; does not federate with other European open data portals","Pagination is client-side; large result sets require multiple sequential API calls"],"requires":["Network access to data.gouv.fr API v1","MCP-compatible client with Streamable HTTP transport support","No authentication or API key required"],"input_types":["text (free-form search query)"],"output_types":["structured JSON (dataset metadata array with title, description, organization, tags, update_frequency)"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-datagouv-datagouv-mcp__cap_1","uri":"capability://data.processing.analysis.full.dataset.metadata.retrieval.with.resource.inventory","name":"full-dataset metadata retrieval with resource inventory","description":"Fetches complete metadata for a single dataset by ID from data.gouv.fr API v1 GET /1/datasets/{id}/, returning title, description, organization, tags, creation/update timestamps, license, and a complete inventory of all associated resources (files). Uses a single API call per dataset to avoid N+1 queries and provides structured output suitable for downstream resource selection or analysis planning.","intents":["I found a dataset and want to see all files/resources it contains before querying","I need to check the license, update frequency, and metadata quality of a dataset","I want to understand the structure and scope of a dataset before deciding to download or query it"],"best_for":["Data engineers evaluating dataset fitness before integration","Researchers verifying dataset provenance and licensing","LLM agents planning multi-step data workflows"],"limitations":["Returns metadata only — does not preview actual data rows or sample values","Resource list includes URLs but does not validate whether files are accessible or up-to-date","No support for filtering or sorting resources within a dataset"],"requires":["Valid dataset ID from data.gouv.fr (obtainable via search_datasets tool)","Network access to data.gouv.fr API v1","No authentication required"],"input_types":["text (dataset ID)"],"output_types":["structured JSON (dataset object with nested resources array, each containing file metadata)"],"categories":["data-processing-analysis","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-datagouv-datagouv-mcp__cap_10","uri":"capability://automation.workflow.docker.containerization.and.cloud.ready.deployment","name":"docker containerization and cloud-ready deployment","description":"Provides a Dockerfile and Docker Compose configuration for containerized deployment, enabling the MCP server to run in Kubernetes, Docker Swarm, or any container orchestration platform. The container exposes port 8000 (HTTP) and includes health check configuration (GET /health endpoint) for orchestrator integration. Supports environment variable configuration for API endpoints, logging levels, and other runtime parameters, enabling deployment across development, staging, and production environments without code changes.","intents":["I want to deploy the MCP server to a Kubernetes cluster","I need to run multiple instances of the server behind a load balancer","I want to configure the server for different environments (dev, staging, prod) using environment variables"],"best_for":["DevOps teams deploying the server to cloud platforms","Organizations running containerized AI infrastructure","Teams building multi-instance deployments with load balancing"],"limitations":["Dockerfile is provided but requires customization for specific deployment environments","No built-in persistence — server state is ephemeral; all data is fetched from data.gouv.fr on each request","No built-in caching — repeated queries to the same dataset will hit the API each time","Health check endpoint is basic (returns 200 OK) — does not validate API connectivity"],"requires":["Docker 20.10+ or compatible container runtime","Docker Compose 1.29+ (optional, for local development)","Kubernetes 1.20+ (optional, for production deployment)","Environment variables for configuration (API endpoints, logging level, etc.)"],"input_types":["Dockerfile, Docker Compose YAML, environment variables"],"output_types":["running container with HTTP server on port 8000"],"categories":["automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-datagouv-datagouv-mcp__cap_11","uri":"capability://automation.workflow.environment.driven.configuration.and.multi.instance.deployment","name":"environment-driven configuration and multi-instance deployment","description":"Centralizes all runtime configuration (API endpoints, logging levels, server port, CORS settings, etc.) in environment variables, enabling the same Docker image or Python process to run in different environments without code changes. Configuration is loaded at startup via a dedicated configuration module that validates and provides defaults. Supports multi-instance deployments where each instance can be configured independently via environment variables, enabling load-balanced and highly-available setups.","intents":["I want to deploy the same Docker image to dev, staging, and production with different configurations","I need to run multiple server instances with different settings (e.g., different API endpoints)","I want to change the logging level or API endpoint without rebuilding the Docker image"],"best_for":["DevOps teams managing multi-environment deployments","Organizations using infrastructure-as-code (Terraform, CloudFormation, etc.)","Teams deploying to Kubernetes with ConfigMaps or Secrets"],"limitations":["Configuration is loaded at startup only — changes require server restart","No support for dynamic configuration updates or hot-reload","Environment variables must be set before server startup; no runtime configuration API"],"requires":["Environment variables set before server startup (via .env file, Docker Compose, Kubernetes ConfigMap, etc.)","Python 3.9+ with os and dotenv libraries"],"input_types":["environment variables (KEY=VALUE pairs)"],"output_types":["server configuration object with validated settings"],"categories":["automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-datagouv-datagouv-mcp__cap_2","uri":"capability://data.processing.analysis.resource.level.metadata.and.tabular.api.availability.detection","name":"resource-level metadata and tabular api availability detection","description":"Queries data.gouv.fr API v2 GET /2/datasets/resources/{id}/ to retrieve detailed metadata for a single file/resource, including format (CSV, XLSX, JSON, etc.), file size, MIME type, and critically, whether the resource supports the Tabular API (a data.gouv.fr feature enabling row-level querying without full download). Returns structured metadata that allows agents to decide between streaming/parsing (for unsupported formats) or direct tabular queries (for supported formats).","intents":["I want to know if a CSV or XLSX file can be queried directly via the Tabular API without downloading","I need to check file size and format before deciding whether to download or stream-parse a resource","I want to understand what query capabilities are available for a specific file"],"best_for":["Data engineers optimizing download vs. query strategies","LLM agents deciding between streaming and direct API access","Teams building smart data access layers that adapt to resource capabilities"],"limitations":["Does not return actual schema or column names — only indicates Tabular API availability","Tabular API support is limited to CSV and XLSX formats; other formats require full download","No preview of data quality or sample rows"],"requires":["Valid resource ID from a dataset (obtainable via list_dataset_resources or get_dataset_info)","Network access to data.gouv.fr API v2","No authentication required"],"input_types":["text (resource ID)"],"output_types":["structured JSON (resource metadata including format, size, MIME type, tabular_api_available boolean)"],"categories":["data-processing-analysis","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-datagouv-datagouv-mcp__cap_3","uri":"capability://data.processing.analysis.paginated.row.level.data.querying.via.tabular.api","name":"paginated row-level data querying via tabular api","description":"Executes structured queries against CSV and XLSX resources using data.gouv.fr's Tabular API, supporting row filtering, column selection, sorting, and pagination. Implements client-side parameter validation and result streaming to handle large datasets within practical limits (respects data.gouv.fr rate limits and payload size constraints). Queries are executed without downloading the entire file, enabling efficient exploration of large datasets within a single conversation turn.","intents":["I want to query a specific CSV file by filtering rows and selecting columns without downloading the whole file","I need to paginate through results from a large dataset to find specific records","I want to sort and filter data in-place before analyzing it in the conversation"],"best_for":["Data analysts exploring large CSV/XLSX files interactively","LLM agents performing ad-hoc data filtering and sampling","Teams building conversational data exploration interfaces"],"limitations":["Only supports CSV and XLSX formats — JSON, Parquet, and other formats require download-and-parse","Query complexity is limited by data.gouv.fr Tabular API constraints (no joins, no aggregations, no custom expressions)","Large result sets are paginated; agents must make multiple calls to retrieve all matching rows","No support for full-text search within columns — filtering is equality/range-based only"],"requires":["Resource ID for a CSV or XLSX file with Tabular API support (verify via get_resource_info)","Network access to data.gouv.fr Tabular API","No authentication required"],"input_types":["structured parameters (resource_id, filters, columns, sort_by, page_size, page_number)"],"output_types":["structured JSON (paginated result set with row data, total count, page metadata)"],"categories":["data-processing-analysis","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-datagouv-datagouv-mcp__cap_4","uri":"capability://data.processing.analysis.large.file.streaming.and.format.agnostic.parsing","name":"large-file streaming and format-agnostic parsing","description":"Downloads and parses CSV, XLSX, JSON, and other resource formats that do not support the Tabular API, streaming the file to avoid memory exhaustion and applying format-specific parsers (csv.DictReader for CSV, openpyxl for XLSX, json.load for JSON). Implements chunked reading and result truncation to respect practical limits on response size within MCP protocol constraints. Enables agents to access data from any format without requiring external download tools.","intents":["I want to analyze a JSON or Parquet file from a dataset without manually downloading it","I need to parse and extract data from a CSV file that is too large to fit in memory","I want to convert a dataset from one format to another (e.g., XLSX to JSON) within the conversation"],"best_for":["Data scientists working with diverse file formats in conversational workflows","LLM agents needing to access non-tabular formats (JSON, Parquet, XML)","Teams building format-agnostic data pipelines"],"limitations":["Streaming and truncation mean very large files (>100MB) may return incomplete results — agents must handle partial data gracefully","Format detection is based on file extension and MIME type; ambiguous formats may fail to parse","No support for compressed formats (gzip, bzip2) — files must be uncompressed","JSON parsing assumes valid JSON; malformed files will fail without recovery","Response size is capped by MCP protocol limits (~10MB typical); very large parsed results are truncated"],"requires":["Resource ID for any file format (CSV, XLSX, JSON, etc.)","Network access to download the file from data.gouv.fr","Python 3.9+ with csv, openpyxl, and json libraries","No authentication required"],"input_types":["text (resource ID)"],"output_types":["structured JSON (parsed rows/records, or raw text for unsupported formats)"],"categories":["data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-datagouv-datagouv-mcp__cap_5","uri":"capability://search.retrieval.dataservice.discovery.and.metadata.retrieval","name":"dataservice discovery and metadata retrieval","description":"Queries data.gouv.fr's dataservice catalog (API endpoints, web services, and data APIs exposed by organizations) via dedicated MCP tools that search and retrieve dataservice metadata. Enables agents to discover and understand available APIs and services without manual catalog browsing, returning service descriptions, endpoints, and usage documentation. Complements dataset discovery by surfacing programmatic access methods.","intents":["I want to find available APIs or web services that provide data on a specific topic","I need to understand what dataservices are available before deciding to use them","I want to discover real-time or streaming data sources in addition to static datasets"],"best_for":["Developers building integrations with French government data APIs","Data engineers discovering programmatic access methods","Teams building API-first data pipelines"],"limitations":["Dataservice catalog is smaller and less populated than the dataset catalog","Metadata does not include API authentication details or rate limits — agents must consult external documentation","No validation of service availability or endpoint health"],"requires":["Network access to data.gouv.fr dataservice API","No authentication required"],"input_types":["text (search query or dataservice ID)"],"output_types":["structured JSON (dataservice metadata including name, description, endpoint, documentation URL)"],"categories":["search-retrieval","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-datagouv-datagouv-mcp__cap_6","uri":"capability://data.processing.analysis.platform.metrics.and.usage.statistics.retrieval","name":"platform metrics and usage statistics retrieval","description":"Exposes a dedicated MCP tool that retrieves aggregate metrics about the data.gouv.fr platform, including total dataset count, organization count, resource count, and platform-wide usage statistics. Provides agents with context about the scale and activity of the platform without requiring manual inspection of the website. Useful for generating summaries or understanding data availability trends.","intents":["I want to know how many datasets are available on data.gouv.fr","I need platform-wide statistics to contextualize a specific dataset's importance","I want to understand the growth and activity trends of the French open data ecosystem"],"best_for":["Researchers studying open data adoption and trends","Teams generating platform summaries or reports","LLM agents providing context about data availability"],"limitations":["Metrics are aggregate only — no per-organization or per-category breakdowns","Statistics are cached and may not reflect real-time changes","No historical trend data — only current snapshot"],"requires":["Network access to data.gouv.fr metrics API","No authentication required"],"input_types":["none (no parameters)"],"output_types":["structured JSON (platform metrics including dataset_count, organization_count, resource_count, last_updated)"],"categories":["data-processing-analysis","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-datagouv-datagouv-mcp__cap_7","uri":"capability://tool.use.integration.mcp.protocol.bridging.via.streamable.http.transport","name":"mcp protocol bridging via streamable http transport","description":"Implements the Model Context Protocol (MCP) server specification using FastMCP framework with Streamable HTTP transport (POST /mcp endpoint), enabling any MCP-compatible client (ChatGPT, Claude Desktop, Gemini, Cursor, VS Code, etc.) to invoke data.gouv.fr tools through a standardized interface. Handles MCP request/response serialization, tool schema registration, and error handling transparently. The server exposes exactly two HTTP endpoints: /mcp for tool invocation and /health for liveness probes.","intents":["I want to use data.gouv.fr tools in my favorite AI chatbot without custom integration code","I need to connect multiple AI clients to the same data.gouv.fr MCP server instance","I want to deploy a centralized data access layer that all my AI tools can use"],"best_for":["Teams deploying centralized MCP servers for multiple AI clients","Developers building AI agents that need standardized tool access","Organizations standardizing on MCP for AI tool integration"],"limitations":["Only Streamable HTTP transport is supported — STDIO and SSE transports are not available","Requires MCP-compatible client; older or proprietary AI platforms may not support MCP","No built-in authentication or rate limiting — must be added via reverse proxy or middleware","Tool schemas are static at startup — dynamic tool registration is not supported"],"requires":["MCP-compatible client with Streamable HTTP transport support","Python 3.9+ with FastMCP library","Network connectivity between client and server (HTTP/HTTPS)","No API key or authentication required for data.gouv.fr access"],"input_types":["MCP protocol messages (tool invocation requests with parameters)"],"output_types":["MCP protocol messages (tool results with structured data or errors)"],"categories":["tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-datagouv-datagouv-mcp__cap_8","uri":"capability://automation.workflow.three.layer.architecture.with.strict.dependency.isolation","name":"three-layer architecture with strict dependency isolation","description":"Organizes the codebase into three strictly separated layers with one-way dependency flow: main.py (entry point and ASGI middleware) → tools/ (MCP tool implementations) → helpers/ (external API clients). Each layer has a single responsibility: entry point creates the FastMCP instance and runs uvicorn; tools implement MCP tool logic; helpers wrap external HTTP APIs with typed async functions. This architecture enables independent testing, easy addition of new tools, and clear separation between protocol handling and business logic.","intents":["I want to add a new data.gouv.fr tool without modifying existing code","I need to test tool logic independently from MCP protocol handling","I want to understand the codebase structure and dependencies at a glance"],"best_for":["Teams maintaining and extending the MCP server","Developers contributing new tools or API integrations","Organizations building similar MCP servers with clean architecture"],"limitations":["Strict layering adds minimal overhead but requires discipline to maintain","No circular dependencies are possible by design, but this also means no cross-layer helper sharing"],"requires":["Python 3.9+","Understanding of MCP protocol and FastMCP framework","Familiarity with async/await patterns in Python"],"input_types":["Python code (new tool implementations)"],"output_types":["structured codebase with clear separation of concerns"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-datagouv-datagouv-mcp__cap_9","uri":"capability://automation.workflow.centralized.logging.and.observability","name":"centralized logging and observability","description":"Implements a single shared logger named 'datagouv_mcp' created in main.py and referenced by name across all modules, providing centralized log aggregation and debugging. Logs are emitted at appropriate levels (DEBUG for API calls, INFO for tool invocations, ERROR for failures) and can be redirected to stdout, files, or external logging services via standard Python logging configuration. Enables operators to monitor server health and troubleshoot issues without instrumenting individual modules.","intents":["I want to debug why a tool invocation failed without adding print statements","I need to monitor server activity and API call patterns in production","I want to aggregate logs from multiple server instances into a central logging service"],"best_for":["Operations teams deploying and monitoring the MCP server","Developers debugging tool failures","Teams integrating the server with centralized logging infrastructure (ELK, Datadog, etc.)"],"limitations":["Logging configuration is static at startup — dynamic log level changes require server restart","No built-in structured logging (JSON format) — requires custom formatter configuration","Log volume can be high if DEBUG level is enabled; production deployments should use INFO or WARNING"],"requires":["Python 3.9+ with standard logging module","Configuration of logging handlers (stdout, file, or external service)"],"input_types":["none (automatic)"],"output_types":["log messages at DEBUG, INFO, WARNING, ERROR levels"],"categories":["automation-workflow","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":46,"verified":false,"data_access_risk":"high","permissions":["Network access to data.gouv.fr API v1","MCP-compatible client with Streamable HTTP transport support","No authentication or API key required","Valid dataset ID from data.gouv.fr (obtainable via search_datasets tool)","No authentication required","Docker 20.10+ or compatible container runtime","Docker Compose 1.29+ (optional, for local development)","Kubernetes 1.20+ (optional, for production deployment)","Environment variables for configuration (API endpoints, logging level, etc.)","Environment variables set before server startup (via .env file, Docker Compose, Kubernetes ConfigMap, etc.)"],"failure_modes":["Search is keyword-based only — no semantic/vector search across dataset descriptions","Results are limited to data.gouv.fr catalog; does not federate with other European open data portals","Pagination is client-side; large result sets require multiple sequential API calls","Returns metadata only — does not preview actual data rows or sample values","Resource list includes URLs but does not validate whether files are accessible or up-to-date","No support for filtering or sorting resources within a dataset","Dockerfile is provided but requires customization for specific deployment environments","No built-in persistence — server state is ephemeral; all data is fetched from data.gouv.fr on each request","No built-in caching — repeated queries to the same dataset will hit the API each time","Health check endpoint is basic (returns 200 OK) — does not validate API connectivity","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.4534322644417772,"quality":0.49,"ecosystem":0.52,"match_graph":0.25,"freshness":0.75,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:22.065Z","last_scraped_at":"2026-05-03T14:23:34.856Z","last_commit":"2026-04-27T13:33:27Z"},"community":{"stars":1418,"forks":119,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=mcp-datagouv-datagouv-mcp","compare_url":"https://unfragile.ai/compare?artifact=mcp-datagouv-datagouv-mcp"}},"signature":"JoXzANG/ixh5MeAB4m7A8yEfD1lWOBKOUoozthtjxWA4wBHLZNJxulb8EbWSiQr+h/09UclhH9iaDbYzcFkoCg==","signedAt":"2026-06-21T10:45:29.031Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/mcp-datagouv-datagouv-mcp","artifact":"https://unfragile.ai/mcp-datagouv-datagouv-mcp","verify":"https://unfragile.ai/api/v1/verify?slug=mcp-datagouv-datagouv-mcp","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}