
Danish annual reports (CVR)
io.github.mikkelmanniche-dk由 GitHub 帳號 mikkelmanniche-dk 發布v0.3.2更新於 Oct 24, 2026
Key figures, history and all tagged facts from Danish companies' annual reports (XBRL).
概覽
讀取丹麥企業向丹麥商業管理局申報的年度報告(XBRL),依 CVR 編號回傳關鍵財務數據、申報文件清單與標記事實。
- 可以做什麼
- 依公司名稱或 CVR 編號查詢公司,含狀態、類型、產業與地址
- 列出某 CVR 編號已發布的申報文件,由新到舊並附文件連結
- 取得最近一年與前一年的關鍵財務數據,可區分集團與母公司口徑
- 依報告年度取得最多 15 年的關鍵財務數據
- 依概念名稱篩選,取回報告中所有被標記的數值與文字事實
- 適用情境
- 需要丹麥公司的營收、權益、利潤、資產或員工人數,或跨年度比較這些數據,又不想手動開啟 XBRL 檔案時適用。適合分析師、會計人員與處理丹麥企業資料的開發者。
- 執行需求
- 透過 npx 以 stdio 在本機執行,需要 Node.js 22.18 或更新版本,並能連線至丹麥商業管理局的申報索引與文件。不需 API 金鑰;名稱搜尋可選用 CVR_USER 與 CVR_PASSWORD 環境變數,憑證可免費申請。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Danish annual reports (CVR),將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
dk-regnskab-mcp
Give Claude (or any MCP client) the published annual reports of Danish companies: key figures for the latest year and the year before, read straight from the XBRL filings at the Danish Business Authority (Erhvervsstyrelsen). No API key needed.
Works for small companies (Danish GAAP) and listed ones (IFRS/ESEF, back to 2015), separates group and parent figures in group reports, and explains gaps instead of guessing. Tested live against about 300 real filings.
"What were revenue and equity for CVR 24256790 last year, and how did they change?"
Quickstart
Requires Node.js 22.18 or newer. No API key needed.
Claude Code
Claude Desktop: add this to claude_desktop_config.json:
Cursor: the same block goes in ~/.cursor/mcp.json (or .cursor/mcp.json in a project). Other MCP clients: run npx -y dk-regnskab-mcp over stdio.
From source
Tools
All tools are read-only, declare an output schema and return structured content.
Key figures: revenue, gross profit, operating profit, profit before tax, profit for the year, average employees, total assets, current assets, cash, equity, liabilities.
Company name search (optional)
search_company uses the CVR register, which requires system-to-system credentials. They are free: apply at the Danish Business Authority, then pass them to the server:
Everything else works without them. Note that the register, like the filing index, only answers over plain HTTP, so the credentials are sent unencrypted. They only give read access to public company data.
How it works
Pitfalls it handles
Real Danish filings are messier than the taxonomy suggests. The parser was built against actual filings:
- Dimensional facts are not totals. A filing reports equity once in total and again per component (share capital, retained earnings). Only dimensionless contexts are used, so share capital is never reported as equity.
- Conflicting values. Some filings report two different values for the same fact and period (e.g. 0 and 1 employees). The figure is left empty with a note instead of guessed.
- Missing revenue is usually legal. Most small companies (reporting class B) may omit revenue and report gross profit. The result says so.
- Namespace prefixes vary between filings, so concepts are matched by namespace URI.
- Documents are gzip-compressed without saying so. Detected by magic bytes.
- The document named "AARSRAPPORT" is not always the one with the numbers. Every XML document in a filing is parsed, and the one that yields the most figures wins.
- Group reports hold two sets of figures. A parent company's report often includes the consolidated group too, and Danish GAAP and IFRS mark them in opposite ways. The group is returned by default;
scope: "parent"gives the parent alone. Mixing them up can turn a group loss into a parent profit. - Balance check. If total assets don't equal liabilities and equity for the chosen scope, the result says so.
- A last quarter next to the full year. Some annual reports also tag Q4, with the same end date as the year. The longest period wins.
- Three generations of IFRS. ESEF (2021 onwards), the Danish IFRS extension before that (revenue as
NetSales), and the 2011 IFRS taxonomy in filings before 2016. All three are read. - Currency comes from the figures themselves. Maersk reports in USD but mentions DKK elsewhere in the filing.
- Old reports sit far down the list. Listed companies publish 4–5 filings a year, so a chosen
yearis filtered in the index, not in the first page of results. Interim reports that carry an annual-report document are skipped. - Company details can live in a sibling document, and some filers put HTML inside the company name. Both are handled.
Limitations
- Name search needs CVR credentials (free, but you have to apply). Without them, look up the CVR number yourself, e.g. on datacvr.virk.dk.
- Only companies that file machine-readable annual reports. Sole proprietorships and some other company types don't.
- Only what the filer tagged:
get_report_factsreturns the tagged statements and details, not the untagged text of the notes or management's review. - IFRS filings don't tag the number of employees (it is text in the notes), so
employeesis empty for them. - The filing index answers over plain HTTP only, so the server must run locally or server-side, not in a browser.
- Data terms: the filings are public data from the Danish Business Authority. Check their terms of use for your use case; this project does not make claims about them.
Tested against real filings
npm run measure runs the real tool path against about 300 companies that filed in the last year, plus a fixed set of large ones (LEGO, Arla, Carlsberg, Maersk, Novo Nordisk, older IFRS years, and a group report with both scopes). It needs network access and is not part of npm test.
Run on 25 September 2026 (v0.3.0): 311 lookups, 309 parsed, 2 companies without an XBRL annual report, 0 errors, 0 balance mismatches, median 118 ms per lookup.
Development
Run npm run ci before merging; it mirrors .github/workflows/ci.yml. CI tests on Node 22 and 24; locally it runs on whichever Node you have.
Roadmap
- Company name search via the CVR register
- Multi-year history in one call
- Published to npm and the official MCP Registry
License
MIT. Built by Mikkel Manniche.
來源:README.md,提交 bcdf4f8
工具
0版本歷史
2- v0.3.2最新Oct 3, 2026
- v0.3.1Sep 25, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分