MCPサーバー

MCPサーバーは、ドイツの倒産公告をAIエージェントに直接つなぎます。Claude、Cursor、または自作のエージェントが、会話の中で仕入先を調べたり、手続の内容を読んだり、顧客を監視したりできます。APIクライアントを書く必要はありません。

最終更新: 2026-09-29

アクセスを申請する

キーは一件ずつ手作業で発行しています。作りたいものと想定ボリュームを簡単にお知らせください。通常は1営業日以内に利用可能になります。

アクセスを申請する

はじめに

Model Context Protocolは、AIエージェントが外部のツールやデータにアクセスするためのオープンな標準です。インターフェースをプログラミングする代わりに、サーバーをエージェントの設定に一度追加するだけです。それ以降、モデルはどんなツールがあるかを把握し、会話で必要になったときに自分で呼び出します。

このサーバーは、REST APIと同じデータを公開しています。公告、企業プロフィール、決算数値、統計、ウォッチリストです。違いは見せ方にあります。ツールの説明は、倒産チェックがいつ意味を持つのか、どの情報を確認しなければならないのか、データの限界はどこにあるのかを、モデルが理解できるように書かれています。

アドレスは https://germanyinsolvencies.com/api/mcp です。REST APIと同じキーを使います。両方を並行して運用すれば、どちらでも同じウォッチリストが見えます。

エージェントがこれで答えられる典型的な質問の例です。「うちの仕入先は倒産していますか」「未払いの請求書40件のうち、手続の影響を受けているのはどれですか」「今四半期にバイエルン州で破綻した建設会社は何社ですか」

アクセス

手順はREST APIと同じで、キーは手作業で発行します。お問い合わせフォームか [email protected] 宛てに、どのエージェントを接続したいか、何をさせたいかを簡単にお知らせください。

すでにAPIキーをお持ちの場合、2つ目は不要です。同じキーでMCPサーバーにも接続できます。サーバーを複数のメンバーに配りたいチームには、ご要望に応じて1つのアカウントに複数のキーを発行できます。誰が何をチェックしたかを追跡できるようにするためです。

接続とトランスポート

サーバーは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なら、コマンド1つで済みます。キーはクリップボードではなく、環境変数から渡すようにしてください。

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}" }
    }
  }
}

追加後、クライアントには11個のツールが表示されるはずです。一覧が空のままなら、ほぼ確実にヘッダーが原因です。キーが期限切れだったり打ち間違えていたりすると、目に見えるエラーではなく、空のツール一覧になります。

ツール

サーバーは11個のツールを提供します。書き込みを行うツールにはその旨が明示されるため、クライアントは必要に応じて確認を求められます。

ツール種類説明
search_filingsread期間、種別、連邦州、裁判所、名称で公告を検索します。ヒットごとに短い要約を返し、全文は get_filing で取得します。
get_filingread全文、裁判所、事件番号、種別つきで1件の公告を返します。
check_counterpartyread1社について公告の有無をチェックし、ステータス、直近の公告、一致の精度を返します。最も重要なツールです。詳しくは下記を参照してください。
search_companiesread名称、市区町村、登記番号、ステータスから企業プロフィールを探します。
get_companyread紐づくすべての公告を時系列で並べた企業プロフィールを返します。
get_financialsread直近の会計年度について公開された決算数値を返します。
get_statsread日、月、連邦州、裁判所、種別、法人格ごとに公告を集計します。
list_filing_typesread9つの公告種別をコード、エイリアス、意味つきで返します。エージェントはコードを推測せず、一度これを呼び出してください。
list_watchlistreadウォッチ中の企業を、最終ヒット日つきで一覧表示します。
watch_companywrite企業をウォッチリストに追加します。
unwatch_companywrite企業をウォッチリストから削除します。

読み取り用のツールはすべて冪等で、確認なしに呼び出して構いません。watch_company と unwatch_company はアカウントの内容を変更するため、クライアントに書き込みツールであることを自己申告します。

check_counterpartyの詳細

中心となるツールは check_counterparty です。スキーマは意図的に絞ってあり、名称または登記番号、任意で市区町村と開始日を受け取ります。モデルが決めることが少ないほど、値をでっち上げる頻度も下がります。

json ツールのスキーマ
{
  "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"] } ]
  }
}

説明文では、登記番号を優先し、決して推測で入れないようにモデルに明示しています。誤った登記番号を渡すと、別の会社について自信たっぷりに「公告なし」と答えてしまいます。これは曖昧な答えよりも悪い結果です。

名称が一意でない場合、ツールは1つを選ぶのではなく、候補つきのエラーテキストを返します。モデルはそこでユーザーに市区町村か登記番号を尋ねます。この挙動は意図したもので、エラー処理のセクションでも扱っています。

since を指定しない場合、ツールは3年前までさかのぼります。それより古い手続は通常すでに終結しており、現在の判断には関係しません。関係する場合は、より早い日付を渡してください。

レスポンスの形式

ツールは2系統で応答します。モデル向けのテキストブロックと、クライアント向けの 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
}

公告の全文は、埋め込みではなくリソースリンクとして返ります。本文を表示したいクライアントはリンクを解決し、そうでないクライアントはコンテキストウィンドウを小さく保てます。1件の公告が数千文字になることもあります。

リソース

サーバーはツールに加えて、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(手続の経過を平易な言葉で説明)です。独自の流れのほうがよければ、プロンプトは使わず、ツールを直接呼び出してください。

会話の例

実際の使用感はこのようになります。エージェントは債務者3社をチェックし、結果を平易な言葉で説明し、名称が曖昧なところは聞き返し、最後にモニタリングを設定します。

text トランスクリプト
ユーザー:   未払いの請求書のうち上位3件をチェックしてもらえますか。
            ベルリンの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:同名の会社が2社あり、どちらにも
            公告はありません。どちらの市区町村の会社でしょうか。

ユーザー:   ハンブルクです。それと、この3社を今後すべてウォッチしてください。

エージェント: [watch_company name="Nordlicht Handels GmbH" city="Hamburg"]
            [watch_company company_id="cmp_3n8Kd2ZpQv"]
            [watch_company company_id="cmp_7Yb3Rt5Mn"]
            完了しました。新しい公告が出たらWebhookでお知らせします。

重要なのは3つ目の手順です。名称が曖昧なとき、エージェントは自分で選ばずに質問します。ツールのエラーテキストは、まさにそのために設計されています。

権限

各キーには権限が設定されています。既定では公告、企業、統計を読み取れます。ウォッチリストへの書き込みは、別途有効にする必要があります。

スコープ意味
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回のツール呼び出し、公告の検索は1回あたり最大31日、統計は24か月までです。より高い値をご希望の場合は、メールでご連絡ください。

上限を超えてもハードエラーにはならず、いつ再開できるかを示すテキスト結果が返ります。エージェントはすぐに再度呼び出さず、待つようにしてください。

データと責任

サーバーが返すのは公開された公告ですが、そこには個人情報が含まれます。REST APIと同じルールが適用されます。倒産公告に関する政令の削除期間、私人に関する公告の非公表、このデータだけに基づく自然人に関する自動的な判断の禁止です。

エージェントは公告を要約できますが、法的助言の代わりにはなりません。そのため、ツールのテキストには常に裁判所と事件番号が含まれており、ユーザーが原本を確認できます。エージェントが対応策を提案する場合にも、この点を併せて伝えるようにすることをお勧めします。

エージェントがサーバーに送る内容(企業名、自社の参照番号)は、リクエストへの回答にのみ使用し、第三者には渡しません。エージェントがお客様の顧客に関するデータを処理する場合は、データ処理契約をご用意しています。

運用

サーバーはREST APIと同じインフラで稼働しています。メンテナンス期間は、登録済みのアドレスにメールでお知らせします。ツールのスキーマの変更は、追加的なものに限ります。

新しいツールが追加されると、サーバーは変更通知を送ります。それに対応するクライアントでは、再起動しなくても新しいツールが見えるようになります。既存のツールは、名前と必須フィールドを変更しません。

サポート

ご質問、上限の引き上げ、特定のワークフロー向けの独自プロンプトやツールのご要望は、[email protected] またはお問い合わせフォームまでご連絡ください。

素のHTTPで利用したい場合は、同じデータをRESTインターフェースとしてAPIドキュメントにまとめています。キー、上限、契約はどちらも共通です。

アクセスを申請する

キーは一件ずつ手作業で発行しています。作りたいものと想定ボリュームを簡単にお知らせください。通常は1営業日以内に利用可能になります。

アクセスを申請する