← Natrag
AI

MCP server: Kada LLM treba skalabilni toolbox

RiNET Engineering· 26. svibnja 2026.· 4 min čitanja· 16 pregleda
MCP server: Kada LLM treba skalabilni toolbox
🎧 Poslušaj članak

Zamislimo da AI agent mora provjeriti je li korisnik imao pristup dokumentu prije nego ga pošalje. Treba pretražiti znanje, provjeriti audit trail, provjeriti tko je autor, i na kraju generirati odgovor. Bez MCP-a, svaki od tih koraka postaje zasebna rupa u kodu, custom endpoint kojeg netko mora ručno definirati, dokumentirati i održavati. Sa šezdesetak alata, function calling postaje noćna mora.

Model Context Protocol je arhitektura koja rješava upravo ovaj problem. Umjesto da svaki tool bude zasebna funkcija koju LLM mora naučiti ili koja mora biti eksplicitno definirana u promptu, MCP definira standardni način na koji LLM otkriva, poziva i dobiva odgovore iz alata. To je poput REST-a za AI agente, ali dizajnirano za streaming i kontekst.

Ključna prednost MCP-a u usporedbi s klasični function calling leži u arhitekturi otkrivanja. Kad imate pet alata, možete ih sve nabrojati u system promptu i LLM će ih koristiti bez greške. Kad imate pedeset, prompt postaje predug, kontekst se troši na metapodatke, a model počinje preskakati alate jer su mu manje relevantni u moru opisa. MCP rješava to pomoću tools manifesta i SSE streama.

Tools manifest je JSON dokument koji opisuje svaki alat: njegovo ime, opis, parametre i povratne tipove. LLM dobiva samo manifest, ne i cijeli codebase. Kad agent treba obaviti zadatak, prvo pregleda manifest, odabere relevantne alate, i zatim ih poziva preko SSE streama. Stream omogućuje da se odgovori alata vraćaju u stvarnom vremenu, bez blokiranja agenta.

U praksi, to znači da agent može paralelno pozvati search_knowledge i run_sql_view, dobiti rezultate u toku, i na temelju njih odlučiti treba li još get_audit_trail. Sve unutar istog konteksta, bez prekida u logici. Function calling bi zahtijevao sekvencijalne pozive, ručno upravljanje stateom, i eksplicitno definiranje svakog koraka u kodu.

Naš RiNET MCP server implementira osam ključnih alata koji pokrivaju najčešće operacije. search_knowledge omogućuje vektorsku pretragu dokumentacije, dok run_sql_view izvršava unaprijed definirane SQL poglede s parametrima. get_audit_trail vraća povijest promjena za bilo koji entitet, a embed_text pretvara proizvoljni tekst u vektorski embedding za daljnju obradu.

Tu su i alati poput get_document, koji dohvaća cijeli dokument iz repo-a, validate_permission koji provjerava ima li korisnik pravo pristupa, summarize koji generira sažetak iz proizvoljnog teksta, i classify koji označava tekst prema zadanim kategorijama. Svaki alat ima definirane ulazne parametre, povratne tipove, i dokumentaciju u manifestu.

SSE stream u MCP-u nije samo tehnički detalj; on mijenja način na koji agent komunicira s alatom. Dok function calling obično vraća odgovor kao JSON blob koji agent mora parsirati i interpretirati, SSE omogućuje da alat šalje djelomične rezultate, progres, ili čak greške u toku. Agent može reagirati na prvi dio odgovora prije nego što je cijeli alat završio.

Konkretno, kad search_knowledge pretražuje bazu znanja, vraća prvih nekoliko rezultata dok se ostatak još indeksira. Agent može odmah krenuti u obradu tih rezultata, umjesto da čeka da se cijela pretraga završi. Ovo je kritično kad imate alate koji traju više od nekoliko sekundi, poput generiranja embeddinga ili kompleksnih SQL upita.

Ovaj pristup razvijamo na rinet.one — za detalje slobodno se javi.

MCP također definira standardni error handling. Svaki alat vraća strukturirane greške s kodovima i porukama, umjesto da puca u exception ili vraća nekonzistentne JSON forme. Agent zna točno što je pošlo krivo i može odlučiti hoće li ponoviti poziv, zamijeniti alat, ili obavijestiti korisnika. Ovo je nemoguće s ad-hoc function callingom gdje svaki alat ima svoj error format.

Jedna od najvećih prednosti MCP-a je mogućnost dodavanja novih alata bez mijenjanja koda agenta. Dovoljno je proširiti tools manifest i restartati MCP server. Agent će automatski otkriti nove alate pri sljedećem pozivu i početi ih koristiti. Nema potrebe za retreningom modela, nema potrebe za promjenom prompta, nema potrebe za deployem nove verzije agenta.

U usporedbi s function callingom, MCP je dizajniran za enterprise okruženja gdje se alati mijenjaju, dodaju i uklanjaju svakodnevno. Function calling zahtijeva da je svaki alat unaprijed poznat i definiran u kodu. MCP dopušta dinamičko otkrivanje i pozivanje, što ga čini prirodnim izborom za sustave s više od dvadeset alata.

Naš RiNET MCP server je implementiran kao izolirani servis koji komunicira s LLM-om preko standardnog SSE endpointa. Svaki alat je zasebna funkcija u kodu, ali agent ih vidi samo kroz manifest. To znači da možemo mijenjati implementaciju alata bez utjecaja na agenta, sve dok manifest ostaje konzistentan.

Arhitektura je jednostavna: LLM šalje zahtjev na MCP endpoint s imenom alata i parametrima. Server prima zahtjev, provjerava permisije, izvršava alat, i vraća odgovor kroz SSE stream. Agent obrađuje stream i nastavlja sa svojom logikom. Sve je asinkrono, skalabilno i nezavisno.

JOš jedna prednost je mogućnost logginga i auditinga. Svaki poziv alata se bilježi u audit trail, zajedno s parametrima, korisnikom, i vremenom. Ovo je kritično za regulirane industrije gdje se svaka akcija mora moći rekonstruirati. Function calling obično nema ovu mogućnost jer je alat pozvan direktno iz koda agenta, bez posrednika.

MCP donosi i bolju sigurnost. Umjesto da agent ima direktan pristup bazama podataka ili API-jima, sve prolazi kroz MCP server koji provjerava permisije i validira parametre. Agent ne može slati SQL injection napade jer run_sql_view prima samo ime pogleda i parametre, ne raw SQL. Slično, embed_text ne dopušta proizvoljne skripte, samo tekst.

Za kraj, MCP nije samo protokol; on je filozofija. Umjesto da gradimo monolitne agente koji znaju sve, gradimo ekosustav alata koje agent može dinamički otkrivati i koristiti. Skalabilnost, sigurnost i fleksibilnost dolaze iz arhitekture, a ne iz koda. Kad imate pedeset alata, MCP nije opcija, već nužnost.

Ako te zanima ovakva arhitektura ili gradiš nešto slično za svoju instituciju — javi se preko rinet.one.

MCPModel Context ProtocolAI agentstool callingLLM toolsRi.NETsovereign AIAI operativni sustavCroatian AItehnologija

Zanima vas ovakva AI tehnologija?

RiNET gradi sovereign AI rjesenja za javni sektor i poduzeca - od civic intelligence do automatizacije nabave.

Kontaktirajte nas →
0 komentara

Komentari