suomi-mcp
This server gives AI assistants access to Finnish open government data through three MCP tools for company and procurement lookups.
hae_yritystiedot_prh: Look up a Finnish company's basic info (name, business ID, company form, registration date, status) by business ID or name via the PRH/YTJ open API.
hae_julkiset_hankinnat_hilma: Search Hilma's public procurement notices by keyword; returns title, contracting entity, deadline, and direct links to the notice and tender documents. Optional result limit and filter to only open/active notices.
hae_kaupparekisteri_muutokset_prh: Get company basics plus a full timeline of Finnish Trade Register entries, such as board/name changes, financial statements, share capital, bankruptcy, restructuring, or liquidation.
Click on "Deploy 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., "@suomi-mcp Hae YTJ:stä yritys Y-tunnuksella 1629284-5."
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.
suomi-mcp
Osa datakytkin-projektia. Kokoelma MCP-työkaluja, jotka tuovat suomalaista avointa dataa suoraan tekoälyavustajien käyttöön – ilman selaimessa kikkailua, PDF-latauksia tai leikepöytää.
Paikallisesti ajettava MCP-palvelin (stdio), joka tuo Claude Desktopin (tai muun MCP-yhteensopivan clientin) käyttöön 11 työkalua suomalaisiin avoimen datan rajapintoihin:

Työkalu | Lähde | Mitä tekee |
| PRH / YTJ avoin data ( | Yrityksen perustiedot Y-tunnuksella tai nimellä: nimi, Y-tunnus, yritysmuoto, toimiala (TOL), kotipaikka, verkkosivu, rekisteröintipäivä, toiminnan tila, rekisterimerkinnät (ALV-, ennakkoperintä-, työnantajarekisteri). |
| Hilma – julkiset hankinnat ( | Hakee avoinna olevat hankintailmoitukset hakusanalla: otsikko, hankintayksikkö, määräaika, suorat linkit ilmoitukseen ja tarjouspyyntöön. |
| Hilma – julkiset hankinnat | Yhden hankinnan kaikki tiedot: koko kuvaus, arvioitu arvo, menettely, CPV-koodit, osat, vastuullisuuskriteerit, TED-numero, linkit. |
| PRH – rekisteröidyt ilmoitukset ( | Yrityksen perustiedot + aikajana kaupparekisteriin rekisteröidyistä ilmoituksista: hallitus- ja nimenmuutokset, tilinpäätökset, osakepääoma, konkurssi/saneeraus/selvitystila. Täysi kattavuus. |
| EU VIES | Tarkistaa EU-ALV-tunnuksen voimassaolon + palauttaa nimen ja osoitteen. Käytä ennen ALV 0 % -laskutusta EU-maahan. |
| porssisahko.net avoin API | Suomen pörssisähkön (spot) tuntihinnat: hinta nyt, seuraavat tunnit, vuorokauden halvin ja kallein tunti. c/kWh sis. ALV 25,5 %. |
| Ilmatieteen laitos, avoin data (WFS) | Sääennuste tunneittain paikkakunnalle: lämpötila, tuuli, sade, ilmankosteus. |
| Tilastokeskus StatFin (elinkustannusindeksi) | Rahan ostovoiman muutos vuosien välillä, yhtenäinen sarja vuodesta 1951. "Paljonko 1000 € vuonna 1985 on nyt." |
| Tilastokeskus StatFin (ashi/13mu) | Vanhojen osakeasuntojen neliöhinnat ja kauppamäärät postinumeroalueittain, talotyypeittäin. |
| Tilastokeskus StatFin (khi/11xx) | Bensiini (95/98), diesel ja kevyt polttoöljy: keskihinta viimeisimmältä tilastokuukaudelta + muutos ed. kuukauteen ja vuoden takaiseen. |
| – (ei rajapintaa) | IBAN-tilinumeron rakenne + tarkistusnumero (mod-97). Suomalaiselle IBANille kansallinen tilinumero ja arvio pankista. |
PRH: vanha
avoindata.prh.fi/bis/v1on poistettu käytöstä. Tämä palvelin käyttää nykyistä v3-rajapintaa (sama avoin YTJ-yrityshaku, ei API-avainta).Hilma: käytetään Hilman julkista hakurajapintaa, joka ei vaadi avainta. Koko ilmoituksen eForms-XML:n saa erikseen AVP-read-rajapinnasta (ilmainen tilausavain) – sitä ei tässä tarvita.
Pikakäyttö
Vaatii Node.js 18+ polussa (kehitetty ja testattu Node 20:llä).
Lisää Claude Desktopin konfiguraatioon:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"datakytkin": {
"command": "npx",
"args": ["-y", "datakytkin-mcp"]
}
}
}Käynnistä Claude Desktop uudelleen. Ei tarvita erillistä asennusta – npx hakee
paketin npm:stä.
Jos näet virheen fetch is not defined
Claude Desktop käynnistää palvelimen omalla PATH:llaan, ja npx valitsee
#!/usr/bin/env node -rivin kautta ensimmäisen node:n PATH:ssa – usein
vanhan järjestelmä-Noden (esim. v16), josta puuttuu fetch. Vaihda tällöin
suoraan absoluuttiseen Node 18+ -binääriin ja globaaliin asennukseen:
# asenna halutulla Nodella (esim. nvm:n Node 20)
"$(nvm which 20)" "$(dirname "$(nvm which 20)")/npm" install -g datakytkin-mcp
# tulosta polut configia varten:
echo "command: $(nvm which 20)"
echo "entry: $("$(nvm which 20)" "$(dirname "$(nvm which 20)")/npm" root -g)/datakytkin-mcp/dist/index.js"{
"mcpServers": {
"datakytkin": {
"command": "/ABSOLUUTTINEN/POLKU/node/v20.x.x/bin/node",
"args": ["/ABSOLUUTTINEN/POLKU/node/v20.x.x/lib/node_modules/datakytkin-mcp/dist/index.js"]
}
}
}node ajetaan tässä eksplisiittisesti, joten PATH:n vanha Node ei häiritse.
Päivitys: npm install -g datakytkin-mcp@latest samalla Nodella.
Related MCP server: finnish-company-mcp-server
Testikehotteet
"Hae PRH:sta yrityksen tiedot Y-tunnuksella 1629284-5."
"Etsi Hilmasta avoimet pilvipalveluihin liittyvät hankintailmoitukset, näytä 5."
"Hae YTJ:stä kaikki yritykset joiden nimessä on 'Reaktor' ja listaa Y-tunnukset."
"Näytä Hilmasta it-konsultoinnin tarjouspyynnöt ja niiden määräajat."
"Listaa Y-tunnuksen 1629284-5 viimeisimmät kaupparekisteriin rekisteröidyt muutokset."
"Onko yrityksellä 1234567-8 merkintöjä konkurssista tai saneerauksesta? Milloin hallitus on viimeksi muuttunut?"
"Mikä on pörssisähkön hinta nyt ja milloin tänään on halvinta?"
"Onko ALV-tunnus DE811128135 voimassa ja kenelle se kuuluu?"
"Millainen sää Rovaniemellä on seuraavat 12 tuntia?"
"Paljonko 500 markkaa vuonna 1990 on nykyrahassa?"
"Näytä kaikki tiedot Hilman tietoturvakonsultoinnin dynaamisesta hankintajärjestelmästä."
"Mitä maksaa neliö postinumerossa 33720?"
"Paljonko diesel maksaa nyt ja miten hinta on muuttunut vuodessa?"
"Onko IBAN FI21 1234 5600 0007 85 muodoltaan oikein ja minkä pankin tili?"
Kehitys
git clone https://github.com/datakytkin/suomi-mcp.git
cd suomi-mcp
nvm use 20 # tai: nvm install 20
npm install
npm run typecheck # tarkista että kääntyy
npm test # vitest: työkalut (mockattu fetch), rekisteri, auth, mcp-server
npm run dev # käynnistä palvelin stdio-tilassa (= npx tsx src/index.ts)Palvelin puhuu MCP:tä stdin/stdout-yhteydellä; lokit menevät stderriin.
Käännetty ajo:
npm run build # tuottaa dist/
npm start # = node dist/index.jsUuden työkalun lisääminen: ks. CONTRIBUTING.md. Käytännössä:
luo src/tools/<lahde>.ts, vie siitä export const tool: ToolDefinition, valmista –
src/tools/registry.ts löytää sen automaattisesti sekä stdio-palvelimeen että
Gatewayhin.
Claude Desktop -konfiguraatio repo-checkoutista (kehitykseen / omiin muutoksiin):
{
"mcpServers": {
"datakytkin": {
"command": "npx",
"args": ["tsx", "/ABSOLUUTTINEN/POLKU/suomi-mcp/src/index.ts"]
}
}
}Datasilta-Gateway (kokeellinen)
Sama työkalusetti tarjottuna keskitettynä HTTP-palvelimena, jotta asiakkaan ei tarvitse asentaa mitään paikallisesti – hän liittää yhden URL:n + tokenin suoraan Claude Desktopiin tai Grokin Custom Connectors -kenttään.
Gateway (src/gateway.ts, src/auth.ts) elää tässä samassa repossa
(Open Core): koodi on MIT, kaupallinen arvo on hostatussa palvelussa +
data-integraatioissa, ei transporttikoodissa. Jos/kun mukaan tulee laskutusta tai
asiakastietoa, ne eriytetään omaksi (privaatiksi) osakseen.
npm install
DATASILTA_DEV_ALLOW_ANY=1 PORT=3000 npm run dev:gatewayPäätepisteet:
Reitti | Kuvaus |
| HTTP+SSE-kuljetus (laajin connector-tuki). Client postaa viestit |
| Streamable HTTP -kuljetus (spec-nykyinen). Token joko |
| Tila + työkalulista |
| Lyhyt käyttöohje |
Mock-tokenit: demo (pro), 123 (free), enterprise. Kehityksessä
DATASILTA_DEV_ALLOW_ANY=1 hyväksyy minkä tahansa ≥3 merkin tokenin.
Kovennukset: plan-kohtainen rate limit (free 20 / pro 120 / enterprise 600
kutsua/min, RateLimit-* + Retry-After -otsakkeet), rinnakkaisten SSE-sessioiden
katto per asiakas, X-Request-Id + pyyntöloki, graceful shutdown (SIGTERM/SIGINT
sulkee SSE-sessiot siististi – tärkeä konttiympäristöissä).
Julkinen testaus ngrokilla:
ngrok http 3000
# -> https://xxxx.ngrok-free.app/sse?token=demo Grokiin / ClaudeenKokeellinen. CORS on täysin auki ja auth on mock. Älä aja tätä julkisesti ilman oikeaa tokenvalidointia ja CORS-rajausta.
?token=URL:ssa vuotaa lokeihin – tuotannossaAuthorization: Bearer.
Ei virallinen tuote
datakytkin on itsenäinen avoimen lähdekoodin projekti. Se käyttää PRH:n ja
Hilman julkisia rajapintoja, mutta ei ole PRH:n, Hanselin, Hilman tai minkään
viranomaisen hyväksymä, tukema tai ylläpitämä. Data tulee sellaisenaan lähteestä.
English
suomi-mcp is part of the datakytkin project: a set of Model Context Protocol tools that bring Finnish open government data straight into AI assistants – no browser tabs, PDF downloads or copy-paste.
A locally run MCP server (stdio) exposing 11 tools to Claude Desktop (or any MCP-compatible client):
Tool | Source | What it does |
| Finnish Patent and Registration Office (PRH) / Business Information System, open data v3 | Company details by Business ID or name: name, Business ID, company form, industry (TOL), domicile, website, registration date, status, and register entries (VAT / prepayment / employer register). |
| Hilma – Finnish public procurement notices ( | Search open procurement notices by keyword: title, contracting entity, deadline, direct links to the notice and tender documents. |
| Hilma – Finnish public procurement notices | All details of a single procurement: full description, estimated value, procedure, CPV codes, lots, sustainability criteria, TED number, links. |
| PRH – registered notices open data | Company basics + a timeline of entries registered in the Finnish Trade Register: board and name changes, financial statements, share capital, bankruptcy / restructuring / liquidation. Full coverage. |
| EU VIES | Validates an EU VAT number and returns the registered name and address. Use before zero-rated intra-EU invoicing. |
| porssisahko.net open API | Finnish day-ahead electricity spot prices by hour: price now, upcoming hours, cheapest and most expensive hour of the day. c/kWh incl. 25.5% VAT. |
| Finnish Meteorological Institute open data (WFS) | Hourly weather forecast for a place: temperature, wind, precipitation, humidity. |
| Statistics Finland StatFin (cost-of-living index) | Purchasing power of a sum between two years, continuous series since 1951. |
| Statistics Finland StatFin (ashi/13mu) | Resale flat €/m² and transaction counts by postal-code area, by dwelling type. |
| Statistics Finland StatFin (khi/11xx) | Petrol (95/98), diesel and light fuel oil: latest monthly average price + change vs previous month and year. |
| – (no API) | IBAN structure + check digits (mod-97), offline. For Finnish IBANs also the national account number and a bank guess. |
Tool names and all output are in Finnish (that is the data's language).
Install
Requires Node.js 18+. Add to your Claude Desktop config
(~/Library/Application Support/Claude/claude_desktop_config.json on macOS,
%APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"datakytkin": {
"command": "npx",
"args": ["-y", "datakytkin-mcp"]
}
}
}Restart Claude Desktop.
Seeing fetch is not defined? Claude Desktop launches the server with its own
PATH, and npx may pick an old system node (e.g. v16) that lacks fetch.
Install globally with a Node 18+ binary and point command straight at it:
npm install -g datakytkin-mcp
npm root -g # entry = <printed path>/datakytkin-mcp/dist/index.js{
"mcpServers": {
"datakytkin": {
"command": "/absolute/path/to/node18+/bin/node",
"args": ["/absolute/path/to/lib/node_modules/datakytkin-mcp/dist/index.js"]
}
}
}Not an official product
datakytkin is an independent open-source project. It consumes public APIs from
PRH and Hilma but is not endorsed, supported or operated by PRH, Hansel, Hilma or
any public authority. Data is served as-is from the source. See
SECURITY.md for notes on the data sources and responsible use.
Lisenssi / License
Available Tools
11 toolshae_asuntojen_hinnatHae asuntojen neliöhinnat (postinumero)ARead-onlyIdempotent
Hakee vanhojen osakeasuntojen neliöhinnat ja kauppojen lukumäärän postinumeroalueella Tilastokeskuksen tilastosta, talotyypeittäin (yksiöt / kaksiot / kolmiot+ / rivitalot). Anna postinumero ja halutessasi vuosi.
Inputs: postinumero (required), vuosi.
hae_hankintailmoitusHae yhden hankinnan tiedot (Hilma)ARead-onlyIdempotent
Palauttaa yhden Hilma-hankintailmoituksen kaikki olennaiset tiedot: koko kuvaus, arvioitu arvo, menettely, CPV-koodit, osat, vastuullisuuskriteerit, TED-numero ja linkit. Anna hakusana tai ilmoitusnumero. Täydentää hae_julkiset_hankinnat_hilma -listahakua.
Inputs: hakusana (required), vain_aktiiviset.
hae_julkiset_hankinnat_hilmaHae julkiset hankinnat (Hilma)ARead-onlyIdempotent
Hakee julkisia hankintailmoituksia Hilmasta (hankintailmoitukset.fi) hakusanalla. Palauttaa ilmoituksen otsikon, hankintayksikön, tarjousten määräajan ja suorat linkit ilmoitukseen ja tarjouspyyntöasiakirjoihin. Oletuksena vain avoinna olevat ilmoitukset.
Inputs: hakusana (required), max_tulokset, vain_aktiiviset.
hae_kaupparekisteri_muutokset_prhHae kaupparekisterin muutokset (PRH)ARead-onlyIdempotent
Hakee yrityksen perustiedot ja aikajanan kaupparekisteriin rekisteröidyistä ilmoituksista PRH:n avoimesta rajapinnasta: hallitus- ja nimenmuutokset, tilinpäätökset, osakepääoman muutokset, konkurssi/saneeraus/selvitystila jne. Anna Y-tunnus (1234567-8) tai yrityksen nimi. Täysi kattavuus kaikkiin kaupparekisteriyrityksiin.
Inputs: hakusana (required), max_tulokset.
hae_polttoaineen_hinnatHae polttoaineen hinnatARead-onlyIdempotent
Hakee bensiinin (95 E10, 98 E5), dieselin ja kevyen polttoöljyn keskihinnan viimeisimmältä tilastokuukaudelta sekä muutoksen edelliseen kuukauteen ja vuoden takaiseen. Lähde: Tilastokeskus (kuukauden keskihinta).
Inputs: no named parameters.
hae_porssisahkoHae pörssisähkön hintaARead-onlyIdempotent
Hakee Suomen pörssisähkön (spot) tuntihinnat: hinta nyt, seuraavat tunnit sekä vuorokauden halvin ja kallein tunti. Hinnat c/kWh, sisältävät ALV 25,5 %. Lähde: porssisahko.net (avoin, ei API-avainta).
Inputs: tunnit.
hae_saaHae sääennuste (Ilmatieteen laitos)ARead-onlyIdempotent
Hakee sääennusteen (lämpötila, tuuli, sade, ilmankosteus) tunneittain suomalaiselle paikkakunnalle Ilmatieteen laitoksen avoimesta datasta. Anna paikkakunnan nimi ja halutessasi tuntimäärä.
Inputs: paikkakunta (required), tunnit.
hae_yritystiedot_prhHae yritystiedot (PRH / YTJ)ARead-onlyIdempotent
Hakee suomalaisen yrityksen perustiedot PRH:n avoimesta YTJ-rajapinnasta. Anna joko Y-tunnus (1234567-8) tai yrityksen nimi. Palauttaa nimen, Y-tunnuksen, yritysmuodon, rekisteröintipäivän ja toiminnan tilan.
Inputs: hakusana (required).
laske_inflaatioLaske inflaatio / rahan ostovoimaARead-onlyIdempotent
Muuntaa rahasumman ostovoiman vuosien välillä Tilastokeskuksen elinkustannusindeksillä (yhtenäinen sarja vuodesta 1951). Esim. "paljonko 1000 € vuonna 1985 on nyt". Anna summa (€) ja lähtövuosi; kohdevuosi oletuksena viimeisin.
Inputs: summa (required), vuosi_alku (required), vuosi_loppu.
tarkista_alv_tunnusTarkista EU-ALV-tunnus (VIES)ARead-onlyIdempotent
Tarkistaa EU:n ALV-tunnuksen (VAT number) voimassaolon EU:n VIES-palvelusta ja palauttaa rekisteröidyn nimen ja osoitteen. Anna tunnus maakoodilla (esim. FI01098628, DE811128135). Käytä ennen ALV 0 % -laskutusta EU-maahan.
Inputs: alv_tunnus (required).
tarkista_ibanTarkista IBAN-tilinumeroARead-onlyIdempotent
Tarkistaa IBAN-tilinumeron rakenteen ja tarkistusnumeron (mod-97). Suomalaiselle IBANille näyttää myös kansallisen tilinumeron ja arvion pankista. Ei tee verkkokutsuja.
Inputs: iban (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Every tool targets a clearly different dataset or operation. Even adjacent tools such as PRH company info vs. PRH changes, procurement search vs. notice detail, and IBAN vs. VAT validation are easy to distinguish by name and description.
The tools follow a predictable Finnish pattern: hae_ for data lookups, tarkista_ for validations, and laske_ for calculations. The snake_case convention and object-plus-source naming (e.g. hae_polttoaineen_hinnat, hae_kaupparekisteri_muutokset_prh) are consistent throughout.
With 11 tools, the surface is broad enough to cover several Finnish public-data domains without feeling bloated. Each tool serves a concrete, non-redundant purpose and the count fits the general-purpose national data scope.
The set covers paired operations well (procurement list/detail, company info/changes) and includes validation and calculation utilities. A couple of conceivable additions exist, such as a Finnish business ID validator or population-data lookup, but the current surface has no obvious dead ends.
Maintenance
Related MCP Connectors
Agent-native API for Finnish public company data via YTJ. Pay-per-call $0.01 USDC over x402.
Finnish Patent and Registration Office (PRH) — YTJ open data MCP. Finland's official business…
Hilma MCP — Finnish government public procurement notices (keyed).
Validate an EU VAT number on VIES, look up an LEI, or search a company register.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides access to the Finnish company registry (PRH/YTJ) to search for businesses and retrieve detailed information using Business IDs. It enables users to perform industry-specific searches and track recent company registrations through official government open data.8 npmMIT
- AlicenseNot gradedqualityDmaintenanceMCP server for the Finnish Business Register (PRH/YTJ). Look up any Finnish company by Business ID (Y-tunnus) or name.12 npmMIT
- AlicenseNot gradedqualityCmaintenanceProvides access to Finnish government public procurement notices. Enables querying procurement data via natural language through the Pipeworx gateway.313 npmMIT
- AlicenseNot gradedqualityDmaintenanceMCP server for Finnish public procurement (HILMA): search tenders, awards and procurement plans by keyword, CPV, region and buyer, and fetch full notice details.8 npmMIT