MCP 서버는 독일 도산 공고를 AI 에이전트에 직접 연결합니다. Claude, Cursor 또는 자체 에이전트가 API 클라이언트를 따로 작성하지 않고도 대화 중에 공급업체를 확인하고, 절차를 읽고, 고객을 모니터링할 수 있습니다.
최종 업데이트: 2026-09-29
API 키는 수동으로 발급합니다. 무엇을 만들고 싶은지, 어느 정도의 호출량을 예상하는지 간단히 알려 주시면 보통 영업일 기준 하루 이내에 사용하실 수 있습니다.
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입니다. 스키마는 의도적으로 좁게 설계되어 있습니다. 이름 또는 등록번호, 선택적으로 도시와 시작일을 받습니다. 모델이 내려야 할 판단이 적을수록 값을 지어내는 일이 줄어듭니다.
{
"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가 없으면 도구는 3년 전까지 조회합니다. 그보다 오래된 절차는 대개 종결되어 현재의 의사결정과 무관합니다. 관련이 있다면 더 이른 날짜를 지정하세요.
도구는 두 가지 경로로 응답합니다. 모델용 텍스트 블록과 클라이언트용 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"]
완료했습니다. 새 공고가 나오면 바로 웹훅을 받게 됩니다.
중요한 단계는 세 번째입니다. 이름이 모호할 때 에이전트는 고르지 않고 되묻습니다. 도구의 오류 텍스트는 바로 이를 위해 설계되어 있습니다.
각 키에는 권한이 있습니다. 기본적으로 공고, 기업, 통계를 읽을 수 있으며 워치리스트 쓰기는 별도로 활성화해야 합니다.
| 스코프 | 의미 |
|---|---|
| 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와 같은 규칙이 적용됩니다. 도산 공고 명령의 삭제 기간, 사인에 관한 공고의 게시 금지, 이 데이터만을 근거로 한 자연인에 대한 자동화된 결정 금지입니다.
에이전트는 공고를 요약할 수 있지만 법률 자문을 대체하지는 않습니다. 그래서 도구 텍스트에는 항상 법원과 사건번호가 명시되어 있으며, 사용자는 원본을 확인할 수 있습니다. 에이전트가 행동 권고를 도출할 때도 이 점을 함께 안내하도록 하시기를 권장합니다.
에이전트가 서버로 보내는 정보(기업명, 자체 참조값)는 요청에 답하는 데에만 사용되며 제3자에게 전달되지 않습니다. 에이전트가 귀사 고객에 관한 데이터를 처리하는 경우에는 데이터 처리 계약서를 제공해 드립니다.
서버는 REST API와 같은 인프라에서 운영됩니다. 점검 시간은 등록된 주소로 이메일로 안내하며, 도구 스키마의 변경은 추가적인 것으로만 이루어집니다.
새 도구가 추가되면 서버가 변경 알림을 보냅니다. 이에 반응하는 클라이언트는 재시작 없이 새 도구를 볼 수 있습니다. 기존 도구는 이름과 필수 필드를 그대로 유지합니다.
질문, 더 높은 한도, 특정 워크플로용 자체 프롬프트나 도구에 대해서는 [email protected] 또는 문의 양식을 이용해 주세요.
일반 HTTP로 작업하는 쪽을 선호한다면, 같은 데이터가 API 문서에 REST 인터페이스로 정리되어 있습니다. 두 방식은 키, 한도, 계약을 공유합니다.
API 키는 수동으로 발급합니다. 무엇을 만들고 싶은지, 어느 정도의 호출량을 예상하는지 간단히 알려 주시면 보통 영업일 기준 하루 이내에 사용하실 수 있습니다.