mcpField
V
vergabe-api: German public procurement notices

vergabe-api: German public procurement notices

远程服务
vergabe-api.applehorsefrog.workers.dev法律与政务05 周前更新

关于 vergabe-api: German public procurement notices

vergabe-api 将德国公共采购公告整理为标准化 JSON,供软件 Agent 和采购工具检索与处理。它提供 CPV、NUTS、截止日期等字段,以及免费示例和按调用付费的查询。

主要功能

  1. 01公告标准化为 JSON
  2. 02按 CPV、NUTS 和日期筛选
  3. 03提供标段、截止日期和授标信息
  4. 04免费统计与示例接口
  5. 05x402 按调用支付

适用场景

  1. 01按地区和采购类别筛选招标
  2. 02查找即将截止的投标机会
  3. 03获取单条公告的完整记录

MCP 相关

提供远程 Streamable HTTP MCP 服务,包含免费示例、统计和 API 说明工具;远程付费工具仅返回支付要求。本地 stdio MCP 服务可用自有钱包按调用支付并执行公告搜索和详情查询。

配置

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

服务地址https://vergabe-api.applehorsefrog.workers.dev/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 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

5
参数类型必填说明
cpvstring否CPV 代码或前缀,例如 72(IT)、45(建筑)

详细介绍

vergabe-api

德国公共采购公告(涵盖欧盟门槛以上和以下),以标准化 JSON API 的形式提供给软件 Agent 和采购工具。通过 x402 按次付费(HTTP 402,USDC)。无需账户、API 密钥或订阅。

基础 URL:https://vergabe-api.applehorsefrog.workers.dev(之后将启用 viono-insights.de 下的品牌域名)。自 2026-09-14 起,款项通过 Base 主网以 USDC 结算;支付协调方为 PayAI。

你将获得什么

德国官方公告服务(Datenservice Öffentlicher Einkauf,eForms-DE)每天发布约 1,000 条公告。原始数据源是每天 20 MB 的 XML 文件 ZIP 包,其中的机构联系方式、标段、截止日期和分类分散在 UBL 扩展中。此 API 会将每条公告转换为一条扁平记录:

字段含义
id, notice_id, version公告 UUID 和版本
published, issue_date导出文件的发布日期、公告中的签发日期
kindcompetition(招标公告)、result(授标公告)、planning(规划)、change(变更)
notice_type, subtype, procedure, legal_basis, natureeForms 代码(cn-standard、open、vgv、works 等)
title, description德语文本,已移除个人联系方式
cpv_main, cpv_additional不含校验位的 CPV 代码
buyer_name, buyer_type, buyer_city, buyer_postal, buyer_nuts, buyer_website招标机构(仅组织级信息)
place_nuts, place_city履行地点
estimated_value, currency如有注明
deadline_date, deadline_time, deadline_kind最早的标段截止日期;tender 或 participation
documents_url, submission_url招标文件所在位置
lots标段数组,包含标题、CPV、NUTS、金额、截止日期、期限
winners, total_awarded适用于授标公告,仅含组织名称
source_urloeffentlichevergabe.de 上的原始公告

某个示例日期(2026-09-10)的覆盖情况:1,067 条公告,589 条招标公告,其中 569 条有提交截止日期,1,036 条包含 CPV,985 条包含 NUTS。

端点

端点价格说明
GET /免费服务描述
GET /openapi.json免费OpenAPI 3.1
GET /v1/stats免费最近 30 天每天的公告数量
GET /v1/sample?cpv=72免费最新的 5 条招标公告,精简字段
GET /v1/notices$0.01筛选列表,最多 100 条记录
GET /v1/notice/{id}$0.002单条完整记录
POST /mcp免费远程 MCP 服务(Streamable HTTP),提供免费工具
GET /.well-known/x402免费x402 发现清单
/v1/notices 的筛选条件

kind(默认为 competition;可选 result、planning、change、all)、cpv(代码或前缀,以逗号分隔:45,7131)、nuts(前缀:DE2,DE1)、q(标题、描述、招标方中的子字符串)、since / until(发布日期)、deadline_after / deadline_before、nature、procedure、legal_basis、buyer_type、min_value、limit(最多 100)、offset(最多 5000)、fields=full(所有列,包括标段)、sort=deadline。

GET /v1/notices?cpv=45,71&nuts=DE2&deadline_after=2026-09-20&limit=20
GET /v1/notices?q=Photovoltaik&since=2026-09-01&fields=full
GET /v1/notices?kind=result&cpv=72&since=2026-09-01

使用 x402 付费

未付款的请求会返回 402,并附带 PAYMENT-REQUIRED 标头,其中说明金额(USDC)、网络和收款地址。任何 x402 客户端都可以自动处理,例如 @x402/fetch:

import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";

const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`); // holds USDC on Base
const fetchWithPay = wrapFetchWithPaymentFromConfig(fetch, {
  schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(account) }],
});
const r = await fetchWithPay("https://vergabe-api.applehorsefrog.workers.dev/v1/notices?cpv=72");
console.log(await r.json());

价格以 USD 计价,并通过 Base(eip155:8453)以 USDC 结算;我们不收取其他费用。在 wrangler.jsonc 中设置 X402_NETWORK=eip155:84532 和 X402_FACILITATOR=https://x402.org/facilitator,即可在 Base Sepolia 上运行同一段代码。

MCP 服务

通过 MCP 客户端(Claude Desktop、Claude Code、Cursor 或任何 MCP 主机)使用数据有两种方式:

远程,仅限免费工具(无需安装):Streamable HTTP 端点 https://vergabe-api.applehorsefrog.workers.dev/mcp,提供 sample_tenders、tender_stats、describe_api。付费工具也会在此列出,但只返回付款要求,因为远程服务没有钱包。

本地,提供付费工具(stdio,Node 20+):客户端从你控制的钱包中按次付款。

{
  "mcpServers": {
    "vergabe": {
      "command": "npx",
      "args": ["-y", "github:applehorsefrog/vergabe-api"],
      "env": { "VERGABE_PAYER_KEY": "0x<private key of a wallet holding USDC on Base>" }
    }
  }
}

工具:search_tenders(每次调用 $0.01,支持 /v1/notices 的所有筛选条件)、get_tender($0.002)、sample_tenders、tender_stats、describe_api(免费)。如果未设置 VERGABE_PAYER_KEY,付费工具会返回 x402 付款要求和 HTTP URL,而不是数据。请为该密钥使用余额较低的专用钱包;服务端绝不会将密钥发送到任何地方,只会为每次调用的确切价格签署 USDC 转账授权(EIP-3009)。源文件:mcp/server.mjs。

数据来源、许可、隐私

数据:Datenservice Öffentlicher Einkauf,https://oeffentlichevergabe.de,以 CC0 1.0 发布。每个响应都带有 X-Data-Source 和 X-Data-License 标头。本仓库中的代码采用 MIT 许可。

导入期间会移除联系人、电子邮件地址、电话号码和传真号码(etl/etl.py),包括结构化字段和自由文本中的内容。仅提供组织层面的数据。如果你发现有遗漏的个人数据,请提交 issue,我们会将其移除。

这是一项技术数据服务,不构成法律建议。投标前必须向源网站核实截止日期和条件。

运行方式

  • src/index.ts:Cloudflare Worker(Hono),使用 @x402/hono 付款中间件、D1(SQLite)数据库和远程 MCP 端点。
  • mcp/server.mjs:本地 MCP 服务(stdio),使用 @x402/fetch 为付费端点付款。
  • etl/etl.py:下载每日 eForms ZIP 文件,使用 lxml 解析、清除个人数据,并写入 INSERT 语句。
  • .github/workflows/daily-etl.yml:每天运行两次 ETL(06:30 和 14:00 UTC),重新导入最近三天的数据,并使用 wrangler d1 execute 加载行数据。

本地开发:

npm install
npx wrangler d1 execute vergabe --local --file=schema.sql
python etl/etl.py --day 2026-09-10 --out etl/out/d.sql && for f in etl/out/d*.sql; do npx wrangler d1 execute vergabe --local --file=$f; done
npx wrangler dev

服务提供方、法律声明、隐私

由 Dr. Josua Decker、Viono Insights(https://viono-insights.de)运营。法律声明(Impressum,§ 5 DDG):https://viono-insights.de/impressum.html,也可通过 GET /impressum 访问。此 API 的隐私声明(GDPR 第 13 条):GET /datenschutz。联系方式:[email protected]。发布本仓库的 GitHub 账户是一个自动化账户,由服务提供方使用 Claude 运营。

说明

本服务是在 Claude 的大量 AI 协助下构建的;服务提供方会对其进行审核并承担责任。欢迎提交 issue 和 pull request;自动化贡献会注明其性质。

评论

支持 Markdown

第一次接触 MCP?

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

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