Kaj zabeležiti za vsak klic orodja MCP

Odjemalec vidi oddaljeni strežnik MCP kot en neprozoren span, nadzorna plošča imenika pa vidi seštevke. Klic je videl samo strežnik. Vrstica, ki jo strežniki MCP platforme Tajo zapišejo za vsak klic, polje za poljem, kaj se iz nje odstrani in česa še ni.

beleženje strežnika MCP

Kaj naj strežnik MCP zapiše za vsak klic orodja?

Beležite eno vrstico na klic orodja, na strežniku, ker je strežnik edino mesto, ki je klic videlo. Strežniki MCP platforme Tajo zabeležijo, kdo je klical (ID ključa, nikoli njegove skrivnosti), kateri strežnik in konektor, orodje, če obstaja, njegov razred učinka, ok ali kratko kodo napake, trajanje, velikost rezultata, ID sledi, zapise, ki se jih je klic dotaknil, ter argumente in odgovor, očiščene skrivnosti in osebnih podatkov. Vrstice se berejo z logs.list in logs.get in se izbrišejo po 30 dneh. Hranijo se ločeno od revizijskega dnevnika z zgoščeno verigo, kjer se hranijo odobritve in zgoščene vrednosti njihovih vhodov. Česa ni: ocene zdravja, opozorila na stopnjo napak, iskanja po orodju ali ID-ju sledi in izvoza v vaše lastno sledenje.

Izvedite več
Na tej strani

Anthropic je 8. junija 2026 lastnikom konektorjev v Claudovem imeniku dal nadzorno ploščo. Prikazuje aktivne uporabnike, skupno število klicev orodij in uvrstitev v imeniku. Prikazuje „oceno zdravja, stopnje napak in zakasnitev na prvi pogled, z razčlenitvijo napak po orodjih, da natančno ugotovite, kaj ne deluje“.

Leto prej je Alex Volkov iz podjetja Weights & Biases isti problem opisal z druge strani. Ko je njegov agent začel klicati orodja prek MCP, je „vsa tista opazljivost, ki sem je bil vajen, ko se je moja lastna koda izvajala od začetka do konca, nekoliko potemnela“. Njegov sogovornik na predavanju, Benjamin Eckel iz podjetja Dylibso, je pokazal, zakaj. Oddaljeni strežnik MCP se „nam v sledi prikaže kot en sam span storitve“, ker teče zunaj nadzora klicatelja.

Oba pogleda stojita zunaj strežnika. Odjemalec vidi en neprozoren span. Imenik vidi seštevke. Nobeden ni videl, kaj je bil strežnik vprašan, kaj je zavrnil in česa se je dotaknil. To je videl samo strežnik, zato lahko to zapiše samo strežnik.

To je tisto, kar zapišejo strežniki MCP platforme Tajo, prebrano iz kode, ki jih poganja, in navedeno v dokumentaciji. Kaj je strežnik MCP opisuje protokol. Ta članek opisuje vrstico.

Ena vrstica na klic

Nadzorna plošča je pogled pristaniškega kapitana: ladje prihajajo, ladje odhajajo, katere so zamujale. Dnevnik zahtev je ladijski dnevnik, ki ga pišejo na sami ladji, v trenutku dogajanja.

Vsak tools/call na strežniku delovnega prostora Tajo in na vsakem strežniku konektorja se konča z eno vrstico. Vrstica se zapiše, ko je odgovor sestavljen, ne glede na to, kakšen je bil odgovor. Klic, zavrnjen, ker ključ ne sme pisati, ali ker je končna točka samo za branje, dobi vrstico kot vsak drug klic. Enako velja za klic orodja, ki ne obstaja.

Tukaj je, kaj vrstica vsebuje in česa noče vsebovati.

PoljeSe hraniSe ne hrani
KdoID ključa API, ki je klical. Tudi žeton iz prijave OAuth je ključ.Skrivnost ključa ali njegova predpona.
KjeStrežnik delovnega prostora ali strežnik konektorja, s konektorjem in profilom.
OrodjeIme, kadar ima strežnik orodje s tem imenom.Vsako drugo ime, ki ga pošlje odjemalec: shrani se kot (unknown).
Učinekread, write, send ali destructive: najtežji učinek, ki ga klic lahko ima.
Izidok ali kratka koda napake v obliki snake_case, na primer unknown_tool.Opis napake v prostem besedilu: vse, kar ni koda, se shrani kot tool_error.
Trajanje in velikostMilisekunde od prihoda do odgovora in bajti, ki jih je klicatelj prejel.
ID slediID zahteve iz glave x-request-id, x-trace-id ali W3C traceparent, sicer nov.Vrednost glave, ki ni šestnajstiška in ni UUID.
ZapisiDo 20 ID-jev zapisov, ki jih je klic navedel ali ustvaril: stik, sporočilo, odobritev.Sami zapisi.
VsebineArgumenti in odgovor, očiščeni, vsak največ 4 KB.Skrivnosti, prosto besedilo in osebni podatki, navedeni spodaj.

Tri od teh zavrnitev zadevajo odjemalca, ne podatke. Ime orodja, koda napake in ID sledi pridejo od zunaj. Vsak se hrani samo v obliki, za katero lahko strežnik jamči. Dnevnik, ki shrani karkoli je klicatelj poslal, je mogoče napolniti s čimer koli, tudi z e-poštnim naslovom stranke v stolpcu za ime orodja.

Odprto vprašanje Benjamina Eckla ob koncu predavanja je bilo, kako zbiralnik ve, „da gre za klic orodja MCP, ki ima napako“. Na enem strežniku je odgovor stolpec. ok je false, koda pa pove, katera napaka.

Argumenti: pravilo, ki smo ga obrnili

Ugovor je upravičen in je naš. Če beležite argumente, ste ustvarili drugo kopijo podatkov svojih strank, zunaj dosega vsake zahteve za izbris. Do 18. oktobra 2026 je bilo to naše lastno pravilo. Dnevnik ni hranil ne argumentov ne vsebine rezultata, ker oboje lahko vsebuje osebne podatke.

To je bila napačna menjava. Dnevnik zahtev, ki ne more pokazati, kaj je bilo poslano in kaj se je vrnilo, ne more odgovoriti na edino vprašanje, zaradi katerega obstaja: zakaj klic mojega agenta ni uspel?

Zato se vsebine hranijo, razlog, zakaj se niso, pa je rešen drugače. Vsaka vsebina gre skozi en determinističen prehod, preden se uvrsti v čakalno vrsto.

  • Nobena skrivnost ne preživi. Polje, katerega ime pove token, geslo, skrivnost, podpis, piškotek, seja ali približno dvajset podobnih besed, ohrani samo [secret]. Enako velja za vrednost v znani obliki poverilnice, kjer koli se pojavi. To zajema žetone bearer, JWT-je, zasebne ključe, URL-je z geslom in vsak neprozoren niz 40 ali več znakov ključa.
  • Prosto besedilo se sploh ne hrani. Polje z imenom html, text, body, markdown ali content ohrani samo [redacted]. Prosto besedilo vsebuje imena in ulične naslove, ki jih noben vzorec ne najde.
  • Osebni podatki so zamaskirani za vedno. Polje, katerega ime označuje osebne podatke, na primer e-pošto, telefon, ime, naslov ali opombo, ohrani samo [redacted]. E-poštni naslov, telefonska številka, kartica ali IBAN znotraj katerega koli drugega niza je zamaskiran.
  • Vsebine ostanejo majhne. Nizi so odrezani pri 512 znakih, seznami pri 20 elementih, objekti pri 50 ključih in gnezdenje pri 6 ravneh. Celotna vsebina je odrezana pri 4 KB in označena kot skrajšana.

Dve vrsti klicev hranita manj. Stiki, ki jih je klepet osebe prinesel iz druge aplikacije, se zabeležijo kot oznaka in število, nikoli kot vsebina. Klic, ki bere dnevnik, ne hrani odgovora, saj bi bil odgovor le druge vrstice dnevnika.

Zdaj cena. Maskiranje je trajno, ne šifriranje s ključem, ki ga nekdo hrani. Dnevnik vam ne more pokazati e-poštnega naslova, na katerega sporočilo ni bilo dostavljeno. Pokaže vam ID stika, stik pa je, po lastnih pravilih, oddaljen en klic. Dnevnik je zunaj rednega brisanja podatkov delovnega prostora, zato maskiranje ne more čakati nanj.

Zakaj dnevnik ni revizijska sled

Tajo že ima revizijski dnevnik, v katerega se samo dodaja. Vsaka vrstica nosi zgoščeno vrednost prejšnje vrstice, zato sprememba kjer koli prekine verigo. Zakaj torej ne bi tja zapisovali klicev orodij?

Ker ima veriga ceno. Vsako dodajanje vzame zaklep na ravni delovnega prostora in prebere prejšnjo vrstico, da podaljša verigo. Če bi skozenj zapisovali vsako branje, bi se klici delovnega prostora postavili v vrsto za enim zaklepom. Spremembe stanja, zaradi katerih revizijski dnevnik obstaja, bi poleg tega zasulo na tisoče branj.

Zato se zapisa delita po vprašanju. Dnevnik zahtev pove, kaj je agent zahteval in kaj se je zgodilo, 30 dni. Revizijski dnevnik pove, kaj se je spremenilo, kdo je to dovolil in ali je od takrat kdo spreminjal zapis.

Odobritve so na revizijski strani. Na profilih konektorjev Tajo orodje za predlog pripravi izrecno opredeljeno dejanje, orodje za uveljavitev pa ga izvede, ko je odobreno. Nič ne pride do ponudnika, dokler predlog ni odobren, bodisi s strani osebe bodisi s pravilom, ki ga je vklopil delovni prostor. Vrstica klica predloga med svojimi zapisi navede odobritev, ki jo je ustvaril. Sama odobritev je vezana na zgoščeno vrednost SHA-256 natančnega vhoda. Odobritev pokriva natanko vhod, ki ste ga videli: spremenite eno polje in se ne ujema več. Ko pisanje pride do cilja, njegova revizijska vrstica ohrani zgoščeno vrednost vhoda in zgoščeno vrednost odgovora ponudnika, nikoli vrednosti iz odgovora.

Koliko stane vrstica

Vrstica je pisanje v bazo podatkov, pisanje pa ima commit. Do 8. oktobra 2026 je vsak klic pred odgovorom čakal na lasten commit, približno 2,6 ms na našem gostitelju. Za enega odjemalca je bila to četrtina majhnega klica orodja.

Zdaj se vrstica sestavi, ko se klic konča, in uvrsti v čakalno vrsto. Praznjenje zapiše čakalno vrsto največ 100 ms pozneje, v eni transakciji na delovni prostor, zato si veliko klicev deli en commit. Pri vrstici se nič ne spremeni, tudi njen časovni žig ne. Če čaka 5.000 vrstic, naslednji klic počaka na praznjenje, namesto da bi se vrstica zavrgla.

Beleženje nikoli ne povzroči neuspeha klica. Pisanje, ki ne uspe, se ponovi vrstico za vrstico, nato pa se zabeleži in zavrže. Kar izgubi prisilna ustavitev procesa, je vse, kar je bilo v čakalni vrsti: največ zadnjih 100 ms klicev.

Ponovno branje

logs.list vrne klice delovnega prostora, od najnovejšega naprej, brez vsebin. Filtrira po času, po izidu ali statusu HTTP, po viru (MCP ali REST API, ki si deli isto tabelo) in po ključu API. Privzeto vrača po 50 na stran, največ 100. logs.get vrne en klic s trenutnim imenom ključa, njegovim statusom, trajanjem, očiščeno zahtevo in odgovorom ter zapisi, ki se jih je dotaknil.

Oba bereta samo delovni prostor klicatelja. ID vrstice iz drugega delovnega prostora ni najden.

Napaka orodja nosi ID zahteve. Kadar je ta ID ustvaril strežnik ali je prispel kot šestnajstiška vrednost ali UUID, je to ID sledi vrstice. Agent, ki je dobil napako, lahko osebi preda edino vrednost, ki poimenuje klic.

Kaj je zgrajeno in kaj ne

Zgrajeno, v času pisanja:

Ni zgrajeno in je vredno vedeti, preden se zanesete na to:

  • Ni ocene zdravja, ni grafa po orodjih in ni opozorila na naraščajočo stopnjo napak. Povzetek klicev, napak in najpočasnejših trajanj po orodjih obstaja za operaterje Tajo, ne pa na nobeni površini, ki jo lahko odprete vi.
  • logs.list ne more filtrirati po imenu orodja ali po ID-ju sledi. Če želite najti vrstico za ID zahteve, iskanje zožite po času in ključu.
  • Vrstice se ne izvažajo v sistem za sledenje, ki ga upravljate vi. ID sledi se bere samo iz glav HTTP, ne iz polja MCP _meta, ki ga je predavanje uporabilo za prenos konteksta sledi.
  • Po 30 dneh se vrstica izbriše. Ni arhiva ali izvoza.
  • Kar je bilo zamaskirano, iz dnevnika ni mogoče obnoviti.
  • Prisilna ustavitev lahko izgubi zadnjih 100 ms vrstic.

Predavanje se je končalo z ugotovitvijo, da opazljivost v MCP „ni enakomerno porazdeljena“. Nadzorna plošča nižje v verigi tega ne more popraviti, prav tako ne sled, ki se ustavi pred vrati strežnika. Sinhronizacija, ki ne uspe, potrebuje lasten zapis; enako velja za vsak klic, ki je zanj prosil.

Strežnik je videl klic. Nihče drug ga ni. Zapišite ga tam.

Pogosto Zastavljena Vprašanja

Kaj naj strežnik MCP beleži za vsak klic orodja?

Eno vrstico na klic, ki jo zapiše strežnik: kateri ključ API je klical, kateri strežnik in konektor, ime orodja, če orodje obstaja, njegov razred učinka, ok ali kratko kodo napake, trajanje, velikost rezultata, ID sledi zahteve, ID-je zapisov, ki jih je klic navedel ali ustvaril, ter argumente in odgovor, iz katerih so odstranjene skrivnosti in osebni podatki. Strežniki MCP platforme Tajo to vrstico zapišejo za vsak tools/call, vključno z zavrnjenimi klici, in jo hranijo 30 dni.

Ali naj dnevnik zahtev MCP hrani argumente orodij?

Da, očiščene. Dnevnik brez argumentov ne more povedati, zakaj klic ni uspel. Tajo do 18. oktobra 2026 ni hranil vsebin, zdaj pa hrani obe, po enem determinističnem prehodu: skrivnosti postanejo [secret], prosto besedilo in osebna polja postanejo [redacted], e-poštni naslovi, telefonske številke, kartice in IBAN-i so zamaskirani, vsaka vsebina pa je odrezana pri 4 KB. Maskiranje je trajno, zato dnevnik na zapis pokaže z ID-jem, namesto da bi ga kopiral.

Zakaj hraniti dnevnik klicev orodij MCP ločeno od revizijskega dnevnika?

Ker odgovarjata na različni vprašanji z različno ceno. Revizijski dnevnik platforme Tajo je zgoščena veriga sprememb stanja in vsako dodajanje vzame zaklep na ravni delovnega prostora, da podaljša verigo. Če bi skozenj zapisovali vsako branje, bi klici delovnega prostora čakali v vrsti za tem zaklepom, spremembe pa bi se izgubile med branji. Klici orodij gredo v ločeno tabelo brez verige, ki se hrani 30 dni; pisanja, ki jih klic pripravi, še vedno pustijo lastne revizijske vrstice.

Zaprosite za zgodnji dostop

Vnesite svoje ime in e-poštni naslov. Poslali vam bomo povezavo za potrditev zahteve za dostop do Taja.

Pridobite Brevo

Ta stran kot Markdown: what-to-log-for-every-mcp-tool-call.md

Nalaganje Markdowna …
Odpri v Claude Odpri v ChatGPT