firmaapi-mcp-server
v3.0.1
Published
Danish CVR API for AI assistants — look up companies, financials, owners and more from the Danish business register (CVR) via MCP
Downloads
397
Maintainers
Readme
FirmaAPI MCP Server — Dansk CVR API til AI-assistenter
Version 3.0.0 erstatter vurderingsværktøjer med registeroplysninger og nøgletal. Læs migrationsvejledningen før opdatering af eksisterende integrationer. Egne risikoscorer og påstande om lovlig kontakt er fjernet.
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 roller — find registrerede virksomhedstilknytninger, roller og perioder
- Finansiel analyse — regnskabstal og vækstrater, udbytte-historik, branche-benchmark
- Virksomhedsoplysninger — virksomhedsoversigt, registreret selskabsstruktur, 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-generering —
find_target_companiesmed fornuftige defaults (aktive virksomheder med kontaktoplysninger, sorteret efter omsætning) - Reference-kataloger — branchekoder (DB07), kommuner, regioner, P-numre og forklaringer på 60+ CVR/ERST-termer
- Token-økonomi —
explain_querytil at tælle matches uden at hente data,format=json+fieldstil 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-serverTjek at det virker:
firmaapi-mcp-server --versionFra kildekode
cd mcp-server
npm install
npm run buildKonfiguration
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-serverCursor
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_person_roles · Pro
Hent registrerede virksomhedstilknytninger og perioder. Optællingen følger de returnerede tilknytninger og indeholder ingen personvurdering.
| Parameter | Type | Beskrivelse |
|-----------|------|-------------|
| person_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_metrics · Standard
Regnskabstal, perioder og nøgletal fra API'et uden score eller klassifikation.
| Parameter | Type | Beskrivelse |
|-----------|------|-------------|
| cvr | string | 8-cifret CVR-nummer (påkrævet) |
firmaapi_growth_trajectory · Standard
Tilgængelige årsregnskaber og år-til-år-vækstrater uden samlet klassifikation.
| 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) |
Virksomhedsoplysninger
firmaapi_company_overview · Standard
Registreret status, ledelse, historik og regnskaber. Ingen risikoflag eller anbefalinger.
| 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_company_structure · Pro
Vis registreret formål, selskabsform, ansatte, regnskaber og relationer uden klassifikation. Relationsdata kræver Professionel+.
| Parameter | Type | Beskrivelse |
|-----------|------|-------------|
| cvr | string | 8-cifret CVR-nummer (påkrævet) |
firmaapi_dependency_analysis · Pro
Vis direkte koncernrelationer og fælles registrerede personer. Forbindelser dokumenterer ikke økonomisk afhængighed eller konsekvenser ved konkurs.
| 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, med kontaktoplysninger 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 virksomhedsoversigt på CVR 12345678" (firmaapi_company_overview)
- "Vis virksomhedens regnskabstal og perioder" (firmaapi_financial_metrics)
- "Sammenlign Novo Nordisk og LEGO finansielt" (firmaapi_compare_companies)
- "Hvem ejer KIRKBI A/S? Vis ejerskabskæden tre niveauer op" (firmaapi_ownership_tree)
- "Vis denne persons registrerede roller" (firmaapi_person_roles)
- "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
Opgraderingsbeskeder
Ved virksomhedsopslag (firmaapi_lookup_company) og de faktuelle virksomhedsværktøjer vises en opgraderingsmulighed, når API'et sender meta.upgrade. Beskeden bygger på den autentificerede brugers plan og individuelle regnskabsadgang:
- Gratis til Basis: legale ejere, ledelse og virksomhedshistorik.
- Basis til Standard: produktionsenheder, virksomhedshændelser og adgang til seneste regnskabsår.
- Standard til Professionel: koncernrelationer, personprofiler og adgang til op til 5 års regnskabshistorik.
Regnskabsadgang, brugeren allerede har via en individuel grænse, markedsføres ikke som en ny fordel. Individuelle grænser antages heller ikke at ændre sig ved opgradering. Professionel og Enterprise får ikke disse automatiske opgraderingsbeskeder. Adgang garanterer aldrig, at oplysninger findes for en bestemt virksomhed eller person.
Markdown viser beskeden som tekst med link til priser; JSON bevarer metadata som struktureret JSON. Hvis API'et ikke leverer opgraderingsmetadata, gættes der ikke ud fra tomme felter. Planblokeringer viser API'ets adgangskrav og prislink; øvrige adgangsfejl anbefaler ikke opgradering.
Hent en gratis API-nøgle på firmaapi.dk/register.
Se aktuelle planer, priser og begrænsninger på firmaapi.dk/priser.
