Danish annual reports (CVR) について
デンマーク商業庁が公開する企業のXBRL年次報告書を読み取るMCPサーバーです。当期・過去の財務数値と報告書のタグ付き事実を提供し、欠落や値の不一致は推測せず注記します。
主な機能
- 01名称またはCVRで企業検索
- 02公開申告書の一覧表示
- 03当期と前年度の数値取得
- 04複数年の財務履歴比較
- 05報告書のタグ付き事実取得
- 06グループと親会社の数値を分離
活用シーン
- 01デンマーク企業の最新財務状況の確認
- 02年度ごとの報告数値の比較
- 03年次報告書からタグ付き明細を取得
MCP 対応
企業検索、申告書の閲覧、財務数値やタグ付き事実の取得に使える読み取り専用ツールを5つ、MCPクライアントに提供します。stdioで動作し、企業名検索にはCVR認証情報が別途必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y dk-regnskab-mcpCVR_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | 返す会社数の上限。 |
| query | string | はい | 会社名またはその一部。例:"Carlsberg"、"lego a/s"。8 桁の CVR 番号を指定すると、その会社を検索します。 |
詳細
dk-regnskab-mcp
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_company | query(会社名または CVR 番号)、任意の limit | CVR 番号、ステータス、会社種別、業種、住所、従業員規模を含む該当企業。営業中で、名前が完全一致し、規模が大きい企業が先に表示されます。CVR 認証情報が必要です。以下を参照してください |
list_filings | cvr、任意の limit(1–50)、任意の year | 公開ファイリングを新しい順に表示し、文書へのリンクを含みます |
get_financials | cvr、任意の year(報告期間が終了する年)、任意の scope(group または parent) | 会社名、期間、通貨、監査人、主要数値(当年度と前年度)、グループ報告書かどうか、欠落に関する注記、出典文書の URL |
get_financials_history | cvr、任意の years(1–15)、任意の scope | 報告年度ごとの主要数値を新しい順に表示します |
get_report_facts | cvr、任意の 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 が開発。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。