Model Context Protocol yhdistää agentit palveluihin

Blog | August 19, 2025

MCP tarjoaa kielimalleille tavan hyödyntää lähes missä tahansa palvelussa olevaa tietoa. Tässä blogikirjoituksessa Kodanin AI Lead Pasi Kovanen avaa tarkemmin MCP-toteutusten toimintaperiaatteita ja mahdollisuuksia.

mcp-hero

MCP (Model Context Protocol) tarjoaa kielimalleille standardin tavan hyödyntää lähes missä tahansa palvelussa olevaa tietoa. Anthropic julkaisi marraskuussa 2024 MCP:n määrittelyn, ja monet tekoälyn parissa hääräävät yritykset ilmoittivat nopeasti sitä tukevansa.

MCP mahdollistaa moninaisten palveluiden hyödyntämisen luonnollista kieltä hyödyntäen, eikä käyttäjän tarvitse tietää mistä tieto haetaan. Pari esimerkkiä valaisevat sen mahdollisuuksia:

"Tee yhteenveto tulevasta lomamatkasta"

  • MCP:n avulla tekoäly osaa hakea tiedot lentolipuista, hotellivarauksista ja muista matkaan liittyvistä asioista esimerkiksi Gmailista, Google Drivestä ja Calendarista sekä yhdistää ne.

"Hae viime viikon tuntikirjaukset ja tee niistä laskut"

  • Tekoäly hakee tuntikirjaukset ajanhallintasovelluksesta, asiakkaiden tiedot asiakkuudenhallinnasta, yhdistää tiedot ja vie ne laskutusjärjestelmään.

"Möttönen aloittaa asiakaspalvelussa ensi maanantaina" 

  • HR-järjestelmästä haetaan käyttäjän tiedot jotka välitetään eteenpäin esimerkiksi kulunvalvontaan, palkanmaksuun, IT-järjestelmiin sekä työpisteiden hallintaan.

ChatGPT agent toki tekee jo nyt vastaavia asioita, mutta se yrittää löytää tiedot selainta käyttäen. MCP:n avulla agentit voivat toimia huomattavasti luotettavammin ja tehokkaammin sekä tarjota palveluita myös suljetussa verkossa.

Näin se toimii

MCP-palvelin (server) osaa tarjota integroitavan palvelun tietoja JSON-muodossa. Palvelinta voidaan ajaa paikallisesti tai verkossa. Asiakas (client) luonnollisesti hyödyntää palvelimen tarjoamia toimintoja.

Olennaisia käsitteitä ovat resurssit (resources) ja tehtävät (tasks). Resurssi voi olla mikä tahansa asia, jota on tarve käsitellä rajapinnan yli. Tyypillisiä resursseja ovat esimerkiksi tiedosto, kalenterimerkintä tai tietokantarivi. Jokaisella resurssilla on yksilöivä URI-tunniste.

Tehtävät taas ovat komentoja, joita resursseille voidaan suorittaa. Toteuttaja saa vapaasti valita, mitä tehtäviä on tarjolla, esimerkkeinä vaikkapa tiedoston tuhoaminen tai kalenterimerkinnän luominen.

mcp architecture

Rajapinta, jonka kautta voi tehdä asioita, ei kuulosta erityisen mullistavalta. Mutta mistä MCP-palvelimeen kytkeytynyt asiakas tietää, mitä palveluita sille on tarjolla? Tässä piilee se nerokas oivallus: jokaisella tehtävällä on selkokielinen, vapaamuotoisesti kirjoitettu kuvaus. Esimerkiksi omassa kokeilussani käytin yksinkertaisesti tekstiä "Luo uusi tehtävä listaan". Koska kielimallit ovat taitavia käsittelemään tekstiä, ne osaavat kuvausten pohjalta päätellä, mitä palveluita niille on tarjolla.

MCP-palvelimen toteutus

Koska halusin nähdä, miten MCP käytännössä toimii, toteutin Google Cloud Runiin supersimppelin MCP-palvelimen. Se osaa ainoastaan hakea Google Tasks -listasta tehtäviä tai lisätä listalle uuden tehtävän. OAuth-tunnistautumisen tein manuaalisesti.

Valmiita MCP SDK:ta löytyy useille ohjelmointikielille, mikä nopeuttaa merkittävästi palvelimen toteutusta. Omaan käyttötarkoitukseeni Node.js oli passeli.

Tosin, jos tarkkoja ollaan, ChatGPT hoiti Node.js-koodauksen. Koodi löytyy GitHubista, mutta suosittelen mieluummin tutustumaan referenssitoteutuksiin. Ensimmäinen versio ei toiminut, mutta muutaman iteraation jälkeen rekkula pelitti niin kuin pitikin. Yhteenkään noin 400 koodirivistä en itse koskenut.

Palvelimen testaus

Palvelinkoodin AI-toteutus oli siis sangen suoraviivainen operaatio, mutta testauksen kanssa takkusin hetken. ChatGPT Plus -tilaus ei tue MCP-palvelimiin kytkeytymistä, eikä myöskään ChatGPT:n kaltainen Google Gemini osaa niiden kanssa jutella. Toisaalta taas komentoriviltä käytettävä Gemini CLI tukee MCP:tä. Sekavaa!

Anthropicin Claude sentään tukee verkossa olevia MCP-palvelimia, kunhan käytössä on Pro-tilaus. Lisäksi asennettavalla Claude for Desktop -sovelluksella voi hyödyntää paikallisesti ajettavia MCP-palveluita, myös ilman maksullista tilausta. Lisäksi Gemini CLI:n kilpailija Claude Code sisältää MCP-tuen.

Claudessa MCP-palvelimet lisätään Add custom connector -dialogin kautta, ja dialogissa lukee oikeutetusti "BETA". Sinänsä palvelimen lisääminen onnistui helposti: dialogiin piti täyttää vain palvelun nimi ja sen URL. Mutta ongelmien selvittäminen ei ollut helppoa. Minkäänlaista lokitusta ei ole tarjolla; yhteys joko toimii tai ei. Connectorin tietoja ei voi edes muokata tai tarkistaa, millainen URL on käytössä. 

Connectorin lisäämisen jälkeen ihmettelin pitkään, miksi Claude itsepintaisesti väitti, ettei sillä ole mitään hajua, miten Google Tasksiin lisätään tehtävä. Edes Anthropicin Fin-chatbotista ei ollut mitään hyötyä. Lopulta sain vinkin, että chat-laatikon "Search and tools" -napista piti vielä valita MCP-palvelu käyttöön. Hey presto! Tämän jälkeen chat osasi hakea tehtäviä sekä luoda uusia.

search and tools

Cursorissa MCP:n hyödyntäminen on suoraviivaisempaa. Repoon (tai globaaliin konfiguraatioon) lisätään lyhyt JSON-loitsu jossa on palvelimen tiedot, ja se alkoi heti toimia.

Lopuksi

MCP on mielenkiintoinen ja mukavan yksinkertainen teknologia, joka tarjoaa todella kiinnostavia mahdollisuuksia. Uskon että se tulee yleistymään nopeasti. Kovin moni ei sitä vielä ole ehtinyt toteuttamaan, mutta pidän hyvin todennäköisenä, että lähitulevaisuudessa LLM:n kautta pystyy komentamaan kaikkia merkittäviä palveluita. ChatGPT -connectorien listasta saa jo vähän käsitystä millaiset tehtävät ovat jo nyt mahdollisia, mutta valitettavasti niitä ei Plus-tilauksella voi Euroopassa käyttää. Myös Cursorilla on pitkä lista MCP-palvelimia.

--

Tämän blogikirjoituksen kirjoitti Kodanin AI Lead Pasi Kovanen. Pasin juttusille pääset helpoiten LinkedIn-palvelussa tai sähköpostilla: pasi.kovanen@kodan.fi

Want to know more?

Our expertise is at your service. Whether you’re starting a new project or need assistance with an existing one, we’re here to help.

Say hello to get the ball rolling.