Hermes Agent
MCP
Az MCP nyílt szabvány, amely egységesen köti össze az AI alkalmazásokat a külső adatforrásokkal és eszközökkel. Nálunk ez adja az ügynökök eszközrétegét.
A Model Context Protocol (MCP) nyílt szabvány, amely egységesíti, hogyan érnek el az AI alkalmazások külső rendszereket: adatforrásokat, eszközöket és előre elkészített munkafolyamatokat. Nem modell és nem szolgáltatás, hanem interfész-leírás, amelyhez a kliens és a szerver oldalán egymástól függetlenül lehet csatlakozni.
A szabvány JSON-RPC 2.0 üzenetekkel dolgozik, és három szereplőt különböztet meg. A host az a futtató alkalmazás, amely a kapcsolatokat kezdeményezi, a kliensek a hoston belüli csatlakozók, a szerverek pedig azok a szolgáltatások, amelyek a kontextust és a képességeket adják. Egy host több klienst is futtathat, de minden kliens egyetlen szerverhez kapcsolódik, saját munkamenetben. Ez a felosztás nem díszítés: a biztonsági határok is itt húzódnak, és a host felel azért, hogy egy szerver ne lássa a teljes beszélgetést, se a többi szervert.
Mit kínál egy szerver?
A szerverek három primitívet adhatnak, és ezeket másképp irányítja a rendszer:
- Erőforrások (resources): kontextus és adat URI-val azonosítva, például fájlok, adatbázissémák, dokumentumok. Alkalmazás-vezéreltek: a host dönti el, hogyan kerülnek a kontextusba.
- Promptok (prompts): sablonos üzenetek és munkafolyamatok, amelyeket a felhasználó választ ki.
- Eszközök (tools): JSON Schemával leírt függvények, amelyeket a modell hív meg. Modell-vezéreltek, ezért itt a legszigorúbb a felügyelet.
Az, hogy ezek közül mi érhető el, az inicializáláskor lezajló képesség-egyeztetésen dől el: amit egyik fél sem jelentett be, az nem használható. Az eszközlistát a kliens tools/list kéréssel kérdezi le, híváskor pedig tools/call megy a szervernek. Az erőforrásokra előfizetni is lehet, így a kliens értesítést kap, ha egy erőforrás tartalma vagy a lista megváltozik.
Hogyan kapcsolódnak össze?
Két standard átvitel van, mindkettő JSON-RPC üzeneteket továbbít:
- stdio: a kliens helyi alfolyamatként indítja a szervert, az üzenetek soronként, a szabványos be- és kimeneten mennek.
- Streamable HTTP: a szerver önálló folyamat, egyetlen HTTP végpontot ad POST és GET metódusra, és opcionálisan SSE-folyamot nyit a szerver-oldali üzenetekhez. Ez váltotta fel a korábbi HTTP+SSE átvitelt.
A protokoll átvitel-független, saját átvitel is írható hozzá, de ilyenkor is meg kell tartani a JSON-RPC üzenetformát és az életciklus szabályait. A kapcsolat elején a felek verziót és képességeket egyeztetnek, HTTP esetén pedig a protokollverzió fejlécben is megjelenik, amit a szervernek el kell utasítania, ha nem támogatja.
Hol van a helye nálunk?
Nálunk az MCP az eszközréteg nyelve. A Hermes Agent ezen keresztül kapja a képességeit, a szervereket pedig a MCPHub fogja össze egy belépési pontba, ahol látszik, melyik szerver mit tud, és a hozzáférés is szabályozható. Ahol inkább folyamatot kell összekötni, ott n8n a ragasztó, a szervereket pedig konténerben futtatjuk.
Ez akkor működik jól, ha a szerverek kicsik és egy dolgot tudnak, mert így a jogosultság is szűken adható.
Amire figyelni kell
Az MCP saját dokumentációja mondja ki, hogy a szabvány nem tudja kikényszeríteni a biztonsági elveket: a hozzájárulás, a jogosultság és a naplózás az implementáció felelőssége.
- Az eszközleírás nem megbízható. Az annotációkat és a leírásokat megbízhatatlanként kell kezelni, kivéve, ha a szerver megbízható. A döntést nem hozhatja meg a leírás szövege.
- Ember a körben. Az eszközhívás tetszőleges kódvégrehajtás lehet, ezért a szabvány azt kéri, hogy a felhasználó előzetesen, kifejezetten járuljon hozzá, és lássa, mi fog lefutni.
- Helyi szerver, valódi kockázat. A helyben, a felhasználó jogosultságaival futó szerver kompromittálódása kódvégrehajtást jelent, és a felhasználónak nincs rálátása arra, mi fut.
- Engedélyezés. A dokumentált támadások között szerepel a confused deputy, a token-átengedés (token passthrough), az SSRF, a state handle eltérítése és a mix-up támadás. A közös minta az, hogy egy közvetítő szerver rossz hatáskörben jár el, ezért szűk hatókör, pontos redirect URI egyeztetés és kliensenkénti hozzájárulás kell.
- HTTP-nél külön szabályok. Az Origin fejléc ellenőrzése kötelező, helyben csak localhostra érdemes kötni a szervert, és hitelesítés kell minden kapcsolatra.
Ha ezek megvannak, az MCP nem varázslat, hanem kiszámítható szerződés a modell és a rendszereink között. Nálunk a CyberElectro minden eszközintegrációja ezen a szabványon keresztül kapcsolódik az ügynökökhöz: a képesség egyszer van leírva, és onnan használja a rendszer.
Tovább olvasás
- Specification - a szabvány mindenkori szövege, verzióra bontva.
- Introduction to MCP - rövid áttekintés, a hivatalos dokumentáció belépője.
- modelcontextprotocol/modelcontextprotocol - a specifikáció és a sémák forrása; a TypeScript-séma a hivatalos leírás alapja.