Kirjoittaja: Vectura Solutions Oy · Data-analytiikan ja raportoinnin toteutuksia vuodesta 2018.
Oppaan ydinkohdat
- MCP-palvelin tarjoaa tekoälysovellukselle työkaluja tiedon hakemiseen ja laskentaan. Sovellus muodostaa vastauksen palautetun tiedon perusteella.
- Toimiva toteutus alkaa datamallista, mittarien määritelmistä ja käyttöoikeuksista. Ensimmäiseksi työkaluksi riittää yksi hyödyllinen ja tarkistettava kysymys.
- Valmis BigQuery MCP -palvelin voi riittää yleiseen datan tutkimiseen. Oma toteutus auttaa rajaamaan käytön yrityksen sovittuihin mittareihin ja tiedonhakuihin.
Mikä MCP-palvelin on ja miten se toimii?
MCP eli Model Context Protocol on protokolla, jolla tekoälysovellus voi käyttää ulkopuolisia työkaluja ja tietolähteitä. MCP-palvelin kuvaa saatavilla olevat työkalut, vastaanottaa kutsut ja palauttaa tulokset. Tekoälysovelluksen MCP-asiakas huolehtii yhteydestä palvelimeen.
Esimerkiksi käyttäjä kysyy: ”Paljonko yritysasiakkaiden nettomyynti oli elokuussa?” Tekoälysovellus voi kutsua myyntitiedon hakutyökalua. Palvelin tarkistaa pyynnön ja käyttöoikeudet, suorittaa sovitun BigQuery-kyselyn ja palauttaa luvun taustatietoineen. Sovellus käyttää tulosta vastauksen muodostamiseen.
MCP-palvelin ei itsessään päättele liiketoiminnan käsitteitä tai takaa vastauksen oikeellisuutta. Datan hakeminen kysymyksen yhteydessä ei myöskään tarkoita kielimallin kouluttamista yrityksen datalla. Haun ajantasaisuus riippuu siitä, milloin taustalla oleva aineisto on päivitetty.
Mitä hyötyä yrityksen datan liittämisestä tekoälyyn on?
Hyödyllinen käyttökohde on toistuva kysymys, jonka vastaus vaatii nyt raportin avaamista, suodattamista ja luvun selittämistä toiselle henkilölle. MCP-työkalu voi tuoda saman sovitun tiedon suoraan keskusteluun. Vakiintunut raportti palvelee edelleen säännöllistä seurantaa.
- Helpompi tiedonhaku: käyttäjä voi kysyä tutuin liiketoiminnan termein ja saada luvun sekä sen rajaukset.
- Yhteiset laskentasäännöt: nettomyynti tai aktiivinen asiakas lasketaan ylläpidetystä datamallista samalla tavalla eri käyttökertoina.
- Vähemmän käsin koottavia yhteenvetoja: rajattu työkalu palauttaa kysymykseen tarvittavan koosteen.
- Tarkistettava vastaus: lähde, ajanjakso ja datan päivitystieto auttavat vertaamaan tulosta raportointiin.
Hyöty kannattaa mitata pilotissa esimerkiksi vastauksen löytämiseen kuluvana aikana ja oikeiden vastausten osuutena. Pelkkä yhteyden avaaminen tietokantaan ei ratkaise epäselviä mittareita tai puutteellista lähdedataa.
Valmis BigQuery MCP -palvelin vai oma toteutus?
Google tarjoaa BigQuerylle hallitun MCP-palvelimen. Se voi olla sopiva lähtökohta, kun käyttäjän pitää tutkia tauluja, metatietoja ja dataa laajasti. Arvioi ensin sen työkalut, yhteensopivuus valitun tekoälysovelluksen kanssa ja mahdollisuus rajata pääsy tarvittaviin aineistoihin.
Oma MCP-palvelin on hyödyllinen, kun halutaan tarjota nimettyjä liiketoimintatyökaluja, kuten hae_myynti tai hae_tilauskanta. Palvelin voi käyttää ennalta sovittuja kyselyitä, tarkistaa rajaukset ja palauttaa mittarin määritelmän jokaisen tuloksen mukana. Käyttäjän ei silloin tarvitse tuntea tietokannan rakennetta.
Räätälöinnin tarve syntyy usein juuri datan valmistelusta ja käyttöoikeuksista. Jos nykyiset BigQuery-mallit jo vastaavat tarpeeseen, niitä kannattaa hyödyntää. Jos sama mittari tarkoittaa eri järjestelmissä eri asiaa, määritelmä on ratkaistava ennen tiedon avaamista tekoälysovellukselle.
1. Valmistele BigQuery-data ja määrittele mittari
Aloitetaan kysymyksestä: ”Mikä oli B2B-asiakkaiden nettomyynti elokuussa 2026?” Tässä kuvitteellisessa esimerkissä nettomyynti tarkoittaa laskutettua myyntiä ilman arvonlisäveroa, alennusten ja hyvitysten jälkeen. Hyvitys kirjataan sen kirjauspäivälle ja kaikki summat ovat euroja. Oman yrityksen määritelmä voi olla toinen.
Laske päiväkohtainen kooste etukäteen tauluun ja avaa se BigQuery-näkymän my-project.ai_views.sales_daily kautta. Yksi rivi vastaa yhtä päivää ja asiakasryhmää. Esimerkin kentät ovat sales_date (DATE), customer_group (STRING) ja net_sales_eur (NUMERIC). Taustalla oleva malli käsittelee duplikaatit, valuutat ja puuttuvat tiedot ennen hakua.
Näkymä sisältää tässä vain yhden yrityksen tiedot. Asiakkaan nimiä tai tilaustason rivejä ei tarvita tämän kysymyksen ratkaisemiseen. Tarkista kooste talousraporttia vasten ja varmista, että B2B- ja B2C-ryhmien määritelmät ovat yksiselitteisiä.
Pidä tiedonsiirron päivitysaika ja tieto valmiista ajanjaksosta erillään myyntipäivistä. Viimeisin myyntipäivä ei todista, että kaikki lähdejärjestelmän tapahtumat ovat saapuneet. Päivitystiedon voi tuottaa esimerkiksi aineiston latauksesta ja tarkistuksista vastaava ajoketju.
2. Suunnittele rajattu MCP-työkalu
Työkalun nimi, kuvaus ja parametrien selitykset auttavat tekoälysovellusta valitsemaan oikean haun. Kerro erityisesti päivämäärärajojen merkitys ja se, mitä työkalu palauttaa. Alla on työkalun määrittelyesimerkki, ei kokonainen palvelin tai MCP-viesti.
{
"name": "hae_myynti",
"description": "Hakee euroina nettomyynnin ilman ALV:tä, alennusten ja hyvitysten jälkeen, valitulle ajalle ja asiakasryhmälle.",
"inputSchema": {
"type": "object",
"properties": {
"start_date": {
"type": "string",
"format": "date",
"description": "Ensimmäinen mukaan otettava päivä, YYYY-MM-DD."
},
"end_date": {
"type": "string",
"format": "date",
"description": "Ensimmäinen pois jätettävä päivä, YYYY-MM-DD."
},
"customer_group": {
"type": "string",
"enum": ["B2B", "B2C"],
"description": "B2B = yritysasiakkaat, B2C = kuluttaja-asiakkaat."
}
},
"required": ["start_date", "end_date", "customer_group"],
"additionalProperties": false
}
}Elokuun haussa start_date on 2026-08-01 ja end_date on 2026-09-01. Palvelimen toteutuksen pitää tarkistaa päivämäärien kelvollisuus, alku- ja loppupäivän järjestys sekä esimerkiksi enintään 92 päivän hakujakso. JSON Schema -kuvaus ei korvaa näitä tarkistuksia eikä käyttöoikeuksien valvontaa.
Jos käyttäjä ei kerro vuotta tai asiakasryhmää, sovelluksen tulee pyytää tarkennus. Testaa tämä käytetyllä tekoälysovelluksella. Yrityksen tai käyttäjän tunnistamista ei pidä jättää kielimallin antaman tunnisteen varaan: pääsy tietoon ratkaistaan todennetun käyttäjän perusteella palvelimella.
3. Toteuta tiedonhaku parametrisoidulla SQL-kyselyllä
Tässä toteutustavassa SQL-kysely pysyy palvelimella ennalta määriteltynä. Työkalu välittää päivämäärät BigQueryn DATE-parametreina ja asiakasryhmän STRING-parametrina. Parametrien arvoja ei liitetä SQL-tekstiin merkkijonoja yhdistelemällä.
SELECT
customer_group,
SUM(net_sales_eur) AS net_sales_eur
FROM `my-project.ai_views.sales_daily`
WHERE sales_date >= @start_date
AND sales_date < @end_date
AND customer_group = @customer_group
GROUP BY customer_groupTaulun tai näkymän nimeä ei voi korvata BigQueryn kyselyparametrilla. Pidä käytettävä näkymä kiinteänä tai valitse se palvelimen sallittujen kohteiden joukosta käyttöoikeuksien perusteella. Älä ota tietolähteen nimeä vapaana syötteenä kielimallilta.
Tyhjä tulos ei yksin tarkoita nollamyyntiä: syynä voi olla myös puuttuva aineisto. Määrittele erikseen, milloin voidaan palauttaa vahvistettu nolla ja milloin työkalu ilmoittaa, ettei ajanjakson tietoja ole saatavilla. Myös puuttuvat summat on tunnistettava laadun tarkistuksissa, sillä SUM ohittaa NULL-arvot.
4. Palauta luvun mukana sen tulkintaan tarvittavat tiedot
Pelkkä numero jättää tulkinnan avoimeksi. Palauta myös valuutta, ajanjakso, mittarin määritelmä ja lähde. Alla on kuvitteellinen esimerkki työkalun palauttamasta tietosisällöstä. Se ei ole asiakastulos eikä kokonainen MCP-protokollan vastaus.
{
"status": "ok",
"period": {
"start": "2026-08-01",
"end_exclusive": "2026-09-01"
},
"customer_group": "B2B",
"net_sales_eur": "12345.67",
"currency": "EUR",
"metric_definition": "Laskutettu myynti ilman ALV:tä, alennusten ja hyvitysten jälkeen. Hyvitykset kirjauspäivän mukaan.",
"source": "my-project.ai_views.sales_daily",
"data_loaded_at": "2026-09-01T06:00:00Z",
"complete_through_date": "2026-08-31"
}Palvelin yhdistää SQL-tuloksen ajoketjun tuottamaan päivitystietoon. data_loaded_at kertoo aineiston latausajan ja complete_through_date tarkistetun valmiin ajanjakson, eivät tämän työkalukutsun kellonaikaa. Rahamäärä on merkkijono, jotta desimaaliarvo säilyy tarkkana järjestelmien välillä.
Määrittele myös virheiden, puuttuvan datan ja keskeneräisen ajanjakson vastaukset. MCP tukee rakenteista structuredContent-tulosta ja sen kuvaamista outputSchema-kentällä. Sovita ne käytettyyn SDK:hon ja varmista, että tekoälysovellus näyttää olennaiset rajaukset käyttäjälle.
Myyntisumma vastaa kysymykseen myynnin määrästä. Se ei yksin kerro, miksi myynti muuttui. Syiden arviointi vaatii vertailutietoa ja mahdollisesti muita työkaluja; tätä eroa kannattaa testata myös sovelluksen vastauksissa.
5. Rajaa käyttöoikeudet palvelimella ja BigQueryssa
Tunnista käyttäjä ja tarkista jokaisella kutsulla, mitä tietoa hän saa hakea. Anna palvelimen suoritusidentiteetille vain tarvittavat BigQuery-oikeudet: pääsy valittuun aineistoon ja kyselyajojen suorittamiseen käytettävässä projektissa. Pelkkä ohje kielimallille tai työkalun kuvaaminen vain lukevaksi ei estä luvatonta käyttöä.
BigQueryn valtuutetulla näkymällä voidaan avata rajattu aineisto ilman suoraa pääsyä lähdetauluihin. Jos sama palvelin palvelee useita yrityksiä, tietojen eristys on suunniteltava erikseen. Yhteinen palvelutunnus ei automaattisesti tunne loppukäyttäjän oikeuksia. Palvelin johtaa sallitun yrityksen ja aineiston todennetusta identiteetistä.
Tietokannan vapaa teksti voi sisältää ohjeiksi naamioitua sisältöä eli epäsuoraa prompt injectionia. Käsittele haetut sisällöt datana ja rajaa työkalut, palautettavat tiedot sekä jatkotoimet. JSON-muoto ja lukuoikeus eivät yksin estä tiedon vuotamista. Arvioi myös, mihin tekoälysovellus välittää tulokset ja miten se säilyttää niitä.
6. Hallitse kyselykustannuksia ja vasteaikaa
Tekoälysovellus voi tehdä yhden keskustelun aikana useita työkalukutsuja. Rajaa siksi sekä yksittäisen haun koko että kutsujen määrä. Etukäteen tauluun laskettu päiväkooste voi vähentää haussa luettavaa dataa. Tavallinen näkymä ei yksin vähennä luettavaa taustadataa, jos se laskee koosteen tapahtumatason aineistosta jokaisella kyselyllä. Osiointi auttaa, kun päivämääräsuodatus kohdistuu osioavaimeen ja rajaa luettavia osioita.
- BigQuery: kyselyiden kustannusten hallinta
- BigQuery: tavallisten näkymien toiminta ja laskutus
- BigQuery-konsultointi ja datamallien optimointi
- Salli vain tarpeelliset kentät, ryhmittelyt ja hakujaksot.
- Aseta aikakatkaisut sekä käyttäjäkohtaiset kutsu- ja samanaikaisuusrajat.
- Käytä on-demand-hinnoittelussa maximum_bytes_billed-rajaa yksittäisen kyselyn laskutettavien tavujen rajoittamiseen.
- Seuraa käsiteltyjä tavuja, vasteaikaa, virheitä ja työkalukutsujen määrää. Sovi hälytysrajat ja vastuuhenkilö.
LIMIT rajaa tulosrivit, mutta ei ole luotettava tapa rajata luettavan datan kustannusta. maximum_bytes_billed ei puolestaan ole koko palvelun budjettikatto. Kokonaiskustannuksiin kuuluvat myös palvelimen ajaminen, datan ylläpito ja tekoälysovelluksen käyttö.
7. Ota palvelin käyttöön rajatulla pilotilla
Esimerkin työkalukuvaus, SQL ja tulosrakenne ovat toteutuksen lähtökohtia. Toimiva palvelin tarvitsee lisäksi MCP SDK:n, BigQuery-yhteyden, syötteiden tarkistukset, virheenkäsittelyn ja tunnistautumisen. Valitse SDK ja yhteystapa sen mukaan, mitä käyttämäsi tekoälysovellus tukee.
Paikallinen palvelin sopii kehityskokeiluun. Usean käyttäjän toteutuksessa yhteinen etäpalvelin voi helpottaa ylläpitoa, mutta se tarvitsee valvotun ajoympäristön ja suojatun yhteyden. Pidä tunnukset salaisuuksien hallinnassa, vie koodi versionhallintaan ja kirjaa käyttöönoton sekä palautuksen vaiheet.
Aloita yhdestä aineistosta ja yhdestä työkalusta. Sovi etukäteen, millaisia kysymyksiä pilotilla ratkaistaan, kuka tarkistaa luvut ja millä perusteella käyttöä laajennetaan. BigQueryn aiempi raportti toimii hyvänä vertailukohtana.
Miten MCP-toteutuksen toimivuus testataan?
Testaa sekä palvelimen palauttama tieto että tekoälysovelluksen lopullinen vastaus. Oikea SQL-tulos ei auta, jos sovellus sekoittaa ajanjakson tai jättää keskeneräisen aineiston huomautuksen pois. Käytä sovittuja vertailukysymyksiä myös työkalujen ja sovelluksen päivitysten jälkeen.
- Tunnettu myyntijakso: täsmäävätkö summa, hyvitykset ja päivämäärärajat vertailuraporttiin?
- Puutteellinen kysymys: pyytääkö sovellus tarkennuksen puuttuvaan vuoteen tai asiakasryhmään?
- Puuttuva tai vanhentunut aineisto: erottaako vastaus sen vahvistetusta nollamyynnistä?
- Luvaton haku: estyvätkö toisen yrityksen tiedot ja sallittua laajempi haku palvelimella?
- Haitallinen teksti: säilyvätkö työkalujen ja tiedon käytön rajat, vaikka aineistossa olisi ohjeiksi naamioitua sisältöä?
- Virhe tai kuormitus: katkeaako liian pitkä haku hallitusti ja löytyykö ongelma lokeista ilman tarpeetonta asiakasdatan tallentamista?
Kun yksi tiedonhaku toimii luotettavasti, seuraava työkalu voi tuoda esimerkiksi vertailujakson tai tilauskannan. Laajenna samalla datan määritelmiä, käyttöoikeustestejä ja seurantaa. Näin jokaiselle uudelle käyttötavalle on selkeä tarkoitus ja tarkistettava tulos.
Haluatteko yrityksenne datan tekoälyn käyttöön?
Vectura Solutions Oy valmistelee BigQuery-dataa generatiivisen tekoälyn käyttöön ja toteuttaa sitä hyödyntäviä MCP-palvelimia. Voimme aloittaa yhdestä liiketoimintakysymyksestä, määritellä tarvittavan aineiston ja toteuttaa rajatun pilotin.
Tutustu MCP-palvelinten toteutukseen