MCP 服务器

MCP 服务器把德国破产公告直接接入 AI 智能体。Claude、Cursor 或您自己的智能体可以在对话中核查供应商、读取某个程序或监控某位客户,而无需任何人编写 API 客户端。

最后更新: 2026-09-29

申请访问权限

密钥由人工开通。请简要告诉我们您想构建什么以及预计的调用量,通常一个工作日内即可开通。

申请访问权限

简介

Model Context Protocol 是一项开放标准,规定 AI 智能体如何接入外部工具和数据。您不必编写接口,只需把服务器添加到智能体的配置中一次。此后,模型就知道有哪些工具,并在对话需要时自行调用。

我们的服务器提供与 REST API 相同的数据:公告、企业档案、资产负债表数据、统计和监控名单。区别在于表述方式。工具描述的写法,是为了让模型理解何时适合做破产核查、需要追问哪些细节,以及数据的边界在哪里。

服务器地址是 https://germanyinsolvencies.com/api/mcp,使用与 REST API 相同的密钥。两者可以并行使用,您在两边看到的是同一份监控名单。

智能体借助它可以回答的典型问题:“我们的供应商破产了吗?”“我们 40 张未结发票中,哪些受到某个程序的影响?”“本季度巴伐利亚有多少家建筑企业破产?”

获取访问权限

途径与 REST API 相同:密钥由人工开通。请使用联系表单,或写邮件至 [email protected],简要说明您想接入哪个智能体以及它要做什么。

如果您已经有 API 密钥,就不需要第二个:同一个密钥也可以打开 MCP 服务器。如果团队想把服务器交给多人使用,可应要求在一个账户下获得多个密钥,这样就能追溯是谁核查了什么。

连接与传输

服务器通过 Streamable HTTP 提供 MCP,这是当前客户端默认使用的传输方式。无需本地进程,也没有任何东西需要安装。

身份验证使用与 REST API 相同的请求头:X-API-Key,或者使用 Authorization: Bearer。只支持 stdio 的客户端可以通过 mcp-remote 作为桥接来访问服务器,参见下文的 Claude Desktop 配置。

客户端与服务器在连接时协商协议版本。我们支持当前修订版以及上一个修订版,因此客户端升级不会造成硬性中断。

bash 检查可达性
curl https://germanyinsolvencies.com/api/mcp/health

配置

在 Claude Code 中,一条命令就够了。密钥应来自环境变量,而不是剪贴板。

bash Claude Code
claude mcp add --transport http insolvency \
  https://germanyinsolvencies.com/api/mcp \
  --header "X-API-Key: $INSOLVENCY_API_KEY"

Claude Desktop

Claude Desktop 从 claude_desktop_config.json 读取服务器列表。该条目通过 mcp-remote 桥接到 HTTP 传输。

json claude_desktop_config.json
{
  "mcpServers": {
    "insolvency": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://germanyinsolvencies.com/api/mcp",
        "--header", "X-API-Key:${INSOLVENCY_API_KEY}"
      ],
      "env": { "INSOLVENCY_API_KEY": "YOUR_API_KEY" }
    }
  }
}

Cursor 及其他客户端

Cursor、Windsurf、Zed 以及大多数其他客户端可直接使用服务器 URL,并允许自定义请求头,因此不需要桥接。

json .cursor/mcp.json
{
  "mcpServers": {
    "insolvency": {
      "url": "https://germanyinsolvencies.com/api/mcp",
      "headers": { "X-API-Key": "${env:INSOLVENCY_API_KEY}" }
    }
  }
}

添加之后,客户端应显示十一个工具。如果列表仍然为空,几乎总是请求头的问题:密钥过期或拼写错误会得到一个空的工具列表,而不是明显的错误提示。

工具

服务器提供十一个工具。写入类工具会被标明,以便客户端在需要时请求确认。

工具类型说明
search_filingsread按时间段、类型、联邦州、法院或名称搜索公告。每个命中返回简短摘要,全文通过 get_filing 获取。
get_filingread返回一条公告,含全文、法院、案号和类型。
check_counterpartyread核查一家企业的公告,并返回状态、最近一条公告和匹配质量。这是最重要的工具,见下文。
search_companiesread按名称、城市、登记号或状态查找企业档案。
get_companyread返回企业档案及所有关联公告,按时间顺序排列。
get_financialsread返回最近几个会计年度已公布的资产负债表数据。
get_statsread按日、月、联邦州、法院、类型或法律形式统计公告数量。
list_filing_typesread列出九种公告类型,含代码、别名和含义。智能体应调用一次,而不是去猜代码。
list_watchlistread列出被监控的企业及最近一次命中的日期。
watch_companywrite将企业加入监控名单。
unwatch_companywrite将企业从监控名单中移除。

所有读取类工具都是幂等的,可以无需询问直接调用。watch_company 和 unwatch_company 会更改您的账户,并向客户端声明自己是写入类工具。

check_counterparty 详解

真正重要的工具是 check_counterparty。它的 schema 刻意设计得很窄:一个名称或一个登记号,可选的城市和起始日期。模型需要做的决定越少,它编造取值的次数就越少。

json 工具 schema
{
  "name": "check_counterparty",
  "description": "Check whether a German company appears in official insolvency announcements. Use before extending credit, signing a supplier or chasing an overdue invoice. Prefer register number over name when you have it. Never guess a register number.",
  "annotations": { "readOnlyHint": true },
  "inputSchema": {
    "type": "object",
    "properties": {
      "name":           { "type": "string", "description": "Company name as written on the invoice or contract." },
      "city":           { "type": "string", "description": "Registered seat, narrows ambiguous names." },
      "register":       { "type": "string", "description": "e.g. HRB 123456 B" },
      "register_court": { "type": "string", "description": "e.g. Charlottenburg (Berlin)" },
      "since":          { "type": "string", "format": "date", "description": "Only filings on or after this date. Default: 3 years ago." }
    },
    "anyOf": [ { "required": ["name"] }, { "required": ["register"] } ]
  }
}

描述明确告诉模型优先使用登记号,并且绝不要猜测登记号。错误的登记号会让模型对错误的企业自信地给出“没有公告”,这比含糊的回答更糟。

如果名称不唯一,工具不会自行挑选,而是返回带有候选项的错误文本。随后模型会向用户询问城市或登记号。这一行为是有意为之,详见错误处理一节。

不带 since 时,工具回溯三年。更早的程序通常已经结束,与当前决策无关;如果确有关系,请传入更早的日期。

响应格式

工具通过两条通道应答:面向模型的文本块,以及面向客户端的 structuredContent。文本块的措辞使模型无需先行解读,就能直接转述给用户:企业、登记号、阶段、法院、案号、日期。

json check_counterparty 的响应
{
  "content": [
    {
      "type": "text",
      "text": "Musterbau GmbH (HRB 123456 B, Berlin): insolvency proceedings OPENED on 2026-09-28 by Amtsgericht Charlottenburg, case 36a IN 4711/26. Earlier: protective measures on 2026-08-14. Source: official announcement."
    },
    {
      "type": "resource_link",
      "uri": "insolvency://filing/fil_8Kq2Zp4RwT",
      "name": "Announcement 36a IN 4711/26",
      "mimeType": "application/json"
    }
  ],
  "structuredContent": {
    "match": "exact",
    "company_id": "cmp_3n8Kd2ZpQv",
    "status": "opened",
    "filings": [
      { "id": "fil_8Kq2Zp4RwT", "date": "2026-09-28", "type_code": "2" },
      { "id": "fil_2Hd7Vb1Xe", "date": "2026-08-14", "type_code": "0" }
    ]
  },
  "isError": false
}

公告全文以资源链接的形式返回,而不是内嵌。想显示全文的客户端解析该链接;不需要的客户端则能让上下文窗口保持较小。单条公告可能长达数千个字符。

资源

除工具之外,服务器还在 insolvency:// 方案下提供资源。支持资源的客户端可以直接显示它们,或把它们附加给模型,而无需调用工具。

text 资源 URI
insolvency://filing/{id}             one announcement incl. full text
insolvency://company/{id}            company profile and status
insolvency://company/{id}/filings    all announcements of a company
insolvency://company/{id}/financials published balance sheet figures
insolvency://watchlist               your watched companies
insolvency://types                   filing types with codes and aliases

当有新公告涉及被监控的企业时,监控名单资源会随之变化。服务器随后会发送变更通知,客户端便可更新其视图。

提示词

针对重复性任务,服务器提供现成的提示词。它们收集任务所需的信息,然后调用相应的工具。在支持提示词的客户端中,它们会以快捷命令的形式出现。

json 提示词定义
{
  "name": "counterparty_check",
  "description": "Check a list of customers or suppliers for insolvency filings and summarise the risk.",
  "arguments": [
    { "name": "companies", "description": "One company per line: name, city or register number.", "required": true },
    { "name": "since",     "description": "Look-back start date, default 3 years.", "required": false }
  ]
}

目前可用的有 counterparty_check(核查一份企业清单)、weekly_briefing(所选联邦州或行业本周的新公告)和 proceeding_timeline(用通俗语言解释一个程序的历程)。如果您更喜欢自己的流程,可以忽略这些提示词,直接调用工具。

示例对话

实际使用时就是这个样子。智能体核查三个债务人,用通俗的话解释结果,遇到名称有歧义时反问,然后设置监控。

text 对话记录
用户:  能帮我查一下我们最大的三笔未结发票吗?柏林的 Musterbau GmbH、
        Nordlicht Handels GmbH,还有汉堡的 Beispiel Logistik。

智能体:[check_counterparty name="Musterbau GmbH" city="Berlin"]
        [check_counterparty name="Nordlicht Handels GmbH"]
        [check_counterparty name="Beispiel Logistik" city="Hamburg"]

智能体:Musterbau GmbH:已于 2026 年 9 月 28 日开始破产程序
        (AG Charlottenburg,36a IN 4711/26)。债权现在须向破产管理人
        申报,直接收到付款的可能性不大。
        Beispiel Logistik UG:自 2026 年 9 月 22 日起实施保全措施,
        已指定临时管理人。
        Nordlicht Handels GmbH:有两家同名企业,均无公告记录。
        请问您的是哪个城市的?

用户:  汉堡。另外请从现在起监控这三家。

智能体:[watch_company name="Nordlicht Handels GmbH" city="Hamburg"]
        [watch_company company_id="cmp_3n8Kd2ZpQv"]
        [watch_company company_id="cmp_7Yb3Rt5Mn"]
        已完成。一旦出现新公告,您就会收到 Webhook 通知。

关键的一步是第三步:遇到有歧义的名称,智能体选择追问,而不是自行挑选。工具的错误文本正是为此而设计的。

权限

每个密钥都带有权限。默认情况下它可以读取公告、企业和统计数据;写入监控名单需要另行开通。

权限范围含义
filings:read搜索并读取公告。
companies:read企业档案、资产负债表数据和交易对手核查。
stats:read汇总统计。
watchlist:write在监控名单中添加和移除企业。

密钥没有权限的工具,根本不会出现在工具列表中。这比对话中途报错更友好,因为模型这样就不会提出它反正做不到的事情。

错误处理

错误作为普通的工具结果返回,并带有 isError: true,而不是协议错误。文本是写给模型看的,会说明它接下来应该做什么,这样智能体就能在对话中作出合理的反应。

json 名称有歧义时的错误结果
{
  "content": [
    {
      "type": "text",
      "text": "No unique match: 2 companies are called \"Nordlicht Handels GmbH\" (Hamburg, Kiel). Ask the user for the city or the register number and call check_counterparty again. Do not pick one yourself."
    }
  ],
  "isError": true
}

真正的协议错误只会在密钥无效、缺少权限或请求格式错误时出现。内容层面可能出错的一切,例如名称有歧义、ID 未知或时间段过长,都以文本形式返回。

限额

适用与 REST API 相同的限额:每个密钥每分钟 120 次工具调用,公告搜索每次最多 31 天,统计最多 24 个月。如需更高的数值,发一封邮件即可。

超出限额不会产生硬性错误,而是返回一个文本结果,说明何时可以继续。此时智能体应当等待,而不是立刻再次调用。

数据与责任

服务器返回的是公开公告,但其中含有个人数据。适用与 REST API 相同的规则:《破产公告条例》规定的删除期限,不得公布涉及私人个人的公告,不得仅依据这些数据对自然人作出自动化决定。

智能体可以对公告作摘要,但这并不能取代法律咨询。因此工具文本始终会写明法院和案号,方便用户核对原文。我们建议,当您的智能体推导出行动建议时,也提醒用户这一点。

智能体发送给服务器的内容(企业名称、您的引用编号)仅用于回答该请求,不会转交给第三方。如果您的智能体处理有关您客户的数据,我们可提供数据处理协议。

运维

服务器与 REST API 运行在同一套基础设施上。维护窗口会通过邮件通知到所留存的地址,工具 schema 的变更仅限于增量式。

新增工具时,服务器会发送变更通知。对此作出响应的客户端无需重启即可看到该工具。现有工具保持其名称和必填字段不变。

支持

问题、更高限额、针对特定工作流的自定义提示词或工具:请写邮件至 [email protected] 或使用联系表单。

如果您更愿意直接使用 HTTP,同样的数据在API 文档中以 REST 接口的形式给出。两种途径共用密钥、限额和合同。

申请访问权限

密钥由人工开通。请简要告诉我们您想构建什么以及预计的调用量,通常一个工作日内即可开通。

申请访问权限