关于 Ted Eu
Ted Eu 为 MCP 客户端提供 TED 的欧盟公共采购公告与授标数据查询,覆盖各成员国的采购机构。它支持按类别、国家、日期和供应商等条件检索,并查看公告及授标记录。
主要功能
- 01按条件搜索采购公告
- 02获取公告完整描述
- 03将类别词转换为 CPV 代码
- 04搜索授标结果与中标方
- 05查看供应商及采购方记录
适用场景
- 01寻找特定国家或类别的招标机会
- 02核对公告详情与投标截止日期
- 03调查供应商的历史中标记录
- 04分析采购方的授标对象和类别
MCP 相关
向 MCP 客户端提供 TED 公告及授标数据查询工具,可通过 Pipeworx 网关或本地 stdio MCP 服务使用。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gateway.pipeworx.io/ted-eu/mcpclaude mcp add --transport http pipeworx-io-ted-eu https://gateway.pipeworx.io/ted-eu/mcp{"mcpServers":{"pipeworx-io-ted-eu":{"type":"http","url":"https://gateway.pipeworx.io/ted-eu/mcp"}}}在 Cursor 中打开{"servers":{"pipeworx-io-ted-eu":{"type":"http","url":"https://gateway.pipeworx.io/ted-eu/mcp"}}}在 VS Code 中打开{"mcpServers":{"pipeworx-io-ted-eu":{"type":"http","url":"https://gateway.pipeworx.io/ted-eu/mcp"}}}{"mcpServers":{"pipeworx-io-ted-eu":{"serverUrl":"https://gateway.pipeworx.io/ted-eu/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
47| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| q | string | 否 | question 的别名。 |
| ask | string | 否 | question 的别名。 |
| text | string | 否 | question 的别名。 |
| input | string | 否 | question 的别名。 |
| packs | array | 否 | 可选。将路由限制为这些包的 slug(例如 ["sec-form-d","sec-13f"]),路由器随后只会从这些包中的工具进行选择。省略则使用默认的完整目录路由。Slug 可从 list_packs / search_packs / https://pipeworx.io/directory 获取;未列出或未知的 slug 会被忽略,并在 _meta.pack_scope.ignored 中列出。如果没有任何 slug 能匹配问题,则会在整个目录中路由,并设置 _meta.pack_scope.full_catalog:true(绝不会返回空答案)。 |
| query | string | 否 | question 的别名。 |
| prompt | string | 否 | question 的别名。 |
| message | string | 否 | question 的别名。 |
| question | string | 是 | 用自然语言表达的问题或请求。支持 query、q、prompt、text、input、ask、message 作为别名。 |
详细介绍
@pipeworx/ted-eu
TED(Tenders Electronic Daily)MCP — 汇集所有成员国国家、地区和市政采购方发布的欧盟公共采购公告。每年约 70 万条公告;已收录 130 万条建筑公告。无需密钥。
属于 Pipeworx — 一个将 AI Agent 连接到 1684+ 个实时数据源的 MCP 网关。
工具
search_notices(query?, country?, category?, cpv?, date_from?, date_to?, open_only?, value_min?, value_max?, notice_type?, sort?, limit?, page?)— 默认按最新公告排序。category接受通俗英文(“construction”“IT services”“medical equipment”),并解析为 CPV;如果你知道 CPV 代码,也可以传入cpv。get_notice(publication_number)— 获取一条公告及其由采购方撰写的完整说明。notice_id/id也可作为别名使用。cpv_lookup(term)— 将通俗英文类别转换为 CPV 代码,或查询 CPV 代码涵盖的类别。ted_search_awards(query?, winner?, buyer?, country?, winner_country?, category?, cpv?, date_from?, date_to?, value_min?, value_max?, sort?, limit?, page?)— 仅限合同授予公告:中标方和金额。返回公告中的所有中标方(标段和联合体成员),并在已发布时提供winner_countries和decision_date。ted_supplier_history(supplier, country?, category?, cpv?, date_from?, date_to?, limit?, page?)— 查询指定经济运营者赢得的所有合同,按最新优先排序,并提供摘要:按币种统计的授标金额、主要采购方和主要 CPV 类别。名称采用部分匹配(“Siemens”可匹配所有 Siemens 实体)。ted_buyer_profile(buyer, country?, category?, cpv?, date_from?, date_to?, limit?, page?)— 查询指定缔约机构授予的所有合同,以及主要中标方和主要类别。 请使用该机构本国语言名称(“Ville de Paris”,而不是“City of Paris”)。
身份验证
无需身份验证。公共搜索端点可在未认证的情况下响应。
请注意,GET /notices/{id} 并非无需密钥 — 它会返回 400 错误,并提示“Missing Authorization header” — 因此
get_notice 会改为通过公共搜索端点按公告编号筛选来获取。
数据相同,无需密钥。
返回内容
每条公告都从 TED 的原始格式展平为以下内容:
| 字段 | 说明 |
|---|---|
title / title_language | 若 TED 提供英文,则使用英文(通常会提供 — 所有 24 种语言都会发布);否则使用公告原文,并始终注明语言 |
title_original | 当采购方使用的原始语言标题与之不同时,提供该标题 |
buyer、buyer_country、buyer_city | 缔约机构 |
value、currency | 由采购方填写,TED 不会验证。 不一定是 EUR — 捷克的授标金额以 CZK 返回,匈牙利的以 HUF 返回。按金额排序时,拼写错误会排在前面 |
deadline | 接收申请的截止日期 |
winner | 仅适用于授标公告(can-standard) |
notice_type | cn-standard 招标公告 · can-standard 授标公告 · pin-only 预先信息公告 |
url | ted.europa.eu 上的公告 |
结果封装中包含 total、partial 和 sorted_by。partial: true 表示 TED 超时并返回了不完整的结果集 — 计数和总额只是下限,并非完整答案。
自由文本
query 通过 TED 的 FT 运算符搜索完整公告,而不只是标题。搜索会逐步放宽:
- 将整个字符串作为精确短语搜索;
- 将前三个词用 AND 连接,在任意位置搜索;
- 将两个最具特异性的词用 AND 连接。
搜索会在首次找到结果时停止,并在 match_strategy 中报告采用的策略。这一点很重要,因为 ~ 会按短语匹配:旧的标题或描述短语搜索,对真实调用方传来的所有普通多词查询都返回零结果——“backup disaster recovery business continuity”、“data center colocation IaaS PaaS”、“GRC risk management compliance governance”均为 0,而用 AND 连接后则能返回真实公告。
要兼顾两种拼写,可在两个词之间写入 OR——fuze OR fuse artillery 会变成 (fuze OR fuse) AND artillery,因为将两种拼写都用 AND 连接,相当于要求同一份公告同时包含二者。
这里有意不提供任意词回退。我们曾评估过这种方式,后来将其移除:它会对“fuze OR fuse artillery ammunition”返回 42 份公告,其中大多是印刷品。附带说明的零结果,也好过一整页并非你所要的内容。
合同授予
授予工具会搜索 notice-type IN (can-standard can-social can-desg can-tran)——这四种合同授予子类型。TED 会将早期 eForms 之前的授予表单映射到这些类型,因此覆盖范围可追溯多年(仅 2022 年就有约 29.6 万份 can-standard 公告),授予公告总数超过 280 万份。can-modif(现有合同的修改)和 veat(授予意向)不在默认集合中——如果需要,可按 notice_type 筛选 search_notices。
每条授予响应都会说明以下两个注意事项,因为调用方很容易在这两点上出错:
- 覆盖范围: TED 仅涵盖超过门槛的欧盟采购。低于门槛的国家级合同会发布在各国门户网站上,不会出现在 TED 中——某供应商没有 TED 授予记录,也可能赢得许多规模较小的公共项目。
- 金额: 采用买方公布的金额,以公告自身使用的货币计,通常不含 VAT,且未经 TED 验证。汇总金额会按货币分别求和——不会计算跨货币总额,因为那样得出的数字是编造的。
上游的 winner-name 是一个按语言划分的映射,包含多个数组,列出每位获胜者(每个标段一位,包含联合体成员,也保留重复项)。授予工具会去重并返回完整名单——如果只取第一个值并作为单个 winner 字符串返回,就会悄无声息地遗漏共同获胜者。
值得了解的上游特性
- 仅支持 POST。
GET /v3/notices/search会返回 405。 fields不能为空。 省略该字段会返回 400“Validation error on field fields”,看起来像是访问权限问题,实际并非如此。- 排序不是请求字段。 排序条件要放在查询字符串中:
... SORT BY publication-date DESC。如果不指定,结果就不会按新近程度排序;此前德国建筑招标的首条结果是一份 2016 年的预先信息公告。 - 每个文本字段都是按语言划分的映射。
notice-title包含全部 24 种官方语言,而buyer-name是数组映射。如果将它们原样返回,调用方可能会拿到一份德国招标的拉脱维亚语标题,而且每份公告还会重复产生约 4 KB 的标题数据。 - 真正的标题字段是
title-proc(买方自己的标题)——notice-title是 TED 自动生成的“国家 – CPV 标签 – 买方标题”摘要。请求不存在的字段不会报错,而是直接不返回内容,因此字段名拼写错误看起来就像数据缺失。 - CPV 并不是 01-99 的连续范围。 不存在第 28 大类,而 TED 对不存在的大类会返回
QUERY_UNSUPPORTED_FIELD_VALUE,看起来就像“没有找到结果”。本工具包会先验证大类编号,并列出有效编号。 - 查询中的日期格式为
YYYYMMDD(不是YYYY-MM-DD),返回的日期则带有 UTC 偏移量。
数据源
https://api.ted.europa.eu/v3/notices/search — POST,JSON 专家查询请求体。
文档:https://docs.ted.europa.eu/api/
如果请求一个不受支持的字段,该端点会在 400 错误消息中列出全部 1,830 个受支持的字段名称——这是查找字段最省事的方法,无需猜测。
快速开始
添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):
{
"mcpServers": {
"ted-eu": {
"url": "https://gateway.pipeworx.io/ted-eu/mcp"
}
}
}
此端点实际提供的内容
https://gateway.pipeworx.io/ted-eu/mcp 上的 tools/list 会返回上表中的工具,以及 Pipeworx 共享元工具——ask_pipeworx、
discover_tools、search_within、remember/recall 和网关范围内的其他工具。因此,你看到的工具数量会多于此表:目前,单个工具包端点除了列出自身工具包的工具外,还会列出大约 30 个共享工具。连接的 initialize 响应会说明其确切范围,也是当天情况的权威答案。
这是有意为之,并非意外的多路复用。元工具可让范围受限的连接回答此工具包未涵盖的问题——通过 ask_pipeworx 跨整个目录进行路由——无需你再添加第二个 MCP 服务。目前无法在不包含这些元工具的情况下挂载工具包端点;如果额外的架构定义占用的上下文比路由带来的价值更多,请连接一次完整网关,而不要连接多个工具包端点。
或者,连接完整的 Pipeworx 网关,直接列出每个工具包的所有工具,而不只是此工具包的工具:
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
两个 URL 都连接到同一个网关和相同的 1684+ 个数据源。唯一的区别是直接列出的工具所属工具包不同;无论连接哪一个,ask_pipeworx 都能访问所有工具包。
没有 MCP 客户端?通过 HTTP 调用
curl -X POST https://gateway.pipeworx.io/v1/tools/ted_eu_search_notices \
-H 'Content-Type: application/json' \
-d '{"category":"construction","country":"DEU","limit":25}'
首次调用无需账户。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/ted_eu_search_notices。查找工具:使用 {"query":"..."} 向 POST https://gateway.pipeworx.io/v1/tools/search_packs 发起请求。
独立运行(无需网关账户)
此软件包也可作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经由网关中转:
{
"mcpServers": {
"ted-eu": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-ted-eu"]
}
}
}
或者直接运行,以确认服务能够启动:
npx -y @pipeworx/mcp-ted-eu
它通过 stdin/stdout 使用 MCP 通信,并为仅此工具包的工具响应 initialize/tools/list/tools/call——不包含上文网关连接所提供的任何共享元工具。数据源相同,工具相同,但没有 ask_pipeworx 路由。
使用 ask_pipeworx
你可以不用直接调用工具,而是用通俗的语言提问——这既适用于上文的工具包端点,也适用于完整网关:
ask_pipeworx({ question: "your question about Ted Eu data" })
网关会选择合适的工具并自动填入参数。
更多信息
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。