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 配置。
客户端与服务器在连接时协商协议版本。我们支持当前修订版以及上一个修订版,因此客户端升级不会造成硬性中断。
curl https://germanyinsolvencies.com/api/mcp/health
在 Claude Code 中,一条命令就够了。密钥应来自环境变量,而不是剪贴板。
claude mcp add --transport http insolvency \
https://germanyinsolvencies.com/api/mcp \
--header "X-API-Key: $INSOLVENCY_API_KEY"
Claude Desktop 从 claude_desktop_config.json 读取服务器列表。该条目通过 mcp-remote 桥接到 HTTP 传输。
{
"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、Windsurf、Zed 以及大多数其他客户端可直接使用服务器 URL,并允许自定义请求头,因此不需要桥接。
{
"mcpServers": {
"insolvency": {
"url": "https://germanyinsolvencies.com/api/mcp",
"headers": { "X-API-Key": "${env:INSOLVENCY_API_KEY}" }
}
}
}
添加之后,客户端应显示十一个工具。如果列表仍然为空,几乎总是请求头的问题:密钥过期或拼写错误会得到一个空的工具列表,而不是明显的错误提示。
服务器提供十一个工具。写入类工具会被标明,以便客户端在需要时请求确认。
| 工具 | 类型 | 说明 |
|---|---|---|
| search_filings | read | 按时间段、类型、联邦州、法院或名称搜索公告。每个命中返回简短摘要,全文通过 get_filing 获取。 |
| get_filing | read | 返回一条公告,含全文、法院、案号和类型。 |
| check_counterparty | read | 核查一家企业的公告,并返回状态、最近一条公告和匹配质量。这是最重要的工具,见下文。 |
| search_companies | read | 按名称、城市、登记号或状态查找企业档案。 |
| get_company | read | 返回企业档案及所有关联公告,按时间顺序排列。 |
| get_financials | read | 返回最近几个会计年度已公布的资产负债表数据。 |
| get_stats | read | 按日、月、联邦州、法院、类型或法律形式统计公告数量。 |
| list_filing_types | read | 列出九种公告类型,含代码、别名和含义。智能体应调用一次,而不是去猜代码。 |
| list_watchlist | read | 列出被监控的企业及最近一次命中的日期。 |
| watch_company | write | 将企业加入监控名单。 |
| unwatch_company | write | 将企业从监控名单中移除。 |
所有读取类工具都是幂等的,可以无需询问直接调用。watch_company 和 unwatch_company 会更改您的账户,并向客户端声明自己是写入类工具。
真正重要的工具是 check_counterparty。它的 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。文本块的措辞使模型无需先行解读,就能直接转述给用户:企业、登记号、阶段、法院、案号、日期。
{
"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:// 方案下提供资源。支持资源的客户端可以直接显示它们,或把它们附加给模型,而无需调用工具。
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
当有新公告涉及被监控的企业时,监控名单资源会随之变化。服务器随后会发送变更通知,客户端便可更新其视图。
针对重复性任务,服务器提供现成的提示词。它们收集任务所需的信息,然后调用相应的工具。在支持提示词的客户端中,它们会以快捷命令的形式出现。
{
"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(用通俗语言解释一个程序的历程)。如果您更喜欢自己的流程,可以忽略这些提示词,直接调用工具。
实际使用时就是这个样子。智能体核查三个债务人,用通俗的话解释结果,遇到名称有歧义时反问,然后设置监控。
用户: 能帮我查一下我们最大的三笔未结发票吗?柏林的 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,而不是协议错误。文本是写给模型看的,会说明它接下来应该做什么,这样智能体就能在对话中作出合理的反应。
{
"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 接口的形式给出。两种途径共用密钥、限额和合同。
密钥由人工开通。请简要告诉我们您想构建什么以及预计的调用量,通常一个工作日内即可开通。