mcpField
D
Danish annual reports (CVR)

Danish annual reports (CVR)

ローカル
github.com金融データ14 週間前に更新

Danish annual reports (CVR) について

デンマーク商業庁が公開する企業のXBRL年次報告書を読み取るMCPサーバーです。当期・過去の財務数値と報告書のタグ付き事実を提供し、欠落や値の不一致は推測せず注記します。

主な機能

  1. 01名称またはCVRで企業検索
  2. 02公開申告書の一覧表示
  3. 03当期と前年度の数値取得
  4. 04複数年の財務履歴比較
  5. 05報告書のタグ付き事実取得
  6. 06グループと親会社の数値を分離

活用シーン

  1. 01デンマーク企業の最新財務状況の確認
  2. 02年度ごとの報告数値の比較
  3. 03年次報告書からタグ付き明細を取得

MCP 対応

企業検索、申告書の閲覧、財務数値やタグ付き事実の取得に使える読み取り専用ツールを5つ、MCPクライアントに提供します。stdioで動作し、企業名検索にはCVR認証情報が別途必要です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"mikkelmanniche-dk-dk-regnskab": {
"command": "npx",
"args": [
"-y",
"dk-regnskab-mcp"
],
"env": {
"CVR_USER": "<CVR_USER>",
"CVR_PASSWORD": "<CVR_PASSWORD>"
}
}
}
}
起動コマンドnpx -y dk-regnskab-mcp
設定が必要な環境変数
CVR_USEROptional. CVR register system-to-system username, only needed for search_company.
CVR_PASSWORDシークレットOptional. CVR register system-to-system password, only needed for search_company.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmdk-regnskab-mcp0.3.2

ツール

5

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
limitintegerいいえ返す会社数の上限。
querystringはい会社名またはその一部。例:"Carlsberg"、"lego a/s"。8 桁の CVR 番号を指定すると、その会社を検索します。

詳細

dk-regnskab-mcp

CI Release License: MIT

Claude(または任意の MCP クライアント)から、デンマーク企業の公開年次報告書にアクセスできます。デンマーク企業庁(Erhvervsstyrelsen)に提出された XBRL ファイリングを直接読み取り、最新年度とその前年度の主要数値を取得します。API キーは不要です。

小規模企業(デンマーク会計基準)と上場企業(IFRS/ESEF、2015 年まで遡及)に対応し、グループ報告書ではグループと親会社の数値を分けて表示します。また、推測で補うのではなく、欠落がある場合はその理由を説明します。実際の約 300 件のファイリングを使って動作確認済みです。

「CVR 24256790 の昨年の売上高と自己資本はいくらで、どのように変化しましたか?」

クイックスタート

Node.js 22.18 以降が必要です。API キーは不要です。

Claude Code

claude mcp add dk-regnskab -- npx -y dk-regnskab-mcp

Claude Desktop:claude_desktop_config.json に次の内容を追加します。

{
  "mcpServers": {
    "dk-regnskab": { "command": "npx", "args": ["-y", "dk-regnskab-mcp"] }
  }
}

Cursor:同じブロックを ~/.cursor/mcp.json(またはプロジェクト内の .cursor/mcp.json)に記述します。その他の MCP クライアントでは、stdio 経由で npx -y dk-regnskab-mcp を実行します。

ソースから実行

git clone https://github.com/mikkelmanniche-dk/dk-regnskab-mcp
cd dk-regnskab-mcp && npm install && npm run build
claude mcp add dk-regnskab -- node /absolute/path/to/dk-regnskab-mcp/dist/index.js

ツール

ツール入力戻り値
search_companyquery(会社名または CVR 番号)、任意の limitCVR 番号、ステータス、会社種別、業種、住所、従業員規模を含む該当企業。営業中で、名前が完全一致し、規模が大きい企業が先に表示されます。CVR 認証情報が必要です。以下を参照してください
list_filingscvr、任意の limit(1–50)、任意の year公開ファイリングを新しい順に表示し、文書へのリンクを含みます
get_financialscvr、任意の year(報告期間が終了する年)、任意の scope(group または parent)会社名、期間、通貨、監査人、主要数値(当年度と前年度)、グループ報告書かどうか、欠落に関する注記、出典文書の URL
get_financials_historycvr、任意の years(1–15)、任意の scope報告年度ごとの主要数値を新しい順に表示します
get_report_factscvr、任意の year、scope、match(概念名の一部)、limit年次報告書内でタグ付けされたすべての数値とテキスト(人件費や配当など)

すべてのツールは読み取り専用で、出力スキーマを宣言し、構造化コンテンツを返します。

主要数値:売上高、売上総利益、営業利益、税引前利益、当期利益、平均従業員数、総資産、流動資産、現金、自己資本、負債。

会社名検索(任意)

search_company は CVR 登録簿を使用します。この登録簿の利用にはシステム間認証情報が必要です。認証情報は無料で取得できます。デンマーク企業庁に申請し、サーバーに渡してください。

claude mcp add dk-regnskab -e CVR_USER=... -e CVR_PASSWORD=... -- npx -y dk-regnskab-mcp

それ以外の機能は認証情報なしで動作します。ファイリング索引と同様に、登録簿はプレーン HTTP 経由でのみ応答するため、認証情報は暗号化されずに送信される点にご注意ください。認証情報でアクセスできるのは公開企業データの読み取りのみです。

仕組み

flowchart LR
  C[Claude / MCP client] -- stdio --> S[dk-regnskab-mcp]
  S -- "search by CVR" --> I[(distribution.virk.dk<br/>filing index)]
  S -- "download XBRL (gzip)" --> D[(Filing documents)]
  S --> P[Parse contexts & facts<br/>by namespace, not prefix]
  P --> F[Key figures + notes]

対応している落とし穴

実際のデンマークの申告書は、分類体系から想像されるより複雑です。このパーサーは実際の申告書をもとに開発されました。

  • ディメンション別の数値は合計ではありません。 申告書では、純資産が合計として一度報告され、さらに構成要素(資本金、利益剰余金)ごとにも報告されます。ディメンションのないコンテキストだけを使用するため、資本金が純資産として報告されることはありません。
  • 値が競合する場合。 同じ事実と期間について、異なる値を2つ報告する申告書があります(例:従業員数が0人と1人)。推測で決めず、注記を添えて数値を空欄にします。
  • 売上高がないのは、たいてい法的に認められています。 小規模企業(報告クラスB)の多くは、売上高を省略して売上総利益を報告できます。結果にはその旨が示されます。
  • 申告書によって名前空間のプレフィックスが異なるため、名前空間 URI で概念を照合します。
  • 圧縮されていることが明示されていない gzip 文書。 マジックバイトで検出します。
  • 「AARSRAPPORT」という名前の文書に、必ずしも数値が含まれているとは限りません。 申告書内のすべての XML 文書を解析し、最も多くの数値が得られた文書を採用します。
  • グループ報告書には2組の数値が含まれます。 親会社の報告書には連結グループの数値も含まれていることが多く、デンマーク GAAP と IFRS では、それらを示す方法が逆になっています。デフォルトではグループの数値を返します。scope: "parent" を指定すると、親会社単体の数値を返します。取り違えると、グループの損失が親会社の利益として扱われることがあります。
  • 貸借対照表のチェック。 選択した対象範囲で、総資産が負債と純資産の合計と一致しない場合、結果にその旨が示されます。
  • 通期と並んで第4四半期が記載されている場合。 年次報告書に、年度と同じ終了日を持つ第4四半期の数値が記載されていることがあります。期間がより長い方を採用します。
  • 3世代の IFRS に対応。 ESEF(2021年以降)、それ以前のデンマーク IFRS 拡張(売上高は NetSales)、および2016年以前の申告書で使われている2011年版 IFRS タクソノミーをすべて読み取ります。
  • 通貨は数値そのものから判定します。 Maersk は米ドルで報告していますが、申告書の別の箇所でデンマーク・クローネにも言及しています。
  • 古い報告書は一覧の下の方に表示されます。 上場企業は年に4~5件の申告書を公開するため、指定した year は検索結果の最初のページではなく、インデックスで絞り込みます。年次報告書の文書を含む中間報告書は除外します。
  • 会社情報が関連文書に記載されていることがあり、申告者によっては会社名に HTML を含めることもあります。どちらにも対応しています。

制限事項

  • 会社名での検索には CVR の認証情報が必要です(無料ですが、申請が必要です)。認証情報がない場合は、datacvr.virk.dk などで CVR 番号を自分で調べてください。
  • 機械可読な年次報告書を提出している会社のみが対象です。個人事業主や一部の会社形態は対象外です。
  • 申告者がタグ付けした情報のみが対象です。get_report_facts は、タグ付けされた財務諸表と詳細情報を返します。注記や経営者レビューのタグ付けされていないテキストは返しません。
  • IFRS の申告書では従業員数にタグが付けられていません(注記にテキストとして記載されます)。そのため、該当する申告書では employees は空欄です。
  • 申告書インデックスはプレーン HTTP 経由でのみ応答するため、サーバーはブラウザー内ではなく、ローカルまたはサーバー側で実行する必要があります。
  • データの利用条件: 申告書は Danish Business Authority が公開しているデータです。利用目的に応じて利用規約を確認してください。このプロジェクトは、利用規約について何らかの主張をするものではありません。

実際の申告書に対するテスト

npm run measure は、過去1年間に申告書を提出した約300社と、固定リストの大企業(LEGO、Arla、Carlsberg、Maersk、Novo Nordisk、IFRS の過年度分、両方の対象範囲を含むグループ報告書)を対象に、実際のツールの処理経路を実行します。ネットワーク接続が必要で、npm test には含まれません。

2026年9月25日の実行結果(v0.3.0):検索311件、解析309件、XBRL 年次報告書のない会社2社、エラー0件、貸借不一致0件、検索あたりの中央値118ミリ秒。

開発

npm test          # parser tests against synthetic fixtures (no network)
npm run measure   # live check against real filings (network)
npm run typecheck
npm run build
npm run ci         # typecheck + test + build, som CI

マージする前に npm run ci を実行してください。.github/workflows/ci.yml と同じ処理を実行します。CI では Node 22 と 24 でテストします。ローカルでは、インストールされている Node のバージョンで実行されます。

ロードマップ

  • CVR 登録簿を使った会社名検索
  • 1回の呼び出しで複数年の履歴を取得
  • npm と公式 MCP Registry に公開

ライセンス

MIT。Mikkel Manniche が開発。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。