Skip to main content
Glama

EU Tender MCP

面向中小企业的实时、结构化欧洲公共采购情报 —— 以 MCP 服务器形式提供。在 Claude、Cursor 或任何 MCP 客户端中搜索商机、分析跨境风险、理解欧盟招标。

这里的价值在于 LLM 无法知晓的信息:当前招标机会、欧盟阈值、CPV 代码和跨境风险模式。它专为希望在本国以外的成员国投标公共合同的咨询、服务或供应类中小企业而构建。


为什么它真正有用(而不只是又一个包装)

LLM 凭记忆编造的内容

这个 MCP 实际做的事情

“服务类的欧盟阈值是多少?”

返回真实数字(标准 €143k)及其适用的类别

“帮我找德国软件类招标”

返回结构化、可筛选的招标记录(国家/CPV/金额/截止日期)

“从国外投标这个 RFP 有风险吗?”

执行红旗扫描(保证金、营业额门槛、本地存在要求、截止时间过短)+ 诚实的 SME 适配评分

“‘清洁服务’的 CPV 代码是什么?”

返回带别名的 CPV 分类

“这个公告类型是什么意思?”

解释 pin、cn-standard、results 等

每个工具都是确定性的、类型化的,并且如实说明其数据来源 —— 未配置 TED API 密钥时,它绝不会编造“实时”商机。


Related MCP server: Tender MCP

工具(7 个)

工具

功能

search_tenders

按关键词 / 国家 / CPV / 金额范围 / 截止日期搜索招标

market_snapshot_tool

按国家和行业统计活动、典型金额、紧急截止日期

analyze_tender

红旗扫描 + 0-100 SME 适配评分(按招标 ID 或粘贴的 RFP 文本)

look_up_cpv

将描述转换为欧盟 CPV 分类代码

look_up_notice_type

解释公告类型(pin、cn-standard、results…)的含义

eu_threshold

判断金额是否超过欧盟强制公开出版阈值

tender_details

单个招标的完整结构化记录


安装与运行

python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/pytest tests/ -q      # 38 tests, incl. a real MCP stdio integration

启动服务器(stdio)

.venv/bin/eu-tender-mcp
# or
.venv/bin/python -m tendermcp.server

连接客户端

Claude Desktop —— 添加到您的 MCP 配置(claude_desktop_config.json): mcpServers → 参见 configs/claude-desktop.json。将 PYTHONPATH 指向仓库的绝对路径。

Claude Code / Cursor / 其他 MCP 客户端 —— 使用 configs/mcp-config.json,并安装该包(pip install -e .),以便 python3 -m tendermcp.server 可以解析。


数据模型

  • 默认提供方: 一组内置的明确标注的示例招标(来源 bundled_sample),使 MCP 开箱即用、可演示,并且无需密钥即可完全测试。

  • 实时 TED(路线图): 注册 TED API 密钥,设置 TED_API_KEY,并实现 TEDLiveProvider._fetch()(位于 providers.py 中,已预留桩代码)。在此之前,绝不编造实时数据 —— 返回的是标注过的示例数据。


项目结构

eu-tender-mcp/
├── tendermcp/
│   ├── server.py        ← FastMCP server wiring all tools
│   ├── knowledge.py     ← CPV codes, notice types, EU thresholds, red-flag rules
│   ├── analyzer.py      ← red-flag scan + SME fit scoring (offline, deterministic)
│   ├── providers.py     ← provider interface + bundled/live providers
│   ├── models.py        ← typed Tender / search-params models
│   ├── intel.py         ← market-snapshot aggregations
│   └── sample_data.py   ← labeled demo tenders
├── configs/             ← Claude Desktop / generic MCP client configs
├── tests/               ← 38 tests including real stdio integration
├── pyproject.toml
└── README.md

路线图 / 诚实说明

  • 实时 TED 数据源是最大的升级 —— 它需要注册的 TED/OPEN API 密钥和账户专属的 feed URL,这只能由用户提供。提供方接口已就绪。

  • 计划增加更多红旗规则和司法管辖区细节;分析器有意保持透明(它输出的是原因,而非虚假的精确度)。

  • 不构成法律建议。 分析器只是分流辅助工具;请始终对照完整的招标文件进行核实。

MIT 许可。

Available Tools

7 tools
analyze_tenderA

Analyze a tender's cross-border risk and fit for an SME bidder.

Provide either 'tender_id' (looks it up from the active pool and pulls its value/deadline automatically) OR paste 'text' of an RFP to scan it directly. Uses 'estimated_value_eur' / 'deadline_days_left' as overrides when given. Returns a red-flag scan + an honest 0-100 fit score with reasons.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
tender_idNo
buyer_typeNo
deadline_days_leftNo
estimated_value_eurNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral disclosure burden. It explains that `tender_id` looks up the active pool and automatically pulls value/deadline, while `text` is scanned directly, and it describes the output as a red-flag scan plus a 0-100 fit score. It could mention error/empty-input behavior, but the disclosed behavior is above-average.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: a one-sentence purpose, an input-mode explanation with clear either/or guidance, override semantics, and a statement of expected output. Each line adds useful guidance and no unnecessary filler is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the light schema annotations and the absence of an output schema, the description covers the core invocation modes, how overrides behave, and what the tool returns. The main omissions are the purpose of `buyer_type` and behavior when neither `tender_id` nor `text` is supplied, but the overall description is still adequate for an agent to use the tool reasonably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 meaningfully explains the roles of `text`, `tender_id`, `estimated_value_eur`, and `deadline_days_left`, including the override behavior. The one gap is `buyer_type`, whose effect is not described anywhere, but most parameters gain useful semantic meaning beyond their names and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is specific: 'Analyze a tender's cross-border risk and fit for an SME bidder' clearly identifies the action, resource, and analytical outcome. It sets this tool apart from the sibling lookup and search tools, which focus on discovering or returning tender details rather than analyzing fit and risk.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how to invoke it — providing either a `tender_id` or RFP `text` — and that overrides are available. However, it does not explicitly state when to choose this tool over siblings like `tender_details` or `market_snapshot_tool`, so usage guidance is largely implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eu_thresholdC

Check whether a tender's value is above EU mandatory publication thresholds. 'category' in works/supplies/services/concessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNostandard
categoryYes

TDQS

C2.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for behavioral disclosure. It fails to state what the tool returns (e.g., boolean, threshold value, comparison result), whether it is read-only or has side effects, or what inputs are actually required to assess the tender's value. The mention of category values is the only behavioral hint, but it leaves the core behavior opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, direct sentences with no filler. The purpose is front-loaded, and the category constraint is included efficiently. It earns a high score for being appropriately concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema, annotations, and the cryptic 'kind' parameter, this description is incomplete. It does not explain the return value, the meaning of 'kind', or how the tender value is passed. An agent would have to guess how to invoke it correctly, especially since the required 'category' parameter is explained but the optional 'kind' is not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 explains that 'category' can be 'works/supplies/services/concessions', which adds meaning for that parameter. However, it does not explain the 'kind' parameter at all, nor does it specify how the tender's value is provided (there is no value parameter in the schema). The description only partially clarifies the inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Check whether') and a specific resource ('a tender's value is above EU mandatory publication thresholds'), and even enumerates the valid category values. However, it does not explicitly differentiate from sibling tools such as market_snapshot_tool or analyze_tender, so it lacks explicit sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. The description simply states what it does, leaving it to the agent to infer the context. There is no mention of when not to use it, prerequisites, or why it should be chosen over other threshold-related or tender-analysis tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

look_up_cpvA

Translate a good/service description into EU CPV division codes.

Useful for cross-border bidders to classify a tender or pick the right alert keywords. Also returns all divisions if 'query' is empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It explicitly states the main transformation and discloses the empty-query behavior: 'Also returns all divisions if query is empty.' It does not describe output format or error cases, but for a simple lookup tool this is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: the core purpose, the user scenarios, and the edge-case behavior. No wasted words or redundant schemas. The most important information (input-to-output translation) is placed first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (one required string parameter, no nested objects, no output schema), the description covers the essential context: what input to provide and what to do with an empty input. It does not specify return-value details, but for a code-lookup tool this is a minor gap, not a critical one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must clarify the only parameter 'query'. It does: query is a good/service description line, and an empty string triggers a special 'return all divisions' behavior. This adds meaningful semantics entirely absent from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Translate a good/service description into EU CPV division codes.' This clearly states the input, the transformation, and the output type. It also implicitly distinguishes itself from siblings like look_up_notice_type by focusing on CPV divisions rather than other classifications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when it is useful: 'cross-border bidders to classify a tender or pick the right alert keywords.' This gives clear usage context. It does cite alternatives or say when not to use it, but there is no need, since the use case is well articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

look_up_notice_typeA

Explain what an EU tender notice type (e.g. 'cn-standard', 'pin', 'results') means and what it signals to a bidder.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

A4/5.0
Behavior3/5

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 correctly implies a read-only explanatory operation and adds bidder-relevant context, but it does not specify the output form, whether it returns a standardized definition, or any limitations on accepted codes. This is acceptable for a simple lookup but not richly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with the core action and resource, with examples woven in naturally. Every part of the sentence earns its place, and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, low-complexity explanatory tool, the description covers the essential semantics and gives useful examples. The absence of an output schema is mostly fine because the output is an explanation, but a note about the response format or accepted-code coverage would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only a single 'code' string with 0% description coverage, so the description must compensate. It does so by giving the semantic domain ('EU tender notice type') and three concrete accepted code examples, which is meaningful guidance beyond the bare schema. However, it stops short of describing the full accepted set or case-sensitivity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('explain') and a specific resource ('EU tender notice type'), with concrete examples ('cn-standard', 'pin', 'results') and a clear audience-focused purpose ('what it signals to a bidder'). This clearly distinguishes it from sibling tools like look_up_cpv, which covers a different code domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the description and name — call this when the user needs the meaning of a notice type code — but there is no explicit when-to-use guidance, no mention of alternatives, and no statement of when not to use it. The context is clear enough for inference, but it does not meet the 'explicit' bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_snapshot_toolA

Get a market overview of available tenders: activity by country and sector, typical contract values, and the most urgent deadlines.

Optionally filter by country (ISO) or CPV division.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpvNo
countryNo
max_resultsNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It implies a read-only operation ('overview', 'snapshot') and indicates the output is a summary (typical values, most urgent deadlines), but it does not disclose potential limitations like data recency, pagination, or any side effects. It is somewhat transparent but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that clearly state the purpose and available filters. No jargon, no redundancy, well-structured with a colon to introduce the overview content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, the description must cover side effects, requirements, and limitations. It provides the core purpose and optional filters but omits any alternative tool guidance, performance expectations, or authorization needs. It is adequate for a simple read-only snapshot tool but lacks some contextual depth.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description partially explains the parameters: it mentions country (ISO) and CPV division for filteringaine but does not detail the max_results parameter or specific formats (e.g., how CPV division is entered). Since no schema descriptions are present and the description covers only two of three parameters, it is moderately informative but not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Get a market overview') on a specific resource ('available tenders'), and specifies the content: activity by country and sector, typical contract values, and urgent deadlines. It distinguishes itself from siblings like search_tenders by focusing on aggregated 'overview' data rather than individual tender searches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions optional filters (country ISO, CPV division) but does not explicitly state when to use this tool versus search_tenders or others. It implies a summary use case but does not give exclusion criteria or direct alternatives. There is no 'when not to use' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_tendersB

Search EU public tenders.

Returns a list of tender records with id, title, buyer, country, CPV, deadline, and estimated value. Free text 'query' matches title/description. 'country' is an ISO code like 'DE'. 'cpv' is a CPV division (e.g. 48000000).

ParametersJSON Schema
NameRequiredDescriptionDefault
cpvNo
limitNo
queryNo
sourceNoauto
countryNo
deadline_fromNo
max_value_eurNo
min_value_eurNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It does disclose the return shape, free-text matching behavior, and ISO/CPV value formats, which is helpful. However, it omits default limit behavior, the meaning of source='auto', pagination, and how filters combine.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core purpose, and every sentence adds useful information. It avoids filler and is appropriately sized for a search tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, listing the returned fields is a good compensation. However, with 8 optional parameters and no annotations, the description leaves meaningful gaps around source semantics, limit behavior, and filter interactions, making it adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 explains query, country, and cpv, but 5 of 8 parameters (limit, source, deadline_from, min_value_eur, max_value_eur) receive no semantic explanation. The property names are somewhat self-explanatory, but the description does not fully carry the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches EU public tenders and lists the fields returned, which makes the basic purpose obvious. It does not explicitly contrast with sibling tools like tender_details, but the 'list of tender records' wording signals an aggregate search rather than a single-record lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 alternatives like tender_details, analyze_tender, or market_snapshot_tool. The parameter explanations imply how to filter, but the description never states selection criteria or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tender_detailsB

Get the full structured record for one tender by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
tender_idYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states it returns 'full structured record', but does not disclose the record's fields, structure, pagination, or error behavior. While 'get' implies a read-only operation, this is not explicit, and no side effects or prerequisites are mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence of 9 words that front-loads the core action ('Get the full structured record') without extraneous content. It is appropriately brief and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 and only one parameter, the description should describe what the 'full structured record' contains and any expectations on the output. It is vague, omits return format details, error handling, and does not clarify the scope of a tender record. An agent lacks confidence in what will be returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds no information about tender_id beyond the schema's type string. There is no guidance on format, constraints, examples, or what constitutes a valid tender ID, so the description offers zero value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the verb 'Get', the resource 'full structured record for one tender', and the method 'by id'. This clearly differentiates it from siblings like search_tenders (which searches broadly) and look_up_cpv (which looks up CPV codes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use for fetching a specific tender by ID, but provides no explicit guidance on when to choose it over alternatives. It does not mention conditions such as 'use when you have a tender_id' or exclusion cases, leaving the agent to infer the appropriate context.

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.

  1. 7 tool updatesv0.1.0
    • First observedanalyze_tender
    • First observedeu_threshold
    • First observedlook_up_cpv
    • First observedlook_up_notice_type
    • First observedmarket_snapshot_tool
    • First observedsearch_tenders
    • First observedtender_details

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a distinct purpose: searching for tenders, getting market snapshots, analyzing bidder fit, looking up CPV codes, explaining notice types, checking thresholds, and fetching details. There is no overlap that would cause an agent to misselect between them. The analyze_tender tool's dual input modes are intuitively separate from the other tools.

Naming Consistency3/5

Tool names mix patterns: most follow verb_noun (search_tenders, analyze_tender, look_up_cpv, look_up_notice_type), but market_snapshot_tool and eu_threshold use noun phrases, and tender_details is noun_noun. While readable, the inconsistent structure and the odd '_tool' suffix in market_snapshot_tool reduce predictability.

Tool Count5/5

With 7 tools, the server is well-scoped and covers the core needs of EU tender discovery, analysis, and reference lookups without bloat or redundancy. Each tool clearly earns its place.

Completeness4/5

The tool surface covers search, detail retrieval, market overview, cross-border analysis, CPV translation, notice type explanation, and threshold checks—covering the main workflows. Minor gaps exist, such as no ability to fetch attached tender documents or filter tenders by date range in search, but these are edge cases that agents can often work around.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables search and analysis of European public procurement tenders, including EU above-threshold (TED) and below-threshold from 11 national sources, with hybrid search and filtering.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to find, score, and monitor government contract opportunities across UK, EU, and US with AI-powered relevance scoring.
    2
    52 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables searching and retrieving detailed information on EU grant calls and tenders from the EU Funding & Tenders Portal, including deadlines, budgets, and topic details.
    24 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables searching and analyzing government tenders, contract awards, and pre-tender pipelines from 21 official sources, with tools for tender search, award intelligence, and detailed notice retrieval.
    MIT