LoomSignal
Blog
Dokumendid
ENPTETRU
Kõik postitused
VaatedThiago Valentim · 13. juuli 2026 · 11 min lugemist

Kas MCP-st piisab AI-agentide ühiseks kontekstiks?

MCP-st piisab, et jõuda sinu ettevõtte iga allikani, aga ei piisa, et panna neist kahte omavahel kokku leppima. Ava Model Context Protocoli normatiivne skeem revisjonis 2025-11-25 ja loe Resource'i tüüpi: üheksa välja, kaks kohustuslikku, uri ja name, ning seitse valikulist, title, description, icons, mimeType, annotations, size ja _meta. Ükski neist ei talleta, kus see ressurss sinu ettevõtte hierarhias asub, mis versioon see on või kumb võidab, kui kaks ressurssi on omavahel vastuolus. Olin 2025. aasta lõpus ühe sõidujagamise turuplatsi sees, palgatud olema selle arendusorganisatsiooni igapäevatöö keskel ja leidma, mis investori due diligence'is välja tuleks, ja see, mille ma leidsin, ei olnud koodis. Agent filtreeris sõna järgi, mida iga inimene selles ettevõttes mõistis, andmebaas ei leidnud midagi, ühtki viga ei tekkinud, ja kasutajad lakkasid nägemast sõite, mille nad olid broneerinud.

Minu vaatepunkt seab piirid sellele, mida ma sulle rääkida saan. Ma ei olnud AI kasutuselevõtu juures ega kirjutanud ega vaadanud üle selle loo koodi. Tähelepanekute tegemine oligi kogu ülesanne, ja siin on see, mis välja tuli. Ettevõte jääb anonüümseks. Üks toote üksikasi kannab ülejäänut: sõit oli üks selle keskseid olemeid, ja tootetiim, turundus, tehnilised diagrammid ja kood nimetasid seda igaüks isemoodi.

MCP Resource'i tüüp deklareerib üheksa välja ja ükski neist ei ütle, milline allikas on õige

See on kõik, mida Model Context Protocol agendile ühe ressursi kohta räägib. Spetsifikatsioon on selgesõnaline, et tema TypeScripti skeem, mitte tema tekstileheküljed, on „the source of truth for all protocol messages and structures“. Ja selles skeemis revisjonis 2025-11-25 deklareerib Resource üheksa välja, kui pärimine lahti harutada: kuus tüübi enda peal, pluss name ja title BaseMetadata-st ning icons Icons-ist. Kaks on kohustuslikud, uri ja name. Seitse on valikulised: title, description, icons, mimeType, annotations, size ja _meta. Otsi nüüd sellest loetelust üles väli, mis ütleb agendile, kas trip, offer või carona on see sõna, mille andmebaas tegelikult ka leiab. Sellist välja ei ole, ja see puudumine ei ole möödalask. Spetsifikatsiooni enda arhitektuuri ülevaade ütleb, et MCP „focuses solely on the protocol for context exchange“ ja et see „does not dictate how AI applications use LLMs or manage the provided context“.

Kõige lähemale allika järjestamisele jõuab protokoll väljaga priority, mis on number 0.0 kuni 1.0 ja mille server deklareerib oma ressursi kohta ise, kusjuures spetsifikatsioon ütleb, et väärtus 1 tähendab „most important“. Kõige lähemale ajakohasusele jõuab ta väljaga lastModified, mis on ISO 8601 ajatempel selle kohta, millal ressurss viimati muutus, ja see on fakt baitide, mitte tõe kohta. Mõlemad elavad ressursi valikulises annotations-väljas, mille server kirjutab iseenda kohta ja mida miski üle ei kontrolli. Spetsifikatsiooni enda hoiak enesekirjelduse suhtes paistab kõige paremini välja üks tüüp kõrval. Tool-i tüübi all kannab spetsifikatsioon hoiatust normatiivses keeles: kliendid „MUST consider tool annotations to be untrusted unless they come from trusted servers“. See hoiatus käib tööriistade kohta, nii et otseselt priority kohta ta midagi ei ütle. See, mida ta näitab, on protokolli hoiak tema enda normatiivses hääles: kui server ennast kirjeldab, on spetsifikatsiooni instinkt öelda kliendile, et ta seda ei usuks.

Miski sellest ei ole MCP viga. See on protokoll, mis teeb oma tööd ja keeldub ühest, mis ei olnud kunagi tema oma. Häda algab siis, kui ettevõte loeb kättesaadavust valmisolekuks, ühendab agendiga üheksa allikat ja eeldab, et miski torus otsustab, milline neist on õige. Tavaliselt langeb see eeldus otsingule, mis järjestab tekstilõike sarnasuse järgi ja jätab autoriteetsuse sinna, kust ta selle leidis: MCP ja RAG asuvad eri kihtides ja kumbki neist ei ole see kiht, mis otsustab (inglise keeles).

Miks tagastab AI-agent tühja tulemuse ilma veateateta: sõna oli kehtiv, olem mitte

Tony Hoare'i nullil oli üks lunastav omadus. See jooksis kokku. Oma QCon London 2009 ettekannet tutvustades nimetas Hoare 1965. aasta nullviidet oma suureks veaks, „billion-dollar mistake“: ta oli seadnud eesmärgiks teha iga viite kasutamine „absolutely safe, with checking performed automatically by the compiler“, ei suutnud sellegipoolest kiusatusele vastu panna ja lisas nulli, ning see hakkas põhjustama „innumerable errors, vulnerabilities, and system crashes“. Kokkujooksmine on kingitus. See peatab programmi, nimetab rea ja osutab iseendale. See, mille turuplats 2025. aasta detsembris välja saatis, tegi vastupidist. Nimeta seda semantiliseks nulliks: tulemus, mis on struktuurilt kehtiv ja tähenduselt tühi, kus päring käivitus, tüübid klappisid, tagasi tuli null rida, ja miski süsteemis ei teadnud, et sõna oli vale.

Sõnavara oli kasvanud valdkondade kaupa, nagu see kasvab igal pool:

Artefakt või kihtKasutatud terminMida meeskond selle all mõtles
Tehnilised diagrammidtripRegistreeritud sõit
Tootetiimi sisekeelofferSama sõiduolem, ainult sisekasutuses, mitte kunagi rakenduses ega veebisaidil
TurunduskampaaniadcaronaSõna, mida klient tegelikult kasutas
Rakenduse koodtripsTabel, seosed, olemid, muutujad, meetodid

Inimesed liikusid nende sõnade vahel vaevata. Vestluses oli samatähenduslikkus ilmne. Siis filtreeris üks meetod stringi offer järgi seal, kus käivitatav leping määratles trips. Filter võttis stringi vastu, töötas tavapäraselt, ei leidnud ühtki kirjet ega tagastanud midagi. Midagi ei jooksnud kokku. Ühtki viga ei tekkinud.

Suurem osa tootest töötas edasi, mis tegi selle ühtaegu talutavaks ja nähtamatuks. Kasutajad said endiselt sõite broneerida ja laiemad ekraanid pärisid endiselt trips. Viga peitus täpselt ühes filtris, selles, mis valis kasutaja planeeritud sõidud tema isikupärastatud vaate ja sellele ehitatud teavituste jaoks. Peaaegu täiesti korrektne väljalase peitis just need kirjed, mis olid neid otsivale inimesele kõige olulisemad. Klienditoe järjekord oli koht, kus see välja tuli: üleöö sai ettevõttes, mille tavaline põhikaebus oli sõidu tühistamine, põhikaebuseks see, et inimesed ei leia oma sõite üles.

Just seepärast elab semantiline intsident tavalised kontrollid üle. Ainult vastust vaatav test läheb läbi. Tüübikontroll võtab stringi vastu. Ainult vigu jälgiv seire liigitab päringu korrasolevaks, sest see oligi. Kui ükski test ei kinnita, et planeeritud trips-kirjetega kasutaja ei tohi saada tühja kogumit siis, kui mõni teine artefakt ütleb offer, ei otsi seda tõrget kogu konveieris üldse mitte miski.

Uuem MCP revisjon ei hakka tähendust otsustama, sest tähendus on teadmine, mis asub otspunktides

Ilmne vastuväide väljade loendamisele on see, et väljade arv muutub. Keegi lisab mõnes hilisemas revisjonis autoriteetsuse välja, ja mis siis? Siis mitte midagi, ja põhjus on nelikümmend aastat vana. 1984. aastal andsid Saltzer, Reed ja Clark ajakirjas ACM Transactions on Computer Systems sellele põhimõttele nime: „The function in question can completely and correctly be implemented only with the knowledge and help of the application standing at the end points of the communication system.“

Nad rääkisid töökindlusest. Veakontrollist, krüpteerimisest, korduvatest sõnumitest. Nad ei kirjutanud tähendusest sõnagi, ja see olen mina, kes nende argumenti laiendab, mitte neid tsiteerib. Aga vaata, millel nende endi duplikaatide näide püsib. Võrk ei suuda rakenduse korduvaid sõnumeid maha suruda, kirjutavad nad, sest need duplikaadid „look like different messages to the communication system“, nii et mahasurumine „must be accomplished by the application itself with knowledge of how to detect its own duplicates“. See, mida loetakse samaks sõnumiks, on määratlus, mida hoiab rakendus ja mida protokoll ei näe. Määratluse küsimus kannab nende töökindluse argumendi sees juba raskust. Selline on siin muster, ja see kehtib ka sõnavara kohta. See, kas offer ja trips on üks olem, on teadmine, mis elab sinu ettevõttes, nende inimeste peades, kes lasid sõnadel lahku minna. Liinil ei olnud seda kunagi, ja ükski revisjon ei pane seda sinna.

Ligipääs ei ole kokkulepe. Protokoll teeb iga volitatud allika kättesaadavaks, panemata neist kahte tähendama sama asja, ja see on protokolli tasandil sama seaduse sõnastus, mis teeb AI-virna sünnist saati lõhestatud ajuga.

Autoriteetsus kuulub faktile, mitte tööriistale, ja päritolu ei ütle kunagi, kumb võidab

Päritolu talletab, kust fakt tuli ja kuidas see muutus; ta ei talleta kunagi, et fakt võidab. W3C PROV ligipääsu ja päringute märkus (2013) tõmbab selle piiri oma hääles: „A provenance record is not of itself guaranteed to be authoritative or correct. Trust in provenance records must be determined separately from trust in the original resource.“ See eristus on kogu probleem kahes lauses, sest nelja allikani ulatuv agent vajab otsustust, mitte kirjet.

Turuplatsil ei olnud sellist otsustust kusagil kirjas. Miski ei öelnud, et kood on operatiivse identifikaatori omanik, et tootetiim on soovitud käitumise omanik, et turundus on kliendile nähtava sõna omanik ja et turundussõnavara ei tohi kunagi andmefiltrisse kopeerida. Nii ei protestinud miski, kui toote sisemine sõna just selleks sai. Sellist autoriteetsust ei saa anda tööriistale üks kord ja igaveseks, sest see ei asu tööriista granulaarsuse tasemel. Ühe sõidu puhul, ühel hetkel, juhib juurutatud skeem trips-i, heaks kiidetud tooteotsus juhib seda, mida funktsionaalsus tegema peaks, ja turundus juhib carona-t. Kolm allikat, kõik autoriteetsed, ükski neist ei ole kirjete süsteem, see system of record.

Andmehaldus on seda teadnud aastakümneid, ja seda tasub otse välja öelda, mitte teeselda, et me selle avastasime. Master data management määrab autoriteetsuse välja kaupa, mitte süsteemi kaupa, ja tema raske osa on alati olnud otsustada, millist välja millisest allikast usaldada; just seda teevad ellujäämisreeglid, survivorship rules. See, mida valdkond kunagi lahendama ei pidanud, on tekst. Ellujäämisreeglid arbitreerivad skeemi sees tüübitud väärtusi, ja ei ole olemas usaldusskoori, mida sa arvutaksid tootedokumendis oleva lause ja veeru määratluse vahel. Granulaarsus oli kogu aeg õige. Keegi lihtsalt ei ehitanud seda sõnade jaoks.

Vea kirjutas agent, vaatas üle agent, ja see läks mööda inimesest, kes järele ei jõudnud

Filter ei olnud inimlik eksitus selles mõttes, nagu see väljend tavaliselt kõlab. Funktsionaalsuse, mis seda sisaldas, ehitas programmeerimisagent. Koodi ülevaatuse tegi teine AI. Inimese ülevaatus kukkus läbi nii, nagu inimese ülevaatus tänapäeval läbi kukub: uppudes koodimahtu, mida ükski inimene selles tempos läbi lugema ei hakanud. Kaks agenti, mõlemal ligipääs tootedokumentidele, disainidele ja koodibaasile, ja kummalgi ei olnud mingit kirjet selle kohta, milles ettevõte oli sõnade tähenduse osas kokku leppinud. Kumbki ei eksinud omaenda kontekstis. Kirjutav agent kasutas sõna, mis oli tootekeeles tõene. Ülevaatav agent nägi koodi, mis tegi seda, mida ta ütles. Tõrge elas nende vahel, kohas, mida kummalegi ei olnud antud.

See lõhe on mõõdetud osa. Faros AI 2026. aasta telemeetria 22 000 arendaja kohta näitab, et vigu arendaja kohta on 54% rohkem ja 31% võrra rohkem pull requeste läheb sisse ilma igasuguse ülevaatuseta. Inimene kui vahekohtunik lahkub teelt täpselt sel hetkel, mil protokoll keeldub arbitreerimast.

Ühel 2026. aasta preprintil on sellest kõige puhtam versioon, mida ma tean, ja sellega käib kaasas reservatsioon, mille ma pigem ütlen välja kui matan ära: Dillon ja Varanasi testisid programmeerimisagenti 41 tiimiotsuse peal ühes koodihoidlas, ja nad ise ehitavad kontekstitööriista, mida nad testisid. Jäta nende pealkirjanumber kõrvale ja loe nende tabelist üht rida. Koodihoidlas oli kaks auditifunktsiooni, ja SOC-2 reegel tegi neist täpselt ühe ekspordi puhul kohustuslikuks. Funktsioon oli seal, koodis. Reegel ei olnud kirjas üheski kohas, kuhu agent ligi pääses. Kui tal kästi tagada, et toiming logitakse, otsis ta, leidis auditifunktsiooni ja kasutas valet, ning autorite sõnul nõuab see vahetegemine teadmist, miks õige funktsioon üldse olemas on. Mõlemat funktsiooni suutis ta lugeda. Mida ta lugeda ei suutnud, oli see, kumma tiim oli valinud, ja ükskõik kui palju koodi lugeda, seda poleks välja tulnud, sest vastust ei olnud kunagi koodis. Autorite endi järeldus on selle aus vorm: otsing teeb vastavuse võimalikuks, ja usaldusväärseks teeb selle struktureeritud töövoog.

Seo iga tunnustatud alias ühe hallatud olemiga, enne kui agent saab selle järgi filtreerida

Eric Evans kirjutas selle mustri valmis, ja enamik tiime mäletab sellest ainult poolt. Kuulus pool on läbiv keel: Domain-Driven Design Reference'is (2015) palub ta meeskonnal kasutada seda keelt järjekindlalt kogu suhtluses ja koodis ning kasutada piiritletud konteksti sees sama keelt diagrammides, tekstis ja eriti kõnes. Pool, mille tiimid unustavad, on see, mida ta palub piiridel endil. Seal, kus tõeliselt erinevad mudelid kohtuvad, muudab tema Context Map tõlke nende kokkupuutepunktides selgesõnaliseks, „outlining explicit translation for any communication“. Turuplatsil ei olnud selles töövoos kumbagi kaitset, nii et offer kõndis käivitatavasse trips-lepingusse ilma, et keegi oleks piiril seisnud.

Turundus ei peaks olema sunnitud kirjutama trips. Just see läheb kaotsi, kui keegi seda kuuleb ja haarab sõnastikuprojekti järele. Tootetiim peaks jätkama offer-i kirjeldamist, turundus peaks jätkama kliendi keeles rääkimist, ja arendus peaks hoidma stabiilset lepingut. Olemas peab olema kirje, mis on masinloetav ja mis ütleb, et need on üks ja seesama olem, et trips on see, millele andmebaas vastab, ja et ülejäänud ei tohi kunagi päringu lähedale sattuda. See kirje kuulub hallatud kontekstikihti (artikkel on inglise keeles) töösüsteemide ja agentide vahel, ja see ongi see, mis LoomSignal on: ise majutatav, tiimidele, kelle sisemine info ei lähe pilveteenuse pakkuja kätte.

Siis on imelihtne kirjutada test, mis oleks selle kinni püüdnud: planeeritud trips-kirjetega kasutaja ei tohi kunagi saada tühja kogumit, ükskõik millist sõna kutsuv artefakt kasutas.

Turuplats leidis filtri ja saatis paranduse välja kolme tunniga. Selle juurde ma aina naasen. Kui keegi kord teadis, kust vaadata, kulus suurel ja paljude funktsionaalsustega platvormil ühe sõna vea taastootmiseks ja parandamiseks üks pärastlõuna. Need kolm tundi ei olnud kunagi hind. Hind oli kõik see, mis neile eelnes, kui kood töötas täpselt nii, nagu ta kirjutatud oli, seire oli roheline, ülevaatus oli läbitud, ja ainus süsteem selles ettevõttes, mis teadis, et midagi on valesti, oli järjekord inimestest, kes kirjutasid, et nad ei leia oma sõite üles.

Ava Resource'i tüüp oma tehnoloogiavirnas. Üheksa välja. Ükski neist ei ole see, mida sul vaja oli.

Korduma kippuvad küsimused

Kas MCP-st piisab AI-agentide ühise konteksti loomiseks?

Ei. MCP standardib seda, kuidas rakendus tööriistade ja andmeallikateni jõuab, kuid ei otsusta, mida miski neist tähendab. Model Context Protocoli normatiivses skeemis, revisjonis 2025-11-25, deklareerib Resource üheksa välja: uri ja name on kohustuslikud ning title, description, icons, mimeType, annotations, size ja _meta on valikulised. Ükski neist ei talleta, milline allikas on ühe fakti osas autoriteetne, milline versioon kehtib või kuidas lahendada vastuolu, kui kaks serverit kirjeldavad sama olemit erinevalt. Kõigi allikateni jõudmine on ligipääs. Otsustamine, milline neist tegevust juhib, on kokkulepe, ja selle jätab MCP rakendajale.

Miks tagastab mu AI-agent tühja tulemuse ilma veateateta?

Kõige sagedasem põhjus ei ole viga, vaid tähenduste lahknevus: agent kasutas sõna, mida sinu ettevõte mõistab ja sinu skeem mitte. Filter on kehtiv, tüübikontroll võtab stringi vastu, päring käivitub ja tagasi tuleb null rida. Midagi ei visata, nii et ainult vigu jälgiv seire teatab, et teenus on korras. Välista kõigepealt tavalised põhjused: alla neelatud erind, kärbitud kontekstiaken, vaikne autentimis- või ajalõputõrge, HTTP 200, mis kannab veakeha, või skeemivalideerimine, mis andmed maha viskab. Kui päring on tõesti kehtiv ja tõesti tühi, otsi sõna, mis on ühes osakonnas õige ja andmebaasis vale.

Kas AGENTS.md või CLAUDE.md failid koos MCP-ga ei ole ettevõtteülese AI jaoks piisav kontekst?

Need on õige torustik ja vale haldus. Reeglifail kirjutab ette, kuidas agent peaks käituma, ja vananeb hetkel, mil kood ilma selleta edasi liigub. MCP on liides konteksti juurde jõudmiseks, mitte otsus selle kohta, kas trip, offer ja carona on see olem, mida andmebaas nimetab trips'iks. Kumbki ei talleta, milline allikas on ühe fakti osas autoriteetne, millal üks väide lakkas kehtimast või mida teha, kui kaks serverit lähevad lahku. Ettevõtteülene AI vajab hallatud olekut, mitte rohkem juhiseid: ühildatud olemeid, päritolu iga fakti kohta ja vaidlusaluste faktide esiletoomist selle asemel, et need üheks enesekindlaks vastuseks kokku segada.

Kuidas teab AI-agent, milline allikas on autoriteetne, kui kaks tööriista lähevad lahku?

Ta ei tea, kui miski väljaspool mudelit talle seda ei ütle. Ei mudel ega konnektor kanna seda reeglit. W3C PROV ligipääsu ja päringute märkus (2013) tõmbab piiri selgelt: päritolukirje ei ole iseenesest garanteeritult autoriteetne ega õige ning usaldust selle vastu tuleb hinnata eraldi. Autoriteetsus tuleb määrata fakti kaupa, mitte anda tööriistale hulgi, sest ühe olemi puhul võib ühel ja samal hetkel juurutatud skeem olla käivitatava identifikaatori omanik, heaks kiidetud tooteotsus soovitud käitumise omanik ja turundus kliendile nähtava sõna omanik, kõik korraga.

Kas AI ühendamine kõigi ettevõtte andmetega teeb ettevõtte AI jaoks valmis?

Ei. Ligipääsetavus ei ole valmisolek. Üks sõidujagamise turuplats ühendas agendid oma tootedokumentide, disainifailide ja koodiga ning agendid said need kõik kätte. Sellegipoolest jõudis välja filter, mis tagastas päris kasutajatele null planeeritud sõitu, sest kusagil ei olnud kirjas, et toote sisemine sõna offer ja andmebaasi olem trips on üks ja seesama. Valmisolek tähendab stabiilseid olemeid oma piiritletud kontekstides, kaardistatud vastavusi nende vahel, päritolu ja ajakohasust iga fakti kohta, autoriteetsust fakti kaupa ning teste vastuolude ja kehtivate tühjade tulemuste jaoks, enne kui agent tegutseda saab.

Kas hallatud kontekst nõuab nende tööriistade väljavahetamist, mida iga osakond juba kasutab?

Ei. Tootetiim, disain, turundus, klienditugi ja arendus jäävad oma töösüsteemide juurde. Kontekstikiht paikneb nende allikate ja agentide vahel, ühildab selle, millele nende sõnad viitavad, ja annab igale volitatud agendile reeglitega kooskõlas oleva vaate. Allikad jäävad sinna, kus nad on. Muutub see, et nüüd on olemas miski, mis otsustab, milline neist ühte kindlat fakti juhib, enne kui agent selle põhjal tegutseb.