Anthropic julkaisi marraskuussa mielenkiintoisen protokollan, joka mahdollistaa työkalujen ja RAG-tyylisen kontekstin lisäämisen kielimalleille hyvin pienellä vaivalla. Hiljaisen ja hitaan alun jälkeen tämä avoimen lähdekoodin protokolla on nyt kovassa nosteessa kun OpenAI lisäsi tuen omaan rajapintaansa ja uusin versio supersuositusta VS Code editorista osaa nyt hyödyntää MCP-työkaluja natiivisti.
MCP:n idea on nerokkaan yksinkertainen; annetaan kielimallille kontekstin sijaan helppo pääsy työkaluihin. Tämä mahdollistaa —teoriassa— LLM-työkalujen yhdistämisen mihin tahansa ulkopuoliseen järjestelmään tai tietolähteeseen vain muutamalla rivillä rajapintakoodia. Lupaus kuulostaa erittäin houkuttelevalta, mutta kolikon kääntöpuoli on kielimallien surullisenkuuluisa haaste työkalujen oppimisessa; MCP-palvelin toimii vain jos kielimalli osaa käyttää sitä oikein.
Mitä MCP:llä voi tehdä?
MCP-palvelimilla voi lisätä kielimallille lähes rajattomasti kontekstia ja kykyjä. Anthropicin esimerkkirepo sisältää kehittäjäorientoituneita työkaluja kuten tiedostojärjestelmä (mahdollistaa sekä luku- että kirjoitusoperaatiot paikalliselle levylle), git (opettaa mallin käyttämään tekemään git-komentoja) ja fetch (mahdollistaa web-haut).
Palvelin julkaisee kielimallille yhden tai useamman toteuttamansa komennon lyhyellä esittelytekstillä (tyyliin “fetch: Fetches a URL from the internet and extracts its contents as markdown”) ja mallin kutsuessa työkalua oikein, palvelin palauttaa vastauksen enemmän tai vähemmän standardoidussa muodossa (täysin kehittäjän käsissä).
Tiedostotyökalu on hyvä esimerkki äärimmäisen hyödyllisestä työkalusta; sen avulla Clauden desktop-versio osaa lukea mitä tahansa tiedostoja ja myös muokata niitä ja luoda uusia (etukäteen sallituista hakemistoista).
Kehitin itse itselleni yksinkertaisen mutta äärimmäisen hyödyllisen MCP-palvelimen joka antaa kielimallille täyden näkyvyyden ja kontrollin web-kehityspalvelinten tilaan ja selaimen kontrollointiin. devsercer-mcp mahdollistaa täysin itsenäisen kehitysluupin jossa AI-agentti kykenee kehittämään ei-triviaalia Python ja Vue-koodia yksinkertaisella promptauksella. Esimerkki: voin promptata
“add a search form to /search/ -page that calls the backend api and then displays the results on the page. use playwright to test that your implementation works”
minkä jälkeen Claude lukee projektista tarvittavat tiedostot ymmärtäen esimerkiksi missä muodossa data APIlta tulee, kirjoittaa tarvittavan Vue-koodin (100% oikeilla TypeScript-tyypeillä) ja lopulta tarkastaa aitoa selainta käyttäen että lopputulos toimii. Se mitä todennäköisimmin tekee toteutuksen aikana paljon virheitä, mutta se ei haittaa, koska sillä on pääsy sekä api-rajapinnan että vue-kehityspalvelimen lokeihin sekä selaimen konsoliin! Tämä on melko iso WOW! -hetki web-kehittäjän uralla. (Ja ko. MCP-palvelimen koko toteutus on vain muutama sata riviä koodia!)
Miksi MCP?
MCP:n suurin etu perinteisiin työkaluihin on protokollan yksinkertaisuus. Säätiedot hakevan esimerkkipalvelimen koko toteutus on alle 100 rivia triviaalia Python-koodia. Anthropic on julkaissut esimerkkikirjastot muun muassa Pythonille ja Nodelle, ja kaikki on avointa lähdekoodia.
Toinen MCP-protokollan iso myyntiargumentti on avoimuus. Toisin kuin rajapintakohtaiset toteutukset, MCP toimii minkä tahansa palveluntuottajan kielimallin kanssa kunhan itse malli kykenee työkalukutsuihin. Tämä on hurjaa vauhtia kehittyvällä alalla iso plussa, koska MCP-palvelinta kehittäessä ei tarvitse sitoutua yhteenkään palveluntuottajaan.
Haasteet
MCP-protokolla ei ole täydellinen. Suurimmat haasteet liittyvät tietoturvaan ja alalle tyypilliseen hypernopeaan kehitysvauhtiin. Viimeisin versio toi mukanaan OAuth 2.1 -pohjaisen autentikoinnin mikä avaa nyt kokonaan uusia ovia, mutta kehitettävää on vielä paljon.
Nykyisellään lokaaleja mcp-palvelmia on niin vaikea asentaa ja hallita, että jopa tällaisen työkseen koodaavalla nörtillä menee välillä hermo. (Luonnollisesti on olemassa mcp-palvelimia asentava mcp-palvelin!) Toivon, että VS Coden suuntaan näyttävä integraatio parantaa tilannetta kun se pusketaan miljoonien kehittäjien silmille.
Nykyiset kielimallit eivät myöskään osaa vielä käyttää MCP-työkaluja erityisen hyvin. Olen omassa käytössä huomannut, että parhaaseen lopputulokseen vaaditaan aina hyvin eksplisiittinen promptaus (ts. “käytä tämän nimistä työkalua tekemään asia x” sen sijaan että “tee asia x”) vaikka työkalun selite selkeästi kertoisi mitä sillä voi tehdä. Lisäksi käytön tehokkuus nopeasti mikäli työkaluja on paljon. Haave LLM-työkalusta joka osaa kaiken mitä haluaisit on siis vielä kaukana.
Tulevaisuus
MCP:n tulevaisuus näyttää valoisalta. Sillä on todella paljon potentiaalia ja vaikka itse protokolla on ehkä naiivinkin yksinkertainen, haluan uskoa avoimen lähdekoodin yhteisön kykyyn kehittää sitä oikeaan suuntaan.
MCP-protokolla tarjoaa joustavuudellaan jotain mikä aikaisemmin ei käytännössä ole ollut mahdollista. Nyt kun MCP-palvelimia on mahdollista liittää natiivisti rajapintakyselyihin, työpöytäsovelluksiin ja koodieditoreihin, kenelläkään ei ole enää tekosyytä olla kokeilematta niiden mahdollisuuksia.
Suosittelen tsekkaamaan josko awesome-mcp-servers -listalta löytyy palveluita joiden intengrointi AI-työkaluihin vaikuttaisi omaa käyttöä tehostavalta.