mcpField
T
tenderapi-mcp

tenderapi-mcp

Remote
github.com/IDNSIDNSLegal & Government0Updated 2w ago
Repository

About tenderapi-mcp

tenderapi-mcp wraps TenderAPI's French BOAMP and EU TED public procurement data as tools for AI agents to search tenders and awards. It offers a keyless hosted endpoint as well as local installation with the full toolset.

Key features

  1. 01Search BOAMP and TED tenders
  2. 02Fetch tender details by ID
  3. 03Search and fetch award notices
  4. 04Aggregate statistics on contract winners
  5. 05Manage alerts for new tenders

Use cases

  1. 01Filter tenders by region, budget, or deadline
  2. 02Inspect an individual tender or award
  3. 03Compare award winners by category or region
  4. 04Set email or webhook alerts for new tenders

MCP support

Exposes TenderAPI tools for tenders, awards, winner statistics, and alert profiles to MCP clients. The hosted endpoint is keyless but limited; the local server requires an API key.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://tenderapi.fr/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Packages
pypitenderapi-mcp0.9.0

Tools

3
ParameterTypeRequiredDescription
cpvanyNoExact 8-digit CPV code, e.g. '72000000' for IT services. About 40% of BOAMP notices have no CPV: a CPV-only filter excludes them.
pageintegerNoPage number, starting at 1.
sortanyNo'date' (reverse chronological, default), 'relevance' (BM25 ranking), or 'deadline' (nearest deadline first, notices without a deadline last). 'relevance' only makes sense with a keyword and is rejected without one. Combine 'deadline' with status='open' or deadline_after; otherwise the list starts with notices that closed years ago.
regionanyNoFrench region slug, e.g. 'bretagne', 'ile-de-france', 'occitanie'. An unknown value returns an error suggesting the closest slug.
sourceanyNo'boamp' (French notices) or 'ted' (European notices). If omitted, searches both.
statusanyNo'open' (deadline has not passed, evaluated at query time) or 'closed'. ⚠️ WITHOUT this filter, the search covers the entire collection since 2015, including closed notices (~2.9 million): set 'open' if you are looking for notices that can still be responded to.
countryanyNo2-letter ISO country code, e.g. 'FR', 'DE', 'ES'. Useful for keeping only French notices ('FR') or targeting a country in the TED corpus.
keywordanyNoFull-text search on title and description, accent-insensitive. ALL words must appear in the same notice: search for one word first, then refine. FTS5's OR operator is supported, e.g. 'BIM OR "maquette numerique"'.
page_sizeintegerNoNumber of notices per page, 10 by default, capped at 20 for anonymous access. A notice is about 1,300 characters; raise this to 20 only if you plan to read them all.
budget_maxanyNoMaximum amount in euros.
budget_minanyNoMinimum amount in euros. Notices with no reported budget are excluded unless include_null_budget=true.
cpv_familyanyNo2-digit CPV prefix, e.g. '72' = all IT, '45' = works.
departmentanyNoDepartment code, e.g. '35', '2A', '974'. Multiple values separated by commas.
buyer_siretanyNoBuyer's SIRET, exactly 14 digits (the establishment, not the company).
descripteuranyNoBOAMP descriptor code (DILA nomenclature), an alternative to CPV on the French side.
buyer_keywordanyNoFragment of the buyer's name, at least 3 characters, e.g. 'metropole', 'CHU'.
contract_typeanyNo'services', 'works' or 'supplies'. The French forms 'travaux' and 'fournitures' are also accepted as aliases.
deadline_afteranyNoSubmission deadline later than this ISO date (AAAA-MM-JJ).
procedure_typeanyNoProcedure type, e.g. 'open', 'restricted', 'negotiated'. An unknown value returns an error listing the accepted values.
deadline_beforeanyNoSubmission deadline earlier than this ISO date (AAAA-MM-JJ).
published_afteranyNoPublished after this ISO date (AAAA-MM-JJ). This is the filter for daily monitoring.
include_planningbooleanNoInclude prior information notices (markets merely planned, not yet open). Excluded by default.
published_beforeanyNoPublished before this ISO date (AAAA-MM-JJ).
include_null_budgetbooleanNoKeep notices whose budget is not specified despite a budget filter. Many BOAMP notices do not announce an amount.
include_null_deadlinebooleanNoKeep notices without a deadline despite a deadline filter. Otherwise, a deadline_* filter silently excludes them.

Details

From the project README

TenderAPI MCP server

Expose TenderAPI (French BOAMP + EU TED public procurement data) as MCP tools for AI agents (Claude Desktop, Cursor, Continue, Zed, etc.).

A thin wrapper over the public REST API at https://tenderapi.fr.

Coverage: BOAMP (France) since March 2015, and TED for FR/DE/IT/ES/UK since 2015 (legacy XML format until end 2023, then eForms), refreshed daily.

Two ways to use it

1. Hosted server — no install, no key

The fastest way to try it. Point any MCP client at the hosted endpoint:

https://tenderapi.fr/mcp

Claude Desktop / Claude Code:

{
  "mcpServers": {
    "tenderapi": {
      "type": "streamable-http",
      "url": "https://tenderapi.fr/mcp"
    }
  }
}

Exposes search_tenders and get_tender. Anonymous, free, limited to 30 tool calls per day per IP. No account, nothing to install.

Awards, winner intelligence and alert profiles are not available anonymously — they need a key, see below.

2. Local server (pip) — full toolset

Requires Python 3.10+ and a free API key.

pip install tenderapi-mcp

Get a free key at https://tenderapi.fr/ (includes one weekly email watch), then:

{
  "mcpServers": {
    "tenderapi": {
      "command": "tenderapi-mcp",
      "env": {
        "TENDERAPI_KEY": "ta_your_key_here"
      }
    }
  }
}

Claude Desktop config location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Restart the client. The tenderapi server should appear in the tool picker.

From source instead of PyPI:

git clone https://github.com/IDNSIDNS/tenderapi-mcp
cd tenderapi-mcp
pip install -e .

Any MCP client supporting stdio transport works. The tenderapi-mcp binary installed by pip is the entry point.

Tools exposed

ToolTierHosted (keyless)Description
search_tendersFree✅Search BOAMP + TED tenders with typed filters (CPV, region, budget, deadline, source, etc.)
get_tenderFree✅Fetch a single tender by id
search_awardsPro—Search award notices (who won which contract, for how much)
get_awardPro—Fetch a single award by id
winner_intelPro—Aggregated winner stats: top companies by CPV / region / year
meany—Current key tier, quota remaining, available features
list_profiles, get_profile, create_profile, update_profile, delete_profileFree (1, weekly email) / Pro—Manage alert profiles for new-tender matches: weekly email on a free key; daily email digest, Teams card or webhook on Pro
upgrade_tier, billing_portalany—Stripe checkout and billing-management links

PINs (prior-information notices) are excluded from search_tenders by default; pass include_planning=true to include them. A deadline_after/deadline_before filter drops notices with no submission deadline unless include_null_deadline=true.

Tiers

  • Hosted, keyless: 30 tool calls/day per IP, tenders only
  • Free key: tenders, 1 alert profile (email digest every Monday, to the account address)
  • Pro (15 €/month): adds awards and winner intelligence, up to 10 alert profiles delivered every morning (email digest, Teams or webhook)

Request limits only protect the service (free: 1 000/day and 30/min; Pro: 1 500/day and 120/min); paginated lists stop at row 1 000.

Prices are final — no VAT is charged (art. 293 B French tax code). See https://tenderapi.fr/#pricing.

Local development

Override the API base URL via TENDERAPI_BASE_URL (default https://tenderapi.fr).

Requirements

Pinned to the mcp 1.x line: version 2.0.0 removed mcp.server.fastmcp, which this server is built on. Migration to the 2.x API is tracked separately.

License

MIT, see LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.