Miért írtunk saját MCP-szervereket — és miért nem REST-eszközöket
Egy 60 endpoint-os REST API-ból agent-tool csinálni token-falóvá teszi a chat-et. Az MCP nem hype — egy konkrét költség-megoldás.
Az LLM nem tudja, mit nem tud. Az MCP server-nek pontosan ez a dolga: megmondani neki.
2026 elején egy döntés előtt álltunk: a chat-agentünknek hozzáférést kell adni 919 backend-műveletre az 5 NestJS monolitunkból (admin, finance, logistics, sales-ai, assistant). A "naiv" út az OpenAI function calling lett volna: minden controller-method egy JSON-schema, mind a system promptban. Számoltunk: 919 művelet kb. 340 ezer tokent jelent — minden egyes kérésnél. Ezen $0.85 / hívás, csak a kontextusért. Havi 50 ezer beszélgetésnél ez $42 ezer / hó, mielőtt egy modell elgondolkodott volna bármin. Nem ment.
MCP — mint discovery-protokoll
Az MCP (Model Context Protocol) megoldása szakaszos: a modell először lekérdezi a server-től, milyen eszközcsoportok vannak (12 group, ~300 token), kiválasztja a relevánsat ("ehhez a kéréshez nekem a `finance.invoices.*` csoport kell"), és csak akkor kéri le a részletes schema-t. Egy konkrét beszélgetésnél a context window-ben 4-8 ezer token van, nem 340 ezer. A költség ~$0.018 / hívás, vagyis 47-szer olcsóbb. Ezért írtunk saját MCP server-eket — minden monolitnak egyet, ahol a service-réteg natívan, NestJS provider-ként expose-olja a tool-okat.
Mit ad nekünk a saját MCP, amit a REST-toolozás nem
- Per-tenant scoping: a `tenantId`-t a transport-szinten kötjük, nem minden tool-paraméterben — esélye sincs az LLM-nek átírni
- Strict input-validáció Zod-dal a tool-réteg előtt: nem ér el a service-ig egy szennyezett payload
- Audit-trail beépítve: minden tool-hívás automatikusan emittál egy `mcp_tool_invocation` eseményt Postgres-be
- Tier-szűrés: a `landing_tier_config` JSONB alapján a tenant csak azokat a tool-okat látja, amikre fizetett
- Schema-discovery on-demand: csak a kiválasztott csoport schema-i mennek a kontextusba
- Saját rate-limit Redisszel: hívás-tool párosító kvótát megakadályozza a runaway agent-loop-ot
Számok 8 hét élesben
A backend MCP catalog 478 művelettel, a sales-ai 47-tel, a consulting 193-mal, a finance 144-gyel, a logistics 77-tel, az assistant 27-tel zárt. Összesen 966 MCP-tool, ~75 PR-ban szállítva. A tényleges OpenAI bill májusban $4.180 volt — a naív verzió $42 ezerre lőtt volna. A 90. percentilis tool-hívás 84 ms (Postgres + Redis cache + Pino log). A modell hibásan választott tool-ot az esetek 1.8%-ában — ezt egy `tool_selection_fallback` paranccsal kezeljük, ami visszadob egy "did you mean" listát.
Az MCP-nek nem azért van értelme, mert új. Hanem mert a REST-toolozás 47-szer drágább, és nincs róla audit-trail.