The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Danish annual reports (CVR) listing page.
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?"
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
| Tool | Input | Returns |
|---|---|---|
search_company | query (name or CVR number), optional limit | Matching companies with CVR number, status, company type, industry and address. Needs CVR credentials, see below |
list_filings | cvr, optional limit (1–50), optional year | Published filings, newest first, with document links |
get_financials | cvr, optional year (the year the reporting period ends in), optional scope (group or parent) | Company name, period, currency, auditor, key figures (current and previous year), whether it is a group report, notes on gaps, source document URL |
get_financials_history | cvr, optional years (1–15), optional scope | Key figures per reporting year, newest first |
get_report_facts | cvr, optional year, scope, match (part of a concept name), limit | Every figure and text tagged in the annual report, e.g. staff costs or dividends |
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.
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.
Real Danish filings are messier than the taxonomy suggests. The parser was built against actual filings:
scope: "parent" gives the parent alone. Mixing them up can turn a group loss into a parent profit.NetSales), and the 2011 IFRS taxonomy in filings before 2016. All three are read.year is filtered in the index, not in the first page of results. Interim reports that carry an annual-report document are skipped.get_report_facts returns the tagged statements and details, not the untagged text of the notes or management's review.employees is empty for them.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.
MIT. Built by Mikkel Manniche.