mcp-french-public-procurement
mcp-french-public-procurement
Servidor MCP para datos de contratación pública francesa: DECP, descubrimiento de BOAMP, compradores, proveedores y contexto SIRENE.
Herramientas
Ejecute el MCP y llame primero a french_public_procurement_get_sources para inspeccionar la cobertura de las fuentes. Este servidor también expone herramientas específicas del dominio para el tema descrito anteriormente.
Related MCP server: MCP INPI
Instalación
npm install
npm run build
npm test
npm run devClaude Desktop
{
"mcpServers": {
"french-public-procurement": {
"command": "npx",
"args": ["mcp-french-public-procurement"]
}
}
}Fuentes
Conjunto de datos tabulares consolidado de DECP: https://www.data.gouv.fr/datasets/donnees-essentielles-de-la-commande-publique-consolidees-format-tabulaire
API DECP de data.economie.gouv.fr: https://data.economie.gouv.fr/explore/dataset/decp-v3-marches-valides/
BOAMP: https://www.boamp.fr/
Datos SIRENE en data.gouv.fr: https://www.data.gouv.fr/datasets/base-sirene-des-entreprises-et-de-leurs-etablissements-siren-siret/
API de data.gouv.fr: https://doc.data.gouv.fr/api/reference/
Publicación
Consulte docs/publishing.md.
Glama / Docker
El repositorio incluye Dockerfile y glama.json.
Pasos de compilación:
["npm install", "npm run build"]Argumentos de CMD:
["node", "dist/index.js"]Seguridad
Este MCP ayuda a los agentes a descubrir y resumir fuentes públicas. No es una autoridad oficial. Verifique las decisiones con el servicio público competente o con el productor original de los datos.
Licencia
MIT
Available Tools
5 toolsfrench_public_procurement_build_supplier_watchB
Build useful source queries for monitoring one supplier or buyer across DECP, BOAMP and SIRENE context.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Supplier or buyer name. | |
| siret | No | Optional SIRET/SIREN identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It says 'Build useful source queries' but does not disclose what the output looks like, whether it creates persistent state, or any side effects. It does not explain what 'source queries' are or how they will be used, leaving behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loading the main action and resources. It is concise and to the point, but the phrase 'useful source queries' is somewhat vague, which slightly reduces clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (building queries) and no output schema, the description should explain what 'source queries' mean and what the tool returns. It does not, so the agent may not know the format or use of the output, leaving a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with 'name' and 'siret' clearly described in the schema. The description adds that the tool focuses on 'monitoring one supplier or buyer', which gives context, but it does not add detail beyond schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Build') and a clear resource ('useful source queries for monitoring one supplier or buyer'), and it names the relevant sources (DECP, BOAMP, SIRENE). It distinguishes itself from sibling tools that search or fetch, but it doesn't explicitly contrast with a sibling like 'search_decp' or 'get_sources', so it could be clearer on differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used for monitoring a supplier or buyer, and mentions the data sources it covers, but it does not explicitly state when to use this versus siblings like 'search_decp' or 'get_sources'. There is no clear 'when not to use' guidance or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
french_public_procurement_fetch_source_excerptC
Fetch a short text excerpt from a curated source by index or title keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| max_chars | No | ||
| source_key | Yes | Source index, title keyword, or URL fragment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It says 'fetch a short text excerpt' which implies a read-only operation, but it does not disclose what happens if the source_key is not found, whether the excerpt is truncated at word boundaries, or any rate limits or access restrictions. Since there are no annotations, this is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and to the point. It front-loads the primary purpose. It could benefit from a note about usage, but as a minimal description it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters, no output schema, and no annotations, the description is minimal but not sufficient. It doesn't mention what the excerpt looks like, how max_chars is handled, or what errors might occur. For a simple fetch tool it's slightly lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%; the source_key parameter has a description ('Source index, title keyword, or URL fragment') but max_chars is only defined by its schema (default, min, max). The description adds that source_key can be an index or keyword, which is helpful, but it doesn't clarify how a keyword is matched or what happens with ambiguous matches. It partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (fetch excerpt) on a specific resource (curated source) with a parameter selection (by index or title keyword). It does not explicitly differentiate from siblings, but the purpose is clear enough for an agent to understand what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus the siblings. For example, it doesn't mention that this is for browsing source content rather than searching procurement data. There is no explicit context about prerequisites or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
french_public_procurement_get_sourcesA
List curated sources used by this MCP.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of conveying behavioral traits. 'List' implies a read-only operation, but it does not explicitly state that it has no side effects, does not require authentication, or what the returned data structure looks like. It is reasonably transparent for a simple listing tool, but could be more explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—one short sentence—and still conveys the essential purpose. There is no redundant information, and the structure is appropriately minimal for a tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no annotations, the description is nearly complete: it states what it does. Minor gaps include not specifying the output format (e.g., plain list of names, rich objects) or whether the list is static or dynamic, but these are not critical for calling the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty schema, so there is nothing to document. The description implies it takes no input, and the schema fully confirms this, achieving complete coverage. No ambiguity exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it lists curated sources used by this MCP. This is a specific verb-resource pair, and it distinguishes itself from sibling tools (which fetch excerpts, search, or build watches) by explicitly focusing on source enumeration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the siblings. It does not suggest using it as a preliminary step before search or fetch operations, nor does it mention any exclusions. The description is purely functional and leaves the usage context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
french_public_procurement_search_datasetsC
Search data.gouv.fr for public-procurement datasets such as DECP, BOAMP, concessions, buyers, and PLACE exports.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | données essentielles commande publique BOAMP | |
| page_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations provided, the description carries the full burden of behavioral disclosure, and it only hints that this is a web search against an external portal (data.gouv.fr). It never explicitly states the operation is read-only/non-mutating, nor does it disclose pagination behavior, rate-limit expectations, or how 'datasets' results are shaped. The word 'Search' implies safety but nothing is stated outright.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence front-loaded with the verb 'Search' and the resource target. Every element earns its place, and the example list is informative without bloat. It loses a point only because the examples could arguably have been used to signpost the query param semantics explicitly, a minor structural missed opportunity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, no annotations, and 2 undocumented parameters, the description is thin on what an agent experiences when calling it: no hint of the response shape, no pagination model, no differentiation from search_decp, and no caveat that it hits an external network service. A single sentence covering 'what this searches' is a weak floor for a tool an agent must invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It partially does by offering valid query examples for the query parameter, but it never documents the query format/syntax (e.g., free text vs. keywords) nor does it explain page_size at all. page_size's role as a pagination control is left entirely to name-inference, and its max of 50 lives only in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ('Search'), names a clear resource ('data.gouv.fr'), and scopes the domain tightly (public-procurement datasets). The concrete examples (DECP, BOAMP, concessions, buyers, PLACE) make the search target tangible. It falls short of a 5 only because it doesn't explicitly contrast with the closely named sibling search_decp, leaving the agent to infer the dataset-vs-record distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance whatsoever on when to use this tool instead of its four siblings. With french_public_procurement_search_decp in the sibling list, the boundary between 'search datasets' and 'search DECP records' is non-obvious and never addressed. No conditions, no exclusions, no alternatives are mentioned anywhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
french_public_procurement_search_decpC
Query the consolidated DECP public-procurement dataset on data.economie.gouv.fr.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Publication/notification year when available. | |
| buyer | No | Buyer/entity free-text search. | |
| limit | No | ||
| supplier | No | Supplier free-text search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states a query action without noting whether it is read-only, whether it requires authentication, or any other side effects. It does not even mention that it likely returns a list of records. For a read operation with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly worded sentence with no redundancy. It conveys the core purpose in under 20 words and is well-suited for quick scanning. There is no structural waste, fitting the conciseness criterion perfectly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is extremely minimal for a search tool with four parameters and no output schema. It omits any indication of the response format, pagination behavior, or practical usage examples. Without annotations, the agent is left guessing about request results and potential edge cases. This is inadequate for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, just below the 80% threshold where baseline would be 3. Since coverage is not high enough, the description must compensate by explaining parameters or usage patterns, but it adds nothing beyond the schema's parameter names and types. The 'limit' parameter lacks a description entirely, and the tool description does not clarify search semantics (e.g., exact vs. fuzzy matching, combination logic).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (query) and the specific resource (consolidated DECP public-procurement dataset on data.economie.gouv.fr). However, it does not explicitly distinguish itself from sibling tools like 'search_datasets' or 'fetch_source_excerpt', though the name is reasonably self-explanatory. This is a minor gap in differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus its alternatives. The description does not mention any exclusions, prerequisites, or conditions that would route an agent to this tool over siblings. For a search tool with multiple similar options, this is a significant omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
french_public_procurement_build_supplier_watch - First observed
french_public_procurement_fetch_source_excerpt - First observed
french_public_procurement_get_sources - First observed
french_public_procurement_search_datasets - First observed
french_public_procurement_search_decp
TDQS
Scored across 5 tools
Each tool has a reasonably distinct role: source listing and excerpt fetching differ from the dataset/DECP search tools, and build_supplier_watch creates queries rather than executing them. The only mild ambiguity is between search_decp and search_datasets, but the descriptions clearly distinguish searching a specific dataset from searching available datasets.
All tools share the same french_public_procurement_ prefix and use a consistent snake_case verb-noun pattern: get_, fetch_, search_, search_, build_. There is no mixing of styles or unpredictable naming.
Five tools is well-scoped for a niche French public procurement MCP. The set avoids bloat while covering sources, dataset discovery, DECP search, and supplier monitoring setup.
The surface covers core DECP querying, source exploration, dataset discovery, and supplier-watch planning, but it lacks direct content-level searching for BOAMP, SIRENE, or concessions, and only fetches short excerpts rather than full records. Users can work around this somewhat through build_supplier_watch and search_datasets, but some operations remain indirect.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
French & European company registry for AI agents: KYB, sanctions, annual accounts. x402, no API key.
Search French companies: financials, directors, ownership, M&A and insolvency events.
UK public procurement data for AI agents: tenders, contracts, buyer and supplier profiles.
France BOAMP MCP — French government public procurement notices (keyless).
Related MCP Servers
- AlicenseAqualityBmaintenanceExposes French and EU public procurement data (BOAMP + TED) as MCP tools for AI agents, enabling search for tenders, awards, and winner intelligence via typed filters.4MIT
- FlicenseNot gradedqualityBmaintenanceEnables querying French business registers (RNE, BODACC) and trademarks via INPI APIs. Provides tools to search companies, retrieve legal status, directors, beneficial owners, collective procedures, and trademark details.-
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to search and retrieve detailed profiles of 25 million French companies from the official government registry, including directors, activity codes, and establishment data, without requiring an API key.-
- FlicenseNot gradedqualityCmaintenanceProvides tools to search and retrieve French public procurement data (tenders, awarded contracts) and company information from official open APIs.-