---
title: "Какво да записвате за всяко извикване на MCP инструмент"
description: "Клиентът вижда отдалечения MCP сървър като един непрозрачен span, а таблото на каталога вижда сборове. Само сървърът е видял извикването. Редът, който MCP сървърите на Tajo записват за всяко извикване, поле по поле, какво се изчиства от него и какво не е изградено."
url: https://tajo.io/bg/blog/what-to-log-for-every-mcp-tool-call/
markdown: https://tajo.io/bg/blog/what-to-log-for-every-mcp-tool-call.md
lang: bg-BG
author: "Set Noa"
author_url: https://tajo.io/bg/set-noa/
published: 2026-11-06
updated: 2026-11-06
alternates: {en-US: /blog/what-to-log-for-every-mcp-tool-call.md, cs-CZ: /cz/blog/what-to-log-for-every-mcp-tool-call.md, de-DE: /de/blog/what-to-log-for-every-mcp-tool-call.md, da-DK: /dk/blog/what-to-log-for-every-mcp-tool-call.md, es-ES: /es/blog/what-to-log-for-every-mcp-tool-call.md, fr-FR: /fr/blog/what-to-log-for-every-mcp-tool-call.md, el-GR: /gr/blog/what-to-log-for-every-mcp-tool-call.md, hi-IN: /hi/blog/what-to-log-for-every-mcp-tool-call.md, id-ID: /in/blog/what-to-log-for-every-mcp-tool-call.md, hr-HR: /hr/blog/what-to-log-for-every-mcp-tool-call.md, hu-HU: /hu/blog/what-to-log-for-every-mcp-tool-call.md, it-IT: /it/blog/what-to-log-for-every-mcp-tool-call.md, ja-JP: /jp/blog/what-to-log-for-every-mcp-tool-call.md, ko-KR: /kr/blog/what-to-log-for-every-mcp-tool-call.md, ar-SA: /ar/blog/what-to-log-for-every-mcp-tool-call.md, nl-NL: /nl/blog/what-to-log-for-every-mcp-tool-call.md, no-NO: /no/blog/what-to-log-for-every-mcp-tool-call.md, pl-PL: /pl/blog/what-to-log-for-every-mcp-tool-call.md, pt-BR: /pt/blog/what-to-log-for-every-mcp-tool-call.md, ro-RO: /ro/blog/what-to-log-for-every-mcp-tool-call.md, ru-RU: /ru/blog/what-to-log-for-every-mcp-tool-call.md, sv-SE: /se/blog/what-to-log-for-every-mcp-tool-call.md, zh-CN: /zh-cn/blog/what-to-log-for-every-mcp-tool-call.md, sl-SI: /sl/blog/what-to-log-for-every-mcp-tool-call.md, sr-Latn-RS: /sr/blog/what-to-log-for-every-mcp-tool-call.md, th-TH: /th/blog/what-to-log-for-every-mcp-tool-call.md, tr-TR: /tr/blog/what-to-log-for-every-mcp-tool-call.md, ur-PK: /ur/blog/what-to-log-for-every-mcp-tool-call.md, vi-VN: /vi/blog/what-to-log-for-every-mcp-tool-call.md, sk-SK: /sk/blog/what-to-log-for-every-mcp-tool-call.md}
---

[AI агенти](https://tajo.io/bg/blog/?category=ai-agents)

# Какво да записвате за всяко извикване на MCP инструмент

Клиентът вижда отдалечения MCP сървър като един непрозрачен span, а таблото на каталога вижда сборове. Само сървърът е видял извикването. Редът, който MCP сървърите на Tajo записват за всяко извикване, поле по поле, какво се изчиства от него и какво не е изградено.

логване на MCP сървър

Какво трябва да записва един MCP сървър за всяко извикване на инструмент?

Записвайте по един ред на извикване на инструмент, на сървъра, защото сървърът е единственото място, което го е видяло. MCP сървърите на Tajo записват кой е извикал (ID на ключа, никога тайната му), кой сървър и конектор, инструмента, ако съществува, неговия клас на ефект, ok или кратък код на грешка, продължителност, размер на резултата, trace ID, записите, засегнати от извикването, както и аргументите и отговора, изчистени от тайни и лични данни. Редовете се четат с logs.list и logs.get и се изтриват след 30 дни. Те се пазят отделно от одитния дневник с хеш верига, в който се пазят одобренията и хешовете на техните входни данни. Не е изградено: оценка на състоянието, известие за процента грешки, търсене по инструмент или trace ID и експорт към Вашата собствена система за проследяване.

[Научете повече](https://tajo.io/bg/blog/what-to-log-for-every-mcp-tool-call/#%D0%B5%D0%B4%D0%B8%D0%BD-%D1%80%D0%B5%D0%B4-%D0%BD%D0%B0-%D0%B8%D0%B7%D0%B2%D0%B8%D0%BA%D0%B2%D0%B0%D0%BD%D0%B5)

На 8 юни 2026 г. Anthropic даде на собствениците на конектори в каталога на Claude табло. То показва активните потребители, общия брой извиквания на инструменти и позицията в каталога. Показва „[оценка на състоянието, проценти на грешки и латентност с един поглед, с разбивка на грешките по инструмент, за да установите точно какво се проваля](https://claude.com/resources/articles/observability-for-developers-building-connectors)“.

Година по-рано Alex Volkov от Weights & Biases беше описал същия проблем от другия край. Щом агентът му започна да извиква инструменти през MCP, „[цялата наблюдаемост, с която бях свикнал, когато собственият ми код се изпълнява от начало до край, леко помръкна](https://www.youtube.com/watch?v=Lcqat4iP_lE&t=61s)“. Колегата му от лекцията, Benjamin Eckel от Dylibso, показа защо. Отдалеченият MCP сървър „[се появява в трейса като един-единствен span на услуга](https://www.youtube.com/watch?v=Lcqat4iP_lE&t=447s)“, защото работи извън контрола на извикващия.

И двата погледа стоят извън сървъра. Клиентът вижда един непрозрачен span. Каталогът вижда сборове. Никой от тях не е видял какво е било поискано от сървъра, какво е отказал и какво е засегнал. Видял го е само сървърът, затова само сървърът може да го запише.

Ето какво записват MCP сървърите на Tajo, прочетено от кода, който ги изпълнява, и [описано в документацията](https://tajo.io/bg/docs/mcp/#mcp-request-log). [Какво е MCP сървър](https://tajo.io/bg/blog/what-is-an-mcp-server/) обяснява протокола. Тази статия обяснява реда.

## Един ред на извикване

Таблото е погледът на началника на пристанището: кораби влизат, кораби излизат, кои са закъснели. Дневникът на заявките е корабният дневник на самия кораб, воден на борда, в момента.

Всяко `tools/call` на сървъра на работното пространство в Tajo и на всеки сървър на конектор [завършва с един ред](https://tajo.io/bg/docs/mcp/#mcp-request-log). Редът се записва, след като отговорът е съставен, какъвто и да е бил отговорът. Извикване, отказано, защото ключът няма право да пише, или защото крайната точка е само за четене, получава ред като всяко друго. Същото важи и за извикване на инструмент, който не съществува.

Ето какво съдържа редът и какво отказва да съдържа.

| Поле | Пази се | Не се пази |
| --- | --- | --- |
| Кой | ID на API ключа, който е извикал. Токен от вход чрез OAuth също е ключ. | Тайната на ключа или неговият префикс. |
| Къде | Сървърът на работното пространство или сървър на конектор, с неговия конектор и профил. |  |
| Инструмент | Името, когато сървърът има инструмент с това име. | Всяко друго име, изпратено от клиента: то се съхранява като `(unknown)`. |
| Ефект | `read`, `write`, `send` или `destructive`: най-тежкият ефект, който извикването може да има. |  |
| Резултат | `ok` или кратък код на грешка във формат snake\_case, например `unknown_tool`. | Описание на грешката в свободен текст: всичко, което не е код, се съхранява като `tool_error`. |
| Продължителност и размер | Милисекунди от пристигането до отговора и байтовете, които извикващият е получил. |  |
| Trace ID | ID на заявката от заглавка `x-request-id`, `x-trace-id` или W3C `traceparent`, иначе нов. | Стойност на заглавка, която не е шестнадесетична или UUID. |
| Записи | До 20 ID на записи, които извикването е посочило или създало: контакт, съобщение, одобрение. | Самите записи. |
| Съдържание | Аргументите и отговорът, [изчистени](https://tajo.io/bg/docs/mcp/#mcp-request-log), най-много 4 KB всеки. | Тайни, свободен текст и личните данни, изброени по-долу. |

Три от тези откази засягат клиента, а не данните. Името на инструмента, кодът на грешката и trace ID идват отвън. Всеки от тях се пази само във форма, за която сървърът може да гарантира. Дневник, който съхранява каквото и да е изпратил извикващият, може да бъде напълнен с всичко, включително с имейл адреса на клиент в колоната за име на инструмент.

Отвореният въпрос на Benjamin Eckel в края на лекцията беше как колекторът знае, „[че това е извикване на MCP инструмент, което има грешка](https://www.youtube.com/watch?v=Lcqat4iP_lE&t=906s)“. На един сървър отговорът е колона. `ok` е false, а кодът казва коя е грешката.

## Аргументите: правило, което обърнахме

Възражението е справедливо и е наше. Ако записвате аргументите, сте създали второ копие на данните на клиентите си, извън обхвата на всяка заявка за изтриване. До 18 октомври 2026 г. това беше [нашето собствено правило](https://tajo.io/bg/docs/mcp/#mcp-request-log). Дневникът не пазеше нито аргументите, нито съдържанието на резултата, защото и двете могат да носят лични данни.

Това беше грешен компромис. Дневник на заявките, който не може да покаже какво е изпратено и какво се е върнало, не може да отговори на единствения въпрос, заради който съществува: защо извикването на моя агент е неуспешно?

Затова съдържанието се пази, а причината да не се пази се решава по друг начин. Всяко съдържание минава през [едно детерминистично преминаване](https://tajo.io/bg/docs/mcp/#mcp-request-log), преди да бъде поставено на опашка.

- **Нито една тайна не оцелява.** Поле, чието име подсказва токен, парола, тайна, подпис, бисквитка, сесия или около двадесет подобни думи, запазва само `[secret]`. Същото важи за стойност с позната форма на идентификационни данни, където и да се появи. Това обхваща bearer токени, JWT, частни ключове, URL адреси с парола и всяка непрозрачна поредица от 40 или повече знака на ключ.
- **Свободният текст изобщо не се пази.** Поле с име `html`, `text`, `body`, `markdown` или `content` запазва само `[redacted]`. Свободният текст съдържа имена и улични адреси, които никой шаблон не открива.
- **Личните данни се маскират завинаги.** Поле, чието име обозначава лични данни, например имейл, телефон, име, адрес или бележка, запазва само `[redacted]`. Имейл адрес, телефонен номер, карта или IBAN в който и да е друг низ се маскира.
- **Съдържанието остава малко.** [Низовете се отрязват на 512 знака](https://tajo.io/bg/docs/mcp/#mcp-request-log), списъците на 20 елемента, обектите на 50 ключа, а влагането на 6 нива. Цялото съдържание се [отрязва на 4 KB](https://tajo.io/bg/docs/mcp/#mcp-request-log) и се маркира като съкратено.

Два вида извиквания пазят по-малко. Контактите, които чатът на даден човек е донесъл от друго приложение, се записват като маркер и брой, никога като съдържание. Извикване, което чете дневника, не пази отговор, защото отговорът би бил само други редове от дневника.

Сега цената. Маскирането е окончателно, а не криптиране с ключ, който някой държи. Дневникът не може да Ви покаже имейл адреса, от който съобщението се е върнало. Показва Ви ID на контакта, а контактът, по собствените си правила, е на едно извикване разстояние. Дневникът е извън периодичното изтриване на данни в работното пространство, затова маскирането не може да чака него.

## Защо дневникът не е одитната следа

Tajo вече има [одитен дневник, в който само се добавя](https://tajo.io/bg/docs/mcp/#mcp-request-log). Всеки ред носи хеш на предишния ред, така че промяна където и да е прекъсва веригата. Защо тогава да не записваме извикванията на инструменти там?

Защото веригата има цена. Всяко добавяне взема заключване за работното пространство и чете предишния ред, за да удължи веригата. Ако всяко четене минаваше през него, извикванията на работното пространство щяха да се наредят зад едно заключване. Освен това промените в състоянието, заради които одитният дневник съществува, щяха да бъдат затрупани под хиляди четения.

Затова двата записа се разделят според въпроса. Дневникът на заявките казва какво е поискал един агент и какво се е случило, [за 30 дни](https://tajo.io/bg/docs/mcp/#mcp-request-log). Одитният дневник казва какво се е променило, кой го е разрешил и дали някой е редактирал записа оттогава.

Одобренията са от страната на одита. В профилите на конекторите на Tajo [инструмент за предложение подготвя декларирано действие, а инструмент за прилагане го изпълнява, след като бъде одобрено](https://tajo.io/bg/docs/mcp/). Нищо не достига до доставчика, докато предложението не бъде одобрено от човек или от правило, което работното пространство е включило. Редът на извикването за предложение посочва сред своите записи одобрението, което е създал. Самото одобрение е обвързано с SHA-256 хеш на точните входни данни. [Одобрението покрива точно входните данни, които сте видели](https://tajo.io/bg/docs/mcp/agent-specification/): променете едно поле и то вече не съвпада. Когато записът стигне до целта, неговият одитен ред пази хеша на входните данни и хеш на отговора на доставчика, никога стойностите от отговора.

## Колко струва един ред

Един ред е запис в базата данни, а записът има commit. [До 8 октомври 2026 г.](https://tajo.io/bg/docs/mcp/#mcp-request-log) всяко извикване чакаше собствения си commit преди отговора, около 2,6 ms на нашия хост. За един клиент това беше една четвърт от малко извикване на инструмент.

Сега редът се съставя, когато извикването приключи, и се поставя на опашка. Едно изпразване записва опашката [най-много 100 ms по-късно](https://tajo.io/bg/docs/mcp/#mcp-request-log), с по една транзакция на работно пространство, така че много извиквания споделят един commit. Нищо в реда не се променя, включително времевият му печат. Ако [чакат 5000 реда](https://tajo.io/bg/docs/mcp/#mcp-request-log), следващото извикване изчаква изпразването, вместо някой ред да бъде изхвърлен.

Записването никога не проваля извикване. Неуспешен запис се опитва отново ред по ред, след което се записва в лога и се изхвърля. Това, което едно принудително спиране на процеса губи, е всичко, което е стояло на опашката: [най-много последните 100 ms извиквания](https://tajo.io/bg/docs/mcp/#mcp-request-log).

## Обратно прочитане

[`logs.list`](https://tajo.io/bg/docs/mcp/#mcp-request-log) връща извикванията на работното пространство, най-новите първи, без съдържание. Филтрира по време, по резултат или HTTP статус, по източник (MCP или REST API, който ползва същата таблица) и по API ключ. По подразбиране връща по 50 на страница, до 100. `logs.get` връща едно извикване с текущото име на ключа, неговия статус, продължителността, изчистените заявка и отговор и записите, които е засегнало.

И двете четат само работното пространство на извикващия. ID на ред от друго работно пространство не се намира.

Грешката на инструмент носи ID на заявката. Когато сървърът е създал този ID или той е пристигнал като шестнадесетична стойност или UUID, това е trace ID на реда. Агент, който е получил грешка, може да предаде на човек единствената стойност, която посочва извикването.

## Какво е изградено и какво не е

Изградено към момента на писане:

- По един ред на `tools/call` на сървъра на работното пространство и на всеки сървър на конектор, включително отказаните и непознатите извиквания.
- [ID на ключа, сървър, конектор, профил, инструмент, ефект, резултат, продължителност, размер на резултата, trace ID и до 20 засегнати записа](https://tajo.io/bg/docs/mcp/#mcp-request-log).
- [Изчистени аргументи и отговори](https://tajo.io/bg/docs/mcp/#mcp-request-log), най-много 4 KB всеки.
- [`logs.list` и `logs.get`](https://tajo.io/bg/docs/mcp/#mcp-request-log), ограничени до работното пространство, с пазене 30 дни.
- Одобрения, обвързани с хеш на входните данни, и приложени записи, регистрирани с хешове на входа и изхода в одитния дневник с хеш верига.

Не е изградено и си струва да го знаете, преди да разчитате на това:

- Няма оценка на състоянието, няма графика по инструмент и няма известие при нарастващ процент грешки. Обобщение по инструмент на извикванията, грешките и най-бавните продължителности [съществува за операторите на Tajo](https://tajo.io/bg/docs/mcp/#mcp-request-log), но не и на повърхност, която Вие можете да отворите.
- `logs.list` не може да филтрира по име на инструмент или по trace ID. За да намерите реда зад даден ID на заявка, стеснете по време и ключ.
- Редовете не се експортират към система за проследяване, която Вие поддържате. Trace ID се чете само от HTTP заглавки, а не от MCP полето `_meta`, което лекцията използва, за да [пренася контекста на проследяването](https://www.youtube.com/watch?v=Lcqat4iP_lE&t=535s).
- [След 30 дни редът се изтрива](https://tajo.io/bg/docs/mcp/#mcp-request-log). Няма архив или експорт.
- Каквото е маскирано, не може да бъде възстановено от дневника.
- [Принудително спиране може да загуби последните 100 ms редове](https://tajo.io/bg/docs/mcp/#mcp-request-log).

Лекцията завърши с извода, че наблюдаемостта в MCP „[не е разпределена равномерно](https://www.youtube.com/watch?v=Lcqat4iP_lE&t=841s)“. Табло надолу по веригата не може да поправи това, нито пък трейс, който спира пред вратата на сървъра. [Една неуспешна синхронизация има нужда от собствен запис](https://tajo.io/bg/blog/worker-died-sync-didnt/); същото важи и за всяко извикване, което е поискало такъв.

Сървърът е видял извикването. Никой друг не го е видял. Запишете го там.

## Често Задавани Въпроси

**Какво трябва да записва един MCP сървър за всяко извикване на инструмент?**

По един ред на извикване, записан от сървъра: кой API ключ е извикал, кой сървър и конектор, името на инструмента, ако инструментът съществува, неговият клас на ефект, ok или кратък код на грешка, продължителността, размерът на резултата, trace ID на заявката, ID на записите, които извикването е посочило или създало, както и аргументите и отговорът, изчистени от тайни и лични данни. MCP сървърите на Tajo записват този ред за всяко tools/call, включително отказаните извиквания, и го пазят 30 дни.

**Трябва ли дневникът на MCP заявките да пази аргументите на инструментите?**

Да, изчистени. Дневник без аргументите не може да каже защо едно извикване е неуспешно. До 18 октомври 2026 г. Tajo не пазеше съдържание, а сега пази и двете, след едно детерминистично преминаване: тайните стават \[secret\], свободният текст и личните полета стават \[redacted\], имейлите, телефоните, картите и IBAN номерата се маскират, а всяко съдържание се отрязва на 4 KB. Маскирането е окончателно, затова дневникът сочи към записа чрез ID, вместо да го копира.

**Защо дневникът на извикванията на MCP инструменти да е отделен от одитния дневник?**

Защото отговарят на различни въпроси на различна цена. Одитният дневник на Tajo е хеш верига от промени в състоянието и всяко добавяне взема заключване за работното пространство, за да удължи веригата. Ако всяко четене минаваше през него, извикванията на работното пространство щяха да чакат на опашка зад това заключване, а промените щяха да се загубят сред четенията. Извикванията на инструменти отиват в отделна таблица без верига, пазена 30 дни; записите, които едно извикване подготвя, все така оставят свои одитни редове.

## Свързани статии

### [Какво е MCP сървър? Как работят MCP и MCP UI през 2026 г.](https://tajo.io/bg/blog/what-is-an-mcp-server/)

3.10.2026 г. · 14 мин четене

Стъпка 1 → Стъпка 6

### [Grok Bot и Brevo: затворете цикъла на продуктова обратна връзка](https://tajo.io/bg/blog/grok-bot-brevo-product-feedback/)

7.10.2026 г. · 4 мин четене

3 раздела

### [MCP или CLI е грешният въпрос. Попитайте къде живее състоянието.](https://tajo.io/bg/blog/mcp-or-cli-is-the-wrong-question/)

4.11.2026 г. · 7 мин четене

5 раздела
