mcpField
T
Ted Eu

Ted Eu

远程服务
pipeworx.io法律与政务15 周前更新

关于 Ted Eu

Ted Eu 为 MCP 客户端提供 TED 的欧盟公共采购公告与授标数据查询,覆盖各成员国的采购机构。它支持按类别、国家、日期和供应商等条件检索,并查看公告及授标记录。

主要功能

  1. 01按条件搜索采购公告
  2. 02获取公告完整描述
  3. 03将类别词转换为 CPV 代码
  4. 04搜索授标结果与中标方
  5. 05查看供应商及采购方记录

适用场景

  1. 01寻找特定国家或类别的招标机会
  2. 02核对公告详情与投标截止日期
  3. 03调查供应商的历史中标记录
  4. 04分析采购方的授标对象和类别

MCP 相关

向 MCP 客户端提供 TED 公告及授标数据查询工具,可通过 Pipeworx 网关或本地 stdio MCP 服务使用。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.pipeworx.io/ted-eu/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

47
参数类型必填说明
qstring否question 的别名。
askstring否question 的别名。
textstring否question 的别名。
inputstring否question 的别名。
packsarray否可选。将路由限制为这些包的 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(绝不会返回空答案)。
querystring否question 的别名。
promptstring否question 的别名。
messagestring否question 的别名。
questionstring是用自然语言表达的问题或请求。支持 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_typecn-standard 招标公告 · can-standard 授标公告 · pin-only 预先信息公告
urlted.europa.eu 上的公告

结果封装中包含 total、partial 和 sorted_by。partial: true 表示 TED 超时并返回了不完整的结果集 — 计数和总额只是下限,并非完整答案。

自由文本

query 通过 TED 的 FT 运算符搜索完整公告,而不只是标题。搜索会逐步放宽:

  1. 将整个字符串作为精确短语搜索;
  2. 将前三个词用 AND 连接,在任意位置搜索;
  3. 将两个最具特异性的词用 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。