datakilder-mcp
This server provides typed, API-key-free MCP tools to access a wide range of Norwegian and European public data sources. You can:
Retrieve statistical data from SSB and Eurostat (table metadata, dimension codes, values).
Look up Norwegian companies by organization number or name, getting status, address, and employee count from Brønnøysundregistrene.
Get hourly weather forecasts, severe weather alerts (storm, avalanche, flood, wildfire), air quality index with pollution breakdown, and sun/moon times from MET.
Query ground conditions (radon risk, sediment type, nearby wells) from NGU.
Search place names, addresses, and get coordinates/elevation from Kartverket; reverse geocode coordinates to addresses.
Discover and query map layers from 130+ WMS services and OGC API Features (e.g., geology, marine data).
Fetch road objects (speed limits, signs, tunnels) from Statens vegvesen.
Find public transport stops, real-time departures, and plan journeys with Entur.
Search for schools, get school details, and retrieve LK20 curriculum competence goals from UDIR.
Look up species by Norwegian or scientific name from Artsdatabanken.
Search the national data catalog (FDK) for API/dataset metadata.
Run a health-check (
doctor) to verify all integrated APIs are operational, and list all available data sources (kilder).Use the composite tool
sted_kontekstto get municipality, address, elevation, current weather, alerts, and nearest transit stops for any coordinate in one call.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@datakilder-mcpHvor mange innbyggere bor i Trondheim?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
datakilder-mcp
MCP-server med typede verktøy for norske offentlige datakilder. Én modul per kilde, så modellen slipper å gjette API-formen.
Ingen API-nøkler. Alle kildene under er åpne — klon, bygg, kjør.
Hvorfor ikke bare katalogsøk?
data.norge.no har allerede et søk. Problemet ligger ikke der. Vi probet alle 1 063 registrerte API-er og målte 300 datasett (5. august 2026):
1 063 registrerte API-er
234 har en adresse en maskin kan følge ← 4 av 5 mangler den
207 svarer når du kaller dem
148 av disse er WMS/WFS-kartlag
40 er levende, ekte API-er som ikke er kartFire av fem API-oppføringer mangler et maskinlesbart endepunkt. Av datasettene har ~35 % ingen distribusjon i det hele tatt, og av filene som finnes er de aller fleste Excel-ark — ingen live API-er.
⚠️ En tidligere versjon av denne READMEen påsto «94 % landingssider», målt på 60 datasett.
Ved 300 datasett ble tallet ~40 %. Utvalget var for lite og ikke tilfeldig ordnet. Full
gjennomgang, inkludert feilen: rapport/.
Discovery er den lette halvdelen. Den vanskelige er at hver kilde har sin egen spørreform: SSB er en kube med opake dimensjonskoder, Brreg er flat REST, MET krever User-Agent og koordinatavrunding, Entur er GraphQL. Det er den halvdelen denne serveren dekker.
Derfor finnes det ikke noe fetch_data-verktøy her. Et verktøy som laster ned hva enn en
katalog-lenke peker på, laster i praksis ned en HTML-side 94 % av gangene. 10 av 11 kilder snakker
direkte med det ekte API-et og returnerer strukturerte data. Den ellevte (fdk) er katalogoppslag
som finner et API å bygge mot — den henter aldri data, og sier det selv i verktøybeskrivelsen.
Related MCP server: kartverket-mcp
Hva kan du spørre om?
Alle svarene under er ekte utdrag fra røyktesten — den kjører mot de faktiske API-ene:
Spørsmål | Verktøy | Svar |
Hvor mange bor i Halden? |
| 32 082 |
Er Equinor fortsatt aktivt? |
| EQUINOR ASA — Allmennaksjeselskap, aktiv |
Hvordan er været på Venabu? |
| 19,2 °C, 4 m/s |
Hvor høyt over havet ligger dette punktet? |
| 46,91 moh |
Hva er fartsgrensen i denne gata? |
| 30 km/h, Major Forbus gate |
Når går neste tog fra Oslo S? |
| R21 mot Moss, med sanntid |
Hvilken kommune er dette koordinatet i? |
| 3101 (Halden) |
Finnes det en montessoriskole i Halden? |
| Halden montessoriskole AS |
Hva heter elg på latin? |
| Alces alces |
Hva står huset på, og er det radon her? |
| Moderat til lav radon-aktsomhet, hav- og fjordavsetning, under marin grense, 137 brønner innen 1 km |
Hvor kommer lufta jeg puster i fra? |
| AQI 1,8 («lite», liten helserisiko) — verst er ozon, 100 % langtransportert |
Hva skal en 6.-klassing kunne i matte? |
| 11 mål fra MAT01-06, gjeldende fra 1.8.2026 |
Poenget er kjedene: stedsnavn → koordinat → høyde → værvarsel er fire kall en modell kan gjøre selv, uten at noen har hardkodet en integrasjon.
Kilder
Kilde | Verktøy | Lisens |
SSB (PxWebApi) |
| NLOD 2.0 |
Brønnøysund (Enhetsregisteret) |
| NLOD 2.0 |
MET (api.met.no) |
| NLOD 2.0 / CC BY 4.0 |
Kartverket / Geonorge |
| CC BY 4.0 |
Statens vegvesen (NVDB) |
| NLOD 2.0 |
Entur (kollektiv) |
| NLOD 2.0 |
Kart (generisk WMS) |
| varierer per tjeneste |
UDIR (skoleregister + LK20) |
| NLOD 2.0 |
Artsdatabanken |
| CC BY 4.0 |
Eurostat |
| Eurostat-vilkår |
Felles datakatalog |
| NLOD 2.0 |
NGU (grunnforhold) |
| NLOD 2.0 / CC BY 4.0 |
OGC (generisk, 138 samlinger) |
| varierer per tjeneste |
Stedskontekst (sammensatt) |
| se underliggende kilder |
Pluss kilder — lister alt serveren dekker — og doctor, som sjekker om de faktisk svarer nå.
Attribusjonen følger med dataene: hvert svar bærer et _kilde-felt. Norske offentlige data
er lisensiert, ikke fritt fram, og en kildehenvisning som bare står i en README blir ikke lest.
kart dekker 614 av katalogens API-er
58 % av det katalogen kaller API-er er WMS/WFS. Å pakke inn protokollen én gang slår å pakke inn
hver utgiver — og et kartlag ingen har tenkt på ennå er allerede nåbart. kart_punkt
(GetFeatureInfo) gjør et kartlag om til data: gi den et koordinat, få egenskapene tilbake.
Det er også grunnen til at Kystverket, Riksantikvaren, NIBIO, Polarinstituttet,
Landbruksdirektoratet og Norge i bilder ikke har egne moduler — API-ene deres er kartlag, og
kart_lag/kart_punkt når dem allerede.
NGU sto på den lista til 6. august, og det var feil. De har 28 OGC API Features-tjenester ved siden av kartlagene sine — ekte JSON-API-er med egne spørreparametre. «Dekket av kartklienten» var en påstand om protokollen, ikke om utgiveren.
ogc_punkt dekker 138 datasamlinger — og to dialekter
Samme argument som for WMS: NGUs 28 tjenester og Havforskningsinstituttets 110 samlinger er ikke 138 integrasjoner, de er én protokoll. Én klient, ett register, én linje per ny utgiver.
Men «samme protokoll» er ikke «samme oppførsel», og forskjellene er av typen som feiler stille:
Bbox med null areal er en punkt-i-polygon-spørring hos begge. Verifisert på et hjørnepunkt i et ekte gytefelt — et hjørnepunkt ligger på kanten, så det MÅ treffe hvis degenererte bokser virker i det hele tatt. (Første test ga 0 treff hos HI og så ut som en forskjell. Punktet lå bare i åpent hav.)
skipGeometryrespekteres av NGU og ignoreres av HI. NGU sender 2 kB der den ellers sender 17,5 MB; HI sender omrisset uansett. Flagget sendes likevel — det er harmløst der det ignoreres — og størrelsestaket ihttp.tser sikkerhetsnettet. Geometri returneres aldri til kalleren.
kart_finn gjør dem faktisk mulige å finne. Verktøyene over krevde at du kjente URL-en til
tjenesten, noe som gjorde den største dekningen i serveren praktisk usynlig. Nå søker du i en
indeks over 130 norske WMS-tjenester (data/kartindeks.json, høstet av
scripts/hent-kartindeks.mjs): kart_finn("flom") → NVEs flomtjeneste → lag → egenskaper i et punkt.
Verdt å merke seg: NVE står som blokkert over fordi hydrologi-API-et krever nøkkel — men
flomdataene deres er kartlag, og dermed nåbare uansett.
sted_kontekst — ett kall i stedet for fire
Kommune, adresse, høyde, været nå, farevarsel og nærmeste holdeplasser for et koordinat.
Sammensatt av kilder som allerede finnes. Delvis feil er designet inn: hver del kjører uavhengig,
og det som ikke lot seg hente står i feltet mangler — for «ingen farevarsel» og «vi fikk ikke
sjekket farevarsel» må aldri se like ut.
ngu_grunnforhold — hva består grunnen av her?
Radon-aktsomhet, løsmassetype, under eller over marin grense, og registrerte brønner i nærheten med boredybde og dyp til fjell. Ett kall, tre NGU-tjenester, laget for spørsmålet folk faktisk stiller foran et boligkjøp.
To ting var avgjørende for at svaret blir riktig:
Punktspørring, ikke nærhet. En bbox på ±1 km rundt en adresse i Halden gir åtte radon-polygoner, og det første sier «Usikker aktsomhet». En bbox med null areal gir det ene polygonet adressen faktisk ligger i — «Moderat til lav aktsomhet». Et svar fra naboen er feil svar.
skipGeometry=true. Ett radon-polygon er 17,5 MB omriss vi aldri leser. Uten flagget sprengte svaret klientens 8 MB-tak og radon kom tilbake somnull. Med det: 2 kB, 0,7 s, samme svar.
Aktsomhetskart er ikke måling, og det står i svaret: radon må måles i boligen, og skredfaresoner er
NVEs datasett — kart_finn("skredfare").
met_luftkvalitet — og hvor forurensningen kommer fra
Samlet indeks, konsentrasjon av NO2, PM10, PM2,5 og ozon, 56 timer fram — og kildefordelingen for stoffet som driver indeksen: trafikkeksos, veistøv, vedfyring, skipsfart, industri eller langtransportert. Det er forskjellen på «lufta er dårlig» og «lufta er dårlig fordi det er piggdekk på tørr asfalt».
Skalaen hardkodes ikke: MET serverer sin egen indeksbeskrivelse på /aqi_description, og teksten
(«lite» / «liten helserisiko») leses derfra. En kopiert skala drifter, en avledet kan ikke.
Verdt å vite at varselet er modellert per grunnkrets, ikke målt på adressen — det står i svaret.
udir_kompetansemaal — hva skal eleven kunne på dette trinnet?
Fag + årstrinn inn, kompetansemålene fra LK20 ut, med teksten om underveisvurdering. Tre ting måtte løses før svaret ble til å stole på:
Utgåtte læreplaner ligger i katalogen. MAT01-05 gikk ut 31.7.2026 og MAT01-06 overtok dagen etter. Samme søk, to ulike sett med mål, avhengig av hvilken uke du spør. Bare gjeldende planer telles — og de utgåtte kan hentes fram med et flagg, ikke ved et uhell.
«matematikk» treffer tolv læreplaner. Fordypning, X, 2P, S, R, vg1 … Å ta første treff ga fordypning i matematikk til en sjetteklassing. Årstrinnet er det vi har til å skille dem, så kandidatene rangeres på det og bekreftes mot dataene. Svaret sier hvilken plan det kom fra, og hvilke andre det kunne vært.
LK20 setter mål etter 2., 4., 7. og 10. trinn — ikke hvert år. «Hva skal en 3.-klassing kunne» er likevel et helt rimelig spørsmål. Verktøyet svarer med målene eleven jobber mot, og sier at det er det som skjedde. Videregående er
vg1–vg3, ikke 11–13; typen sier det.
doctor — svarer kildene akkurat nå?
Ett billig, ekte kall per kilde, med tid og feilmelding. Som MCP-verktøy, og som npm run doctor:
✓ nve 830 ms NVE (nettleietariffer)
✓ met 136 ms Meteorologisk institutt (api.met.no)
15 oppe · 0 nede · 0 mangler nøkkel · 0 ikke sjekket — 958 msSonden er deklarert på kilden, ved siden av verktøyene den prøver: modulen vet hvilket av
kallene sine som er billig, og en sentral liste ville driftet ved første omdøping. En kilde uten
sonde rapporteres som ikke_sjekket — aldri som frisk. Røyktesten feiler hvis noen legger til en
modul uten sonde.
Første versjon meldte 15/15 oppe på 855 ms — fra disk. Cachen svarte, ikke API-ene. Det er den
samme feilen som stillhet-er-ikke-levert, i ny drakt: en sjekk som ikke kan skille «kilden svarte»
fra «vi husker at den svarte», sier alltid at alt er bra. doctor slår derfor av cache-lesing mens
den kjører.
Nøkkelfritt er et krav, så auth sjekkes først
scripts/sjekk-auth.mjs leser sikkerhetsskjemaet i hver spec sveipen fant. Av de 40 maskinlesbare
spec-ene oppgir 17 autentisering — 10 av dem er Skatteetatens, som i tillegg handler om
navngitte personer (personidentifikator) og krever Maskinporten og rettighetspakke-avtale.
23 er åpne. Å telle spec-er er ikke å telle tilgjengelige data, og det er billigere å oppdage
med et skript enn med en halv dags koding.
Skriptet sier hvor du skal se, ikke hva som er sant: Brønnøysunds regnskaps-API oppgir basicAuth
i spec-en, men svarer helt åpent — brreg_regnskap henter Equinors 2024-tall uten nøkkel i
røyktesten. Kravet i spec-en er en påstand; kallet er beviset.
Kilder som ikke lot seg bygge
Ærlig ført i kilder.json, med grunn:
NVE (401, krever gratis nøkkel) · Skatteetaten (kun Maskinporten) ·
Miljødirektoratet (katalogen peker på en Swagger-UI som ikke serverer spec; alle gjettede
ruter 404) · DiBK (404 + HTML-docs) · DSB (ingen åpne REST-API-er funnet) ·
Fiskeridirektoratet (10 ekte registre finnes, men endepunktene er ikke registrert noe sted) ·
Autosys kjøretøydata (krever ID-porten-registrert nøkkel).
Bruk
Ikke publisert på npm ennå — klon og bygg (verifisert fra en fersk klone 5.8.2026):
git clone https://github.com/smlhus1/datakilder-mcp.git
cd datakilder-mcp
npm install # installerer avhengigheter, ikke pakken selv
npm run build
npm run smoke # valgfritt: kaller alle kildene mot ekte API-erMCP-klient (Claude Code, .mcp.json) — bruk absolutt sti til dist/index.js:
{ "mcpServers": { "datakilder": { "command": "node", "args": ["<sti>/dist/index.js"] } } }Legge til en kilde
Skriv én fil i src/sources/, legg til én linje i src/sources/index.ts.
Ingenting annet teller opp kilder — verktøyregistrering, kilder-oversikten og attribusjonen
utledes alle fra registeret.
export const minKilde: Source = {
id: "kilde", // blir prefiks: kilde_verktøy
name: "...", homepage: "...",
requiresKeyEnv: null, // eller "MIN_API_NØKKEL"
attribution: { licence: "NLOD 2.0", credit: "Kilde: ...", termsUrl: "..." },
tools: [{ name, title, description, inputSchema, run }],
};All HTTP går gjennom src/http.ts — User-Agent, timeout, retry på 429/503, byte-tak, sjekk av
content-type (flere av disse API-ene svarer på en dårlig spørring med en HTML-side og status 200)
og cache. Ikke skriv en klient til.
Cache
TTL settes per kall, ikke per kilde, fordi skillet går tvers gjennom en kilde: Enturs
stoppesteder er stabile i uker, mens avgangene er sanntid og aldri skal caches. Vær i minutter,
registre i døgn, stedsnavn og kodeverk i måneder. MET ber eksplisitt i vilkårene om at klienter
cacher — det er folkeskikk, ikke bare fart. Målt: værvarsel 118 ms → 1 ms.
Cache ligger i $XDG_CACHE_HOME/datakilder-mcp.
Testing
Røyktesten er live, ikke mocket. Poenget med serveren er at den kjenner den faktiske formen på hvert API; en mocket test ville bare bevist at antakelsene våre er enige med seg selv. Den feiler høylytt når en kilde endrer kontrakt — som er nøyaktig da vi vil høre det.
Den dekker også feilstiene: ugyldig organisasjonsnummer, stedsnavn brukt som Entur-id, for stort kartutsnitt. En feilmelding en modell kan handle på er en funksjon, ikke en detalj.
Lisens
MIT. Dataene har sine egne lisenser — se tabellen over og _kilde-feltet i hvert svar.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn unofficial MCP server providing access to Dutch government open data from data.overheid.nl, CBS statistics, and KVK business registry. Enables natural language queries for discovering datasets, inspecting metadata, and querying data without API keys or authentication.Last updated14MIT
- AlicenseAqualityCmaintenanceMCP server that wraps Kartverket's open APIs for Norwegian geographic data including place names, addresses, elevation, municipalities, properties, statistical districts, and building points. Requires no authentication.Last updated754MIT
- AlicenseAqualityBmaintenanceMCP server that wraps open Norwegian neighborhood data, enabling queries for public transport coverage, traffic noise, and green areas around a location.Last updated356MIT
- AlicenseAqualityDmaintenanceMCP server that provides tools to search Norwegian addresses, reverse geocode, find place names, and get elevation data from Kartverket's open geographic datasets.Last updated4141MIT
Related MCP Connectors
This MCP server provides seamless access to Malaysia's government open data, including datasets, w…
MCP server for live, sourced Brazilian public data from the official IBGE APIs.
Official Microsoft MCP Server to query Microsoft Entra data using natural language
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/smlhus1/datakilder-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server