mcpField
I
Italy Tenders

Italy Tenders

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

关于 Italy Tenders

Italy Tenders 是面向意大利公共采购公告的 MCP 服务,数据来自 ANAC 的月度开放数据,并覆盖近期滚动时间窗口。它支持按关键词、CPV、采购方、地区和日期搜索,也可按 CIG 获取记录详情。

主要功能

  1. 01按关键词、CPV、采购方和地区搜索
  2. 02按发布日期范围筛选公告
  3. 03按 CIG 获取公告详情
  4. 04返回金额、状态、截止日期和结果
  5. 05标示已加载数据的时间窗口

适用场景

  1. 01查找特定地区或机构发布的采购公告
  2. 02按 CPV 分类筛选招标机会
  3. 03核对单个 CIG 公告及其结果
  4. 04区分无匹配结果与日期范围未加载

MCP 相关

向 MCP 客户端提供 ANAC 意大利采购公告的搜索和详情工具。该包依赖 Pipeworx 网关中的数据存储;独立安装没有可查询数据。

配置

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

服务地址https://gateway.pipeworx.io/italy-tenders/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 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

43
参数类型必填说明
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/italy-tenders

来自 ANAC(Autorità Nazionale Anticorruzione)的意大利公共采购招标公告。该机构是负责运营意大利招标/合同登记库的国家反腐败主管部门。Fleet #3091。

属于 Pipeworx —— 一个将 AI Agent 连接到 1807+ 个实时数据源的 MCP 网关。这是一个独立的非官方集成,与上游提供方无关联、未获其认可,也并非由其发布。

工具

  • it_tender_search(query?, cpv?, buyer?, province?, date_from?, date_to?, limit?) -- 按自由文本关键词(标题 + CPV 类别描述)、CPV 分类代码/前缀、采购方(合同授予机构)名称子串、意大利省份和发布日期范围搜索招标公告(默认为最近 90 天)。返回每条公告的 CIG、标题、采购方、省份/大区、合同类型、金额(EUR)、状态、CPV、发布日期、投标截止日期,以及 ANAC 已记录的中标结果。
  • it_tender_detail(cig) -- 根据 CIG(Codice Identificativo Gara)查询单条公告的完整记录,包括采购方税号、成本中心、程序类型、实施方式、标段数和结果通报日期。

每个响应都包含 source、source_url、licence、data_as_of,以及(在 it_tender_search/无匹配结果的响应中)window_from/window_to —— 即此数据包当前持有数据的月份范围 —— 以便调用方区分“该主题没有招标”与“未加载该日期范围的数据”。

身份验证

无需密钥。这些工具只能通过持有数据的 Pipeworx 网关提供服务;独立安装没有可读取的数据,因此每个工具都会返回清晰的“store is not bound in this runtime”错误,而不是空列表。

数据来源

  • Autorità Nazionale Anticorruzione (ANAC) —— 意大利国家反腐败主管部门,负责运营该国公共采购公告登记库。ANAC 将登记库作为开放数据发布(dati.anticorruzione.it,一个 CKAN 门户),但仅提供每月批量数据:所有合同资源的 datastore_active: false(不支持服务器端搜索/筛选),因此此数据包会根据 ANAC 自己的“cig-YYYY”月度 CSV 构建数据存储(scripts/italy-tenders/load-data.mjs),而不是逐请求代理。ANAC 唯一提供的实时端点是按单个 CIG 查询,且没有发现路径 —— 无法用于关键词/采购方/CPV/日期搜索,而这正是此数据包提供的功能。

    许可(逐字引用自 ANAC 自有 CKAN package_show API,已于 2026-10-15 实时核验): “cig-YYYY”软件包报告 "license_title": "Creative Commons Attribution Share-Alike 4.0"、"license_id": "CC-BY-SA-4.0";每月资源还额外包含 "license_type": "https://w3id.org/italia/controlled-vocabulary/licences/A31_CCBYSA40"。 CC-BY-SA-4.0 明确允许重复使用和再分发,但须注明出处并以相同方式共享 —— “镜像需要获取重复使用授权”规则(mirror-needs-grant-proxy-does-not,Bruce,2026-09-08)不适用于此情况,因为许可中已包含授权。每个响应的 source/source_url 字段都会注明出处。

已知局限——扩展此数据包前请先阅读

此数据包保存的是滚动的近期数据窗口,而非 ANAC 的完整历史记录。 cig 登记数据可追溯至 2007 年(ANAC 门户上提供 cig-2007 至 cig-2025 的独立年度数据集);仅一个月的 CSV 就有约 11.5 万至 12 万行/未压缩约 100 MB(根据 2025 年 9 月的实时测量)。将约 19 年的完整历史记录载入一个 D1 数据库,其规模将远超此处所有其他由存储支持的数据包。每次无匹配结果时,it_tender_search/it_tender_detail 都会报告已载入的数据窗口(window_from/window_to,取自 it_meta 表),因此调用方可以区分确实没有结果与日期超出已载入范围。

ANAC 提供的这份数据的 OCDS 版本(也是按月发布的 ocds-appalti-ordinari-YYYY)已检查过,但不适用于此数据包的刷新:单月 JSON 发布包有 748 MB 至 3.1 GB(根据 2026-03 和 2025-09 的实时测量),远大于此处用于相同公告的 CSV cig-YYYY 资源。另请注意:mcps/open-contracting 中已有 ANAC/意大利数据的独立且更新频率较低的覆盖(OCP Data Registry 自有的 18 个国家每周更新的 OCDS 镜像)。此数据包构建时已实时确认该覆盖存在,但数据陈旧(oc_coverage 中未记录意大利的 latest_release,抽样行的日期为 2021-2022 年)。这正是此数据包要弥补的实际缺口:为 ANAC/意大利提供真正近期的数据窗口。

未接入 it_tender_detail 的实时补充查询功能(getSmartCig)。 先前废弃的构建版本(fleet #3088)提到可通过 api.anticorruzione.it/apicig/.../getSmartCig/{cig} 实时查询单个 CIG;此构建期间尝试的所有路径变体均返回 404,ANAC 自己的 API 网关(api.anticorruzione.it/apicig/swagger/v1/swagger.json)也返回 404,因此无法确认准确的实时路径。这并非关键问题:已载入的 cig-YYYY CSV 已包含每个 CIG 的完整公告详情(状态、结果、取消字段),所以 it_tender_detail 完全可以从存储中回答。如果之后找到可用的实时端点,它只会补充 ANAC 在每月刷新之间公布的信息。

刷新数据

node scripts/italy-tenders/load-data.mjs --months 2026-09,2026-10 [--retain-from 2025-11] [--init-schema on the very first run] -- 从 ANAC 下载每个指定月份的 cig-YYYY CSV zip,流式处理并将行写入 D1(以 cig 为键,执行 INSERT OR REPLACE,因此重新载入已存在的月份只会刷新 ANAC 更新过的行——例如在发布数周后才公布的结果)。需要先登录 Pipeworx Cloudflare 账户的 wrangler,并安装 unzip CLI。

GitHub 工作流 .github/workflows/italy-tenders-refresh.yml 每月运行一次,重新拉取当月及之前两个月的数据(以捕获延迟公布的结果更新),并将 --retain-from 向前滚动,避免表无限增长。

部署前冒烟测试(无需生产环境 D1)
node --experimental-strip-types scripts/italy-tenders/build-local-sqlite.mjs \
  --csv <a downloaded cig_csv_YYYY_MM.csv> --ym YYYY-MM --out /tmp/italy-tenders.sqlite
node --experimental-strip-types scripts/italy-tenders/smoke-local.mjs /tmp/italy-tenders.sqlite

此测试通过 D1Like 适配器,使用真实 ANAC 月度 CSV 构建的本地 SQLite 文件,对此数据包的实际 callTool() 进行测试——结构与 scripts/fracfocus/{build-local-sqlite,smoke-local}.mjs 相同。

快速开始

添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):

{
  "mcpServers": {
    "italy-tenders": {
      "url": "https://gateway.pipeworx.io/italy-tenders/mcp"
    }
  }
}
此端点实际提供的内容

https://gateway.pipeworx.io/italy-tenders/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 都会访问同一网关和同样的 1807+ 个数据源。唯一的区别是直接列出哪个工具包的工具;无论连接哪一个,ask_pipeworx 都能访问所有工具包的工具。

没有 MCP 客户端?通过 HTTP 调用

curl -X POST https://gateway.pipeworx.io/v1/tools/it_tender_search \
  -H 'Content-Type: application/json' \
  -d '{"buyer":"COMUNE DI MILANO","date_from":"2025-12-01","date_to":"2025-12-31","limit":5}'

首次调用无需账号。查看任意工具:GET https://gateway.pipeworx.io/v1/tools/it_tender_search。查找工具包:使用 {"query":"..."} 调用 POST https://gateway.pipeworx.io/v1/tools/search_packs。

独立运行(无需网关账号)

此软件包也可作为本地 stdio MCP 服务运行——无需 Pipeworx 账号,也无需通过网关往返:

{
  "mcpServers": {
    "italy-tenders": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-italy-tenders"]
    }
  }
}

也可以直接运行,以确认其能正常启动:

npx -y @pipeworx/mcp-italy-tenders

它通过 stdin/stdout 使用 MCP,并响应 initialize/tools/list/tools/call,仅提供此工具包的工具——不包含上述网关连接会添加的共享元工具。使用相同的源码和工具,但不支持 ask_pipeworx 路由。

使用 ask_pipeworx

你可以用通俗的英语提问,而不是直接调用工具——在上述工具包端点和完整网关上都可以这样做:

ask_pipeworx({ question: "your question about Italy Tenders data" })

网关会选择合适的工具,并自动填入参数。

更多内容

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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