npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

firmaapi-mcp-server

v2.2.1

Published

Danish CVR API for AI assistants — look up companies, financials, owners and more from the Danish business register (CVR) via MCP

Readme

FirmaAPI MCP Server — Dansk CVR API til AI-assistenter

MCP-server der giver AI-assistenter direkte adgang til det danske CVR-register via FirmaAPI.dk — en moderne REST API til CVR-opslag, virksomhedsdata, regnskaber og personrelationer.

Brug FirmaAPI som din CVR API til at søge i danske virksomheder, hente regnskaber, finde ejere og meget mere — direkte fra din AI-assistent.

Hvad kan den?

33 værktøjer der giver din AI-assistent (Claude Desktop, Claude Code, Cursor m.fl.) mulighed for at:

  • Slå virksomheder op via CVR med regnskaber, historik, hændelser, produktionsenheder og koncernrelationer
  • Søge og filtrere på by, branche, omsætning, ansatte, selskabsform, kommune, region, alder, regnskabsklasse m.fl. (30+ filtre)
  • Batch-opslag af op til 500 CVR-numre i én forespørgsel
  • Personprofiler og KYC — find virksomhedstilknytninger, screen for stråmandsmønstre, kortvarige roller og høj rolle-omsætning
  • Finansiel analyse — sundhedsscore, vækst-trajectory, udbytte-historik, branche-benchmark
  • Risiko og compliance — due diligence, holding-detektion, dependency-analyse, change-detector
  • Ejerskab og netværk — koncernkæder op til 4 niveauer, board overlap, lookalike-søgning, side-om-side-sammenligning
  • Markedsanalyse — aggregering pr. branche/kommune/region, tidsserier, nettovækst, geografisk fordeling, branche-landskab
  • Lead-genereringfind_target_companies med fornuftige defaults (aktive, kontaktbare, sorteret efter omsætning)
  • Reference-kataloger — branchekoder (DB07), kommuner, regioner, P-numre og forklaringer på 60+ CVR/ERST-termer
  • Token-økonomiexplain_query til at tælle matches uden at hente data, format=json + fields til kompakt output

Token- og data-optimering

Alle tools der returnerer flere virksomheder understøtter nu fælles parametre til at reducere outputstørrelsen:

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | format | "markdown" (default) eller "json" | Returnér rå strukturerede data i stedet for læsbar markdown. JSON er ideelt til agent-pipelines og videre parsing. | | fields | string[] | Begræns hvilke felter der returneres pr. række (fx ["name","cvr","zipcode"]). Default er kompakt (uden lange branchetekster). | | verbose | boolean | Giv det fulde, ufiltrerede output (inkl. branchetekst). Default er kompakt. |

format er tilgængelig på alle tools. fields og verbose gælder for list-tools (firmaapi_advanced_search, firmaapi_batch_lookup).

Installation

Via npm (anbefalet)

npm install -g firmaapi-mcp-server

Tjek at det virker:

firmaapi-mcp-server --version

Fra kildekode

cd mcp-server
npm install
npm run build

Konfiguration

Claude Desktop

Tilføj til din claude_desktop_config.json:

{
  "mcpServers": {
    "firmaapi": {
      "command": "firmaapi-mcp-server",
      "env": {
        "FIRMAAPI_KEY": "cvr_live_din_nøgle_her"
      }
    }
  }
}

Claude Code

claude mcp add firmaapi -e FIRMAAPI_KEY=cvr_live_din_nøgle_her -- firmaapi-mcp-server

Cursor

Tilføj til .cursor/mcp.json:

{
  "mcpServers": {
    "firmaapi": {
      "command": "firmaapi-mcp-server",
      "env": {
        "FIRMAAPI_KEY": "cvr_live_din_nøgle_her"
      }
    }
  }
}

Tools

Serveren eksponerer 33 værktøjer fordelt på 7 kategorier. Plan-krav vises pr. tool: Gratis (alle planer), Basis, Standard, Pro (Professionel+).

Alle list-tools understøtter format (markdown/json), fields (felt-projection) og verbose (fuldt output) — se Token- og data-optimering ovenfor.

Opslag og søgning

firmaapi_lookup_company  ·  Gratis

Slå en virksomhed op via CVR-nummer med valgfrie ekstrablokke.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr | string | 8-cifret CVR-nummer (påkrævet) | | include | string | Kommasepareret: finance, history, events, production_units, relations |

Returnerer: Stamdata, adresse, kontaktinfo, branche, ejere, ledelse, revisorer, reklamebeskyttelse, binavne, tegningsregel, regnskabsklasse, kapital, koordinater m.m. Plus valgfrie blokke med regnskaber (inkl. nøgletal og vækst), historik, hændelser, produktionsenheder og koncernrelationer.

firmaapi_search_companies  ·  Gratis

Hurtig navnesøgning på virksomheder.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | query | string | Søgestreng, min. 2 tegn (påkrævet) | | limit | number | Maks resultater, 1-100 (default 10) |

firmaapi_advanced_search  ·  Gratis

Avanceret søgning med 30+ filtre. Den primære arbejdshest til lead-research, markedsanalyse og segmentering.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | q | string | Navnesøgning (brug * for alle) | | city, zipcode | string | By/postnummer | | municipality, municipality_list | string | Kommunenavn/-kode (eller komma-liste, OR-match) | | region, region_list | string | Hovedstaden, Sjælland, Syddanmark, Midtjylland, Nordjylland | | industry, industry_list, industry_exclude | string | Branchekode (prefix) eller branchetekst | | company_type | string | Selskabsform, fx ApS, A/S | | status | string | aktiv, ophoert m.fl. | | employees | string | Interval, fx 10-49, 50-99, 100+ | | revenue_min, revenue_max | number | Omsætningsinterval i DKK | | capital_min, capital_max | number | Selskabskapital-interval i DKK | | founded_after, founded_before | string | Stiftelsesdato YYYY-MM-DD | | founded_year, founded_year_min, founded_year_max | string | Stiftelsesår (YYYY) eller interval | | dissolved_after, dissolved_before, dissolved_year, dissolved_year_min, dissolved_year_max | string | Opløsningsdato/år | | is_dissolved | boolean | true = kun opløste, false = kun aktive | | age_min, age_max | number | Alder i fulde år | | last_report_year_min, last_report_year_max | string | Seneste regnskabs år-interval | | has_financials, has_phone, has_email, has_website | boolean | Filtrer på datatilgængelighed | | ad_protected | string | true/false for reklamebeskyttede | | limit, offset, cursor | mixed | Pagination (cursor anbefales til store datasæt) |

firmaapi_batch_lookup  ·  Basis

Slå op til 500 CVR-numre op i én forespørgsel.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr_numbers | string | Kommasepareret liste af 8-cifrede CVR-numre (påkrævet) |

firmaapi_validate_cvr  ·  Gratis

Modulus-11-tjek og valgfri verificering af om CVR'et faktisk findes i registret.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr | string | CVR-streng (whitespace tolereres, påkrævet) | | verify_exists | boolean | Slå op for at tjekke faktisk eksistens (default false) |


Personer og relationer

firmaapi_get_person  ·  Pro

Hent en personprofil med alle virksomhedstilknytninger via UUID. UUID'et findes som person_id i company-responsen.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | id | string | Person UUID (påkrævet) |

firmaapi_search_persons  ·  Pro

Søg personprofiler på navn, alias eller enhedsnummer.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | query | string | Personnavn, min. 2 tegn (påkrævet) | | limit | number | Maks resultater, 1-50 (default 10) |

firmaapi_my_portfolio  ·  Pro

Få en persons fulde portefølje af aktive og historiske roller på tværs af alle selskaber.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | id | string | Person UUID (påkrævet) | | include_historical | boolean | Inkluder afsluttede roller (default true) |

firmaapi_kyc_screen  ·  Pro

Screen en person for nominee/stråmandsmønstre, kortvarige roller og høj rolle-omsætning. Returnerer flag og samlet risiko-vurdering.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | id | string | Person UUID (påkrævet) |


Analyse og aggregering

firmaapi_aggregate  ·  Gratis

Aggreger virksomheder pr. dimension (branche, kommune, selskabsform, stiftelsesår m.fl.). Mindst ét filter påkrævet.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | group_by | string | industry, municipality, region, zipcode_prefix, company_type, status, founded_year, founded_quarter, founded_month, dissolved_year, dissolved_quarter, dissolved_month, employees_bucket, has_financials | | top_n | number | Maks antal grupper (1-200, default 20) | | (alle filtre fra advanced_search) | mixed | Mindst ét påkrævet |

firmaapi_timeseries  ·  Gratis

Tidsserie over stiftelser eller opløsninger pr. dag/uge/måned/kvartal/år.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | granularity | string | day, week, month (default), quarter, year | | date_field | string | founded eller dissolved | | from, to | string | Datointerval YYYY-MM-DD | | (alle filtre fra advanced_search) | mixed | Mindst ét filter eller from/to |

firmaapi_net_growth  ·  Gratis

Nettovækst (stiftelser minus opløsninger) pr. tidsperiode. Tager samme filtre som advanced_search.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | granularity | string | month, quarter, year | | from, to | string | Datointerval YYYY-MM-DD | | (alle filtre fra advanced_search) | mixed | |

firmaapi_industry_landscape  ·  Standard

De største virksomheder i en branche eller region, rangordnet efter omsætning eller antal ansatte.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | industry | string | Branchekode-prefix (påkrævet) | | region, municipality | string | Geografisk afgrænsning (valgfri) | | rank_by | string | revenue (default) eller employees | | top_n | number | 1-100, default 20 |

firmaapi_geographical_distribution  ·  Gratis

Geografisk fordeling af virksomheder pr. kommune eller region. Tager samme filtre som advanced_search.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | level | string | municipality (default) eller region | | (alle filtre fra advanced_search) | mixed | |


Finansiel analyse

firmaapi_financial_health_score  ·  Standard

Samlet sundhedsscore 0-100 baseret på profitmargin, soliditet, likviditet, vækst og gearing.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr | string | 8-cifret CVR-nummer (påkrævet) |

firmaapi_growth_trajectory  ·  Standard

Flerårig vækstanalyse der klassificerer udviklingen som stabil, volatil, fladt eller faldende.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr | string | 8-cifret CVR-nummer (påkrævet) | | years | number | Antal år bagud (default 5) |

firmaapi_dividend_history  ·  Standard

Samlet udbetalt udbytte over alle år samt udbyttegrad pr. år.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr | string | 8-cifret CVR-nummer (påkrævet) |

firmaapi_industry_benchmark  ·  Standard

Sammenlign en virksomhed med konkurrenter i samme branche og region. Returnerer percentil-placering på nøgletal.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr | string | 8-cifret CVR-nummer (påkrævet) | | region | string | Afgræns benchmark til en region (valgfri) |


Risiko og compliance

firmaapi_due_diligence  ·  Standard

Risikoflag med samlet vurdering: lav, mellem, forhøjet eller høj. Tjekker status, finansiel sundhed, opløsningstrusler og governance-mønstre.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr | string | 8-cifret CVR-nummer (påkrævet) |

firmaapi_change_detector  ·  Gratis

Find virksomheder med ændringer (status, navn, adresse, ledelse) siden en given dato. Tager samme filtre som advanced_search.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | since | string | Dato YYYY-MM-DD (påkrævet) | | change_type | string | status, name, address, management, any (default) | | (alle filtre fra advanced_search) | mixed | |

firmaapi_holding_structure_detector  ·  Standard

Klassificér en virksomhed som driftselskab, holding, personligt holding eller dvale baseret på regnskabs- og strukturmønstre.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr | string | 8-cifret CVR-nummer (påkrævet) |

firmaapi_dependency_analysis  ·  Pro

Vis hvilke selskaber der rammes økonomisk hvis en given virksomhed går konkurs. Følger ejerskabskæder ned.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr | string | 8-cifret CVR-nummer (påkrævet) | | max_depth | number | Maks dybde i kæden (default 3) |


Ejerskab og netværk

firmaapi_ownership_tree  ·  Pro

Ejerskabskæde op og ned, op til fire niveauer. Vis hvem der ejer et selskab og hvad selskabet selv ejer.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr | string | 8-cifret CVR-nummer (påkrævet) | | direction | string | up, down, both (default) | | max_depth | number | Maks niveauer (1-4, default 3) |

firmaapi_board_overlap  ·  Pro

Find sammenfaldende ledelsesmedlemmer mellem to selskaber.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr_a, cvr_b | string | To 8-cifrede CVR-numre (påkrævet) |

firmaapi_find_target_companies  ·  Basis

Leadgenerering med fornuftige standardvalg: aktive, kontaktbare virksomheder sorteret efter omsætning.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | (alle filtre fra advanced_search) | mixed | | | top_n | number | Maks resultater (default 50) |

firmaapi_lookalike_search  ·  Basis

Find virksomheder der minder om en given CVR ud fra branche, størrelse og geografi.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvr | string | Reference-CVR (påkrævet) | | top_n | number | Maks resultater (default 20) |

firmaapi_compare_companies  ·  Standard

Side-om-side sammenligning af 2-4 selskaber: omsætning, resultat, soliditet, ROE, vækst.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | cvrs | string | Kommasepareret liste af 2-4 CVR-numre (påkrævet) | | years | number | Antal år bagud (default 3) |


Reference og kataloger

firmaapi_industries  ·  Gratis

Komplet liste over danske branchekoder (DB07) i hierarki med antal virksomheder pr. kode.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | filter | string | Lokal filtrering på navn eller kode | | parent | string | Server-side: kun branchekoder under denne (fx parent="62") | | max_depth | number | 1=division, 2=group, 3=class, 4=branch | | include_growth | boolean | Tilføj founded_last_12m pr. branchekode |

firmaapi_municipalities  ·  Gratis

Liste over danske kommuner med koder.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | filter | string | Filtrer på kommunenavn |

firmaapi_regions  ·  Gratis

De fem danske regioner med tilhørende kommuner. Bornholm hører under Region Hovedstaden.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | filter | string | Filtrer på regionsnavn |

firmaapi_production_unit  ·  Standard

Slå produktionsenhed op via P-nummer.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | p_number | string | 10-cifret P-nummer (påkrævet) |

firmaapi_explain_field  ·  Gratis

Forklaring af mere end 60 CVR- og ERST-termer (statusværdier, rolletyper, regnskabsfelter, attributter).

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | term | string | Felt- eller værdinavn (påkrævet) |

firmaapi_explain_query  ·  Gratis

Tæl matches uden at hente data. Brug det til at sanity-checke en søgning før et tungt kald.

| Parameter | Type | Beskrivelse | |-----------|------|-------------| | (alle filtre fra advanced_search) | mixed | Mindst ét reelt filter påkrævet |

Returnerer: total_matches, en kort vurdering af resultatsættets størrelse, og hvis total > 50 — suggested_refinements: top-5 grupper på branche, kommune og ansatte.

Eksempler

Når serveren er konfigureret, kan du bede din AI-assistent om:

  • "Slå Novo Nordisk op og vis deres seneste regnskab"
  • "Find alle aktive IT-virksomheder i Aarhus"
  • "Hvem ejer CVR 34824770?"
  • "Søg efter virksomheder med omsætning over 100 millioner"
  • "Find alle virksomheder Lars Larsen er tilknyttet"
  • "Vis alle ikke-reklamebeskyttede virksomheder stiftet i dag"
  • "Slå disse CVR-numre op på én gang: 24256790, 10150817"
  • "Find branchekoden for IT-konsulenter"
  • "Vis koncernrelationer for Dansk Supermarked"
  • "Hvilke kommunekoder findes der i Nordjylland?"
  • "Slå produktionsenhed P-1234567890 op"
  • "Hvor mange aktive ApS'er findes i Aarhus?" (firmaapi_explain_query)
  • "Returnér de første 50 IT-virksomheder som JSON med kun navn og CVR" (format=json, fields=["name","cvr"])
  • "Top 20 brancher med flest aktive virksomheder" (firmaapi_aggregate)
  • "Stiftelser pr. kvartal i 2024 i IT-branchen" (firmaapi_timeseries)
  • "Hvordan fordeler aktive selskaber sig på regioner?" (firmaapi_aggregate, group_by="region")
  • "Top 20 postdistrikter for IT-virksomheder" (firmaapi_aggregate, group_by="zipcode_prefix", industry="62")
  • "Hvor mange selskaber er gået konkurs i 2024?" (firmaapi_explain_query, dissolved_year="2024")
  • "Konkursrate pr. branche sidste 5 år" (firmaapi_aggregate, group_by="industry", is_dissolved=true, dissolved_year_min="2020")
  • "Opløsninger pr. måned i 2024" (firmaapi_timeseries, date_field="dissolved", granularity="month", from="2024-01-01", to="2024-12-31")
  • "Lav due diligence på CVR 12345678" (firmaapi_due_diligence)
  • "Hvor sund er denne virksomhed finansielt?" (firmaapi_financial_health_score)
  • "Sammenlign Novo Nordisk og LEGO finansielt" (firmaapi_compare_companies)
  • "Hvem ejer KIRKBI A/S? Vis ejerskabskæden tre niveauer op" (firmaapi_ownership_tree)
  • "KYC-tjek af denne bestyrelseskandidat" (firmaapi_kyc_screen)
  • "Find IT-prospects i København med email og 10-49 ansatte" (firmaapi_find_target_companies)
  • "Find andre selskaber der ligner vores bedste kunde" (firmaapi_lookalike_search)
  • "Hvilke kommuner er i Region Hovedstaden?" (firmaapi_regions, filter="Hovedstaden")
  • "Hvad betyder UNDER KONKURS?" (firmaapi_explain_field)

API-nøgle

Hent en gratis API-nøgle på firmaapi.dk/register.

Se aktuelle planer, priser og begrænsninger på firmaapi.dk/priser.