EU Tender MCP
EU Tender MCP
중소기업을 위한 실시간, 구조화된 유럽 공공조달 인텔리전스 — MCP 서버로 제공됩니다. 기회를 검색하고, 국경 간 위험을 분석하고, EU 입찰을 이해하세요 — 모두 Claude, Cursor 또는 모든 MCP 클라이언트 안에서.
여기서의 가치는 LLM이 알 수 없는 정보입니다: 현재 입찰 기회, EU 기준액, CPV 코드, 국경 간 위험 패턴. 자국 회원국 밖에서 공공 계약에 입찰하려는 컨설팅, 서비스 또는 공급 중소기업을 위해 만들어졌습니다.
왜 진정으로 유용한가 (그리고 단순한 래퍼가 아닌 이유)
LLM이 기억에서 지어내는 것 | 이 MCP가 실제로 하는 일 |
"서비스에 대한 EU 기준액이 얼마인가요?" | 실제 수치(표준 €143k)와 적용되는 카테고리를 반환합니다 |
"독일에서 소프트웨어 입찰을 찾아줘" | 구조화되고 필터 가능한 입찰 레코드를 반환합니다(국가/CPV/가치/마감일) |
"이 RFP는 해외에서 입찰하기에 위험한가요?" | 레드플래그 스캔(보증금, 매출액 하한, 현지 소재 요건, 짧은 마감) + 정직한 중소기업 적합도 점수를 실행합니다 |
"'청소 서비스'의 CPV 코드는 무엇인가요?" | 별칭과 함께 CPV 부문을 반환합니다 |
"이 공고 유형은 무엇을 의미하나요?" |
|
모든 도구는 결정적이고, 타입이 지정되어 있으며, 데이터 소스에 대해 정직합니다 — TED API 키가 구성되지 않았을 때 "실시간" 기회를 절대 지어내지 않습니다.
Related MCP server: Tender MCP
도구 (7)
도구 | 기능 |
| 쿼리 / 국가 / CPV / 가치 범위 / 마감일로 입찰 검색 |
| 국가 및 부문별 활동, 일반적인 가치, 긴급 마감일 |
| 레드플래그 스캔 + 0-100 중소기업 적합도 점수(입찰 ID 또는 붙여넣은 RFP 텍스트 기준) |
| 설명을 EU CPV 부문 코드로 변환 |
| 공고 유형(pin, cn-standard, results…)이 무엇을 알리는지 설명 |
| 값이 EU 의무 공개 기준액 이상인지 여부 |
| 하나의 입찰에 대한 전체 구조화된 레코드 |
설치 및 실행
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 키와 계정 피드 URL(계정별)이 필요하며, 이는 사용자만 제공할 수 있습니다. 제공자 시임(seam)은 준비되어 있습니다.
더 많은 레드플래그 규칙과 관할권 뉘앙스가 계획되어 있습니다; 분석기는 의도적으로 투명합니다 — 이유를 출력하며, 거짓 정밀도를 출력하지 않습니다.
법률 자문이 아닙니다. 분석기는 분류(triage) 보조 도구입니다; 항상 전체 입찰 문서로 검증하세요.
MIT 라이선스.
Available Tools
7 toolsanalyze_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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| tender_id | No | ||
| buyer_type | No | ||
| deadline_days_left | No | ||
| estimated_value_eur | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | standard | |
| category | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cpv | No | ||
| country | No | ||
| max_results | No |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| cpv | No | ||
| limit | No | ||
| query | No | ||
| source | No | auto | |
| country | No | ||
| deadline_from | No | ||
| max_value_eur | No | ||
| min_value_eur | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tender_id | Yes |
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. 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.
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.
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.
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.
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.
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.
7 tool updates
v0.1.0- First observed
analyze_tender - First observed
eu_threshold - First observed
look_up_cpv - First observed
look_up_notice_type - First observed
market_snapshot_tool - First observed
search_tenders - First observed
tender_details
TDQS
Scored across 7 tools
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.
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.
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.
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
Related MCP Connectors
Search EU public tenders across TED and 8 national portals. Monitor, match, and analyse procurement.
EU tenders and grant calls, matched to your company and qualified, inside the AI you already use
Find, score and analyse German and EU public tenders; search docs; draft quotes.
Search public procurement notices from 17 sources across Germany, the EU and the UK. Read-only.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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
- AlicenseAqualityBmaintenanceEnables AI agents to find, score, and monitor government contract opportunities across UK, EU, and US with AI-powered relevance scoring.252 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching and retrieving detailed information on EU grant calls and tenders from the EU Funding & Tenders Portal, including deadlines, budgets, and topic details.24 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables 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