关于 Open Contracting
Open Contracting 是一款 MCP 服务,用于搜索按 OCDS 发布的公共采购招标和合同授予数据,覆盖 19 个发布方。它会扩展查询词以适配多语言数据集,便于跨语言检索记录。
主要功能
- 01按文本和筛选条件搜索招标
- 02列出近期采购发布记录
- 03查看采购流程从招标到合同的历史
- 04检查国家覆盖范围和数据时效
- 05按发布方语言扩展搜索词
适用场景
- 01按采购方、主题或金额查找招标
- 02查看新发布的采购记录
- 03追踪采购流程中的招标与授予
- 04查询前确认各国数据覆盖情况
MCP 相关
向 MCP 客户端提供采购搜索、近期发布、流程历史和覆盖范围工具。可通过 stdio 本地运行,或经由提供共享元工具的 Pipeworx 网关使用。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gateway.pipeworx.io/open-contracting/mcpclaude mcp add --transport http pipeworx-io-open-contracting https://gateway.pipeworx.io/open-contracting/mcp{"mcpServers":{"pipeworx-io-open-contracting":{"type":"http","url":"https://gateway.pipeworx.io/open-contracting/mcp"}}}在 Cursor 中打开{"servers":{"pipeworx-io-open-contracting":{"type":"http","url":"https://gateway.pipeworx.io/open-contracting/mcp"}}}在 VS Code 中打开{"mcpServers":{"pipeworx-io-open-contracting":{"type":"http","url":"https://gateway.pipeworx.io/open-contracting/mcp"}}}{"mcpServers":{"pipeworx-io-open-contracting":{"serverUrl":"https://gateway.pipeworx.io/open-contracting/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
@pipeworx/open-contracting
Open Contracting MCP——国际公共采购:依据 OCDS(Open Contracting Data Standard,开放合同数据标准)发布的政府招标和合同授予信息。 每周从 OCP Data Registry 刷新数据,镜像 19 个国家和地方发布者发布的 OCDS 批量数据——涵盖 838,000 多个采购流程。
隶属于 Pipeworx——一个将 AI Agent 连接到 1683 多个实时数据源的 MCP 网关。
工具
oc_tender_search(query, country, status, category, min_value, days, limit)— 对招标标题、买方和描述进行全文搜索。参见 语言匹配——即使数据不是英语,也可以使用英语查询。oc_recent(country, days, limit)— 按时间从新到旧列出发布内容,查看“刚刚发布”的信息。oc_process_history(ocid)— 按顺序列出某个采购流程的所有发布内容,展示从招标 → 授标 → 合同的进展。oc_coverage()— 按国家列出发布者、发布内容和流程数量,以及最新发布内容的新鲜度。先调用此工具,了解实际可用的数据。
身份验证
调用者无需身份验证。网关会注入此工具包的数据凭据——它通过 PostgREST 读取 OCDS 批量公开数据,因此查询会在同一个底层数据存储中执行,而不必依赖 19 个上游 API 同时正常运行。
此处的措辞应描述返回的内容,而非数据的提供来源:pnpm check:hosting-claims 会在已发布文案声称我们持有上游数据副本时导致构建失败,而此文件也会发布(它会生成 docs/reference/open-contracting/)。2026-08-23,这项检查连续九次阻止 main 分支的推送。
语言匹配
19 个发布方中,只有 7 个用英语发布招标文本。 其余发布方使用自己的语言,而工具描述和 country 参数都是英文,因此用英文提问过去会悄无声息地返回零条结果:
{"query":"Ministry of Health","country":"Dominican Republic"} 返回了 40,740 个流程中的 0 条,而 "Ministerio de Salud" 则返回了记录。
| 语言 | 发布方 |
|---|---|
| 西班牙语 | Dominican Republic、Peru、Uruguay、Honduras、Guatemala、Mexico (Oaxaca)、Argentina (Mendoza) |
| 阿尔巴尼亚语 | Albania、Kosovo |
| 克罗地亚语 | Croatia |
| 意大利语 | Italy (ANAC) |
| 泰语 | Thailand (Bangkok) |
| 英语 | Kenya、Nigeria、Ghana、Zambia、Liberia、Rwanda、Tanzania |
oc_tender_search 现在会扩展查询,而不是翻译查询。你传入的短语始终会被搜索;此外,还会搜索所筛选 country 对应语言中的同义词,这些同义词来自买方和主题词表,均取自这些语料库的实际用词(ministry / ministerio / ministria / ministarstvo / ministero / กระทรวง,以及其他约 45 个词)。所有拼写形式都会放入一个 PostgREST or=(...) 中,这就是一个 SQL 谓词——各个分支会合并,因此即使某条记录同时匹配多个分支,也只会返回一次,并且不会进行第二次往返请求。
以下三点值得了解:
- 只扩展,不替换。 这些语料库语言混杂,并非始终只使用一种语言,因此若以某种方式重写查询,就会漏掉用另一种语言归档的内容。使用母语查询仍然有效,而且只会增加结果。
- 查找是双向的,也能解决重音符号问题。 调用者输入
Ministerio de Educacion时,也能找到存储的MINISTERIO DE EDUCACIÓN,因为无重音符号的西班牙语词元会通过同一张表匹配到带重音符号的存储形式。这样每个模式仍然完全采用字面匹配,因此三元组索引仍然适用。 - 会说明搜索了什么。 响应中包含
query_match.searched(搜索的拼写形式)和query_match.publisher_language。如果没有结果,响应会返回一个注明发布方语言的hint,而不是只返回count: 0,让调用者误以为数据不存在,尽管实际上数据是存在的。
拼写形式中的 * 表示词间通配符,因此 ministerio*salud 可以匹配 MINISTERIO DE SALUD PÚBLICA。对于两个词的短语,会同时尝试两种词序,因为不同语言中的词序可能相反(“road construction”归档为“construcción de carreteras”)。
对于英语发布方,不会替换词汇,只会处理连接词的容错和词序,因此 Ministry Health 和 health ministry 都能匹配到 MINISTRY OF HEALTH。
数据来源
- OCP 数据注册表(批量 OCDS 下载):https://data.open-contracting.org/
- Open Contracting 数据标准:https://standard.open-contracting.org/
- 发布方包括 Guatecompras (GT)、OECE (PE)、DGCP (DO)、ARCE (UY)、ONCAE (HN)、ANAC (IT)、Narodne Novine (HR)、PPRC (XK)、PPC (AL),以及 KE、NG、GH、ZM、LR、RW、TZ 的国家采购主管部门。
快速开始
添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):
{
"mcpServers": {
"open-contracting": {
"url": "https://gateway.pipeworx.io/open-contracting/mcp"
}
}
}
此端点实际提供的内容
https://gateway.pipeworx.io/open-contracting/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 都连接到同一个网关和相同的 1683+ 个数据源。唯一的区别在于直接列出的是哪个工具包的工具;无论连接哪一个,ask_pipeworx 都可以访问所有工具。
没有 MCP 客户端?通过 HTTP 调用
curl -X POST https://gateway.pipeworx.io/v1/tools/oc_tender_search \
-H 'Content-Type: application/json' \
-d '{"query":"Ministry of Health","country":"Dominican Republic","limit":5}'
首次调用无需账户。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/oc_tender_search。查找工具:使用 {"query":"..."} 调用 POST https://gateway.pipeworx.io/v1/tools/search_packs。
独立运行(无需网关账户)
此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经过网关往返:
{
"mcpServers": {
"open-contracting": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-open-contracting"]
}
}
}
或者直接运行,以确认它能够启动:
npx -y @pipeworx/mcp-open-contracting
它通过 stdin/stdout 使用 MCP 通信,并针对仅限此工具包的工具响应 initialize/tools/list/tools/call——不包含上述网关连接额外提供的共享元工具。来源相同,工具相同,但没有 ask_pipeworx 路由。
使用 ask_pipeworx
你可以用通俗英语提问,而不是直接调用工具——此功能既适用于上面的工具包端点,也适用于完整网关:
ask_pipeworx({ question: "your question about Open Contracting data" })
网关会选择合适的工具并自动填入参数。
更多信息
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。