MCP serveri stoje između asistenta i sistema koje već vodite, i daju mu uzak spisak alata: status narudžbe, stranicu u CMS-u, dokument koji pozivalac smije da otvori, ili stanje zahtjeva podrške. Asistent ne dobija prijavu na cijelu firmu. Dobija nekoliko alata, i svaki radi jedan posao u okviru prava prijavljene osobe.
Sadržaj
Takav oblik gradimo. Jedan proces, mali broj alata, autentifikacija na stvarnu sesiju, samo potrebna prava, i log svakog poziva. Narudžbe, dokumenti, CMS i status podrške ostaju gdje već žive. MCP serveri su ta granica ispred sistema, a ne druga kopija baze.
Ovo je za firmu koja želi asistenta u podršci, prodaji ili operativi, sa odgovorom iz živih zapisa, a ne iz fajla zalijepljenog u chat. Chatbot koji samo razgovara zaseban je posao, i o njemu pišemo u članku o izradi AI chatbota i agenata. Ovdje je tema server iza razgovora: koji pozivi postoje, u čije ime rade, i koji ne smiju da krenu sami.
Šta MCP serveri urade kad asistent zove alat
Model Context Protocol je otvoren način da asistent koristi alate na serveru koji vi pokrećete. Host govori JSON-RPC prema tom serveru. MCP serveri objavljuju spisak alata. Model izabere ime i popuni argumente. Vaš kod izvrši tu jednu funkciju i vrati rezultat. Pravila poruka stoje u specifikaciji 2025-06-18.
Poziv alata nije odgovor u chatu i nije slobodno uputstvo. To je jedan API zahtjev sa fiksnim imenom. Model smije da izabere get_order_status i da pošalje id narudžbe. Ne smije da izmisli putanju, da otvori shell ili da prepravi upit. Ako imena nema na spisku, ništa se ne pokreće. Opis kaže kad je alat na mjestu. Ulazna shema, pisana kao JSON Schema, kaže koja polja smiju da se pošalju.
Definicija koju server može da oglasi izgleda ovako:
{ "name": "get_order_status", "description": "Read status, total and line items for one order the signed-in caller is allowed to see.", "inputSchema": { "type": "object", "properties": { "order_id": { "type": "string" } }, "required": ["order_id"] } }Opis držite uskim. “Vrati ovu narudžbu ako pozivalac smije da je vidi” jeste alat. “Pomozi oko narudžbi” nije, jer će model rastegnuti neodređeno ime. Alat dodajete kad se pitanje ponavlja, ne zato što bi jednog dana mogao da zatreba.
Kupac pita gdje je narudžba 10482. Model izabere get_order_status i pošalje taj id. Server provjeri sesiju, učita narudžbu kroz vaš API i vrati status, dostavljača i stavke. Ne vraća cijeli red, token plaćanja ni maržu. Asistent odgovori rečenicom. Zapis ostaje u sistemu narudžbi.

Kako MCP serveri dijele čitanje i pisanje
Alate dijelite po tome šta mijenjaju. Alat za čitanje nešto potraži i vrati. Alat za pisanje nešto kreira ili promijeni. Ta podjela je glavna sigurnosna odluka, i MCP serveri to pokazuju već u imenu alata.
| Naziv | Čita ili piše | Ko smije da ga zove |
|---|---|---|
get_order_status | Čita | Kupac koji drži narudžbu, ili agent na tom predmetu |
search_documents | Čita | Osoblje čija grupa već ima te fajlove |
list_cms_pages | Čita | Urednici tog sajta |
create_reply_draft | Piše samo nacrt | Agent podrške; ništa se ne šalje |
send_customer_email | Piše i šalje email | Niko automatski; osoba odobrava |
issue_refund | Piše i pomjera novac | Niko automatski; osoba odobrava |
Alati za čitanje pokrivaju dnevna pitanja: gdje je narudžba, koji dokumenti pominju ugovor, da li je stranica objavljena, u kojem je stanju zahtjev. Čitanje koje izlista svakog kupca, ili vrati svako polje, nije bezbjedno. Vratite status, datume, naslove, kratak izvod i vezu na sistem koji osoba već koristi.
Alata za pisanje je manje. Snimanje nacrta ostaje u help desku. Slanje emaila ne ostaje. Bilješka na zahtjevu nije povrat novca. Model smije da pripremi nacrt i da pokaže iznos. Ne završava radnju koju kupac osjeti. Odobrenje za poštu i novac stoji izvan modela.
Asistent nije pouzdani korisnik
Model nije zaposleni i nije administrator. Predlaže ime alata i argumente. MCP serveri odlučuju da li je poziv dozvoljen za osobu koja je prisutna. Dugotrajni admin ključ za svaki alat i svakog pozivaoca jeste dijeljena lozinka, a ne integracija.
Poziv vežite za stvarnu sesiju. Osoba se prijavi nalogom koji već ima. Server provjeri kratkotrajni token te sesije i zove vaš API kao tu osobu, ili kao servisni nalog koji nije širi od njenih prava. Kad sesija završi, token završi. Kopija chata nije ključ za sistem narudžbi.
Autentifikacija kaže ko zove. Autorizacija kaže koje zapise smije da dotakne. Iskoristite provjere koje API već ima. Prompt koji kaže “gledaj samo ovog kupca” jeste savjet. Provjera u kodu jeste kontrola.
Svaki poziv ostaje na jednom kupcu
Id kupca dolazi iz sesije, ne iz modela. Ako je kupac prijavljen, MCP serveri filtriraju svaki alat na tog kupca. Ako je prijavljen agent, filter je kupac na otvorenom predmetu. Isto vrijedi za dokumente i CMS: pozivalac vidi samo sajt i fajlove do kojih nalog već dopire.
Model ponekad pošalje id koji je vidio ranije, ili id koji je korisnik ukucao. Taj id je tvrdnja, ne dozvola. get_order_status učita narudžbu i usporedi vlasnika sa sesijom. Ako se razlikuju, alat vrati odbijanje, bez nagovještaja da narudžba postoji. Pretraga ostaje u skupu pozivaoca, sa malim limitom. Zahtjev koji nije na redu te osobe biva odbijen.
Provjeru stavite na jedno mjesto i zovite je iz svakog alata. Novi alat koji zaboravi filter uobičajen je način da pažljiv dizajn procuri. Model ne dobija polje za id kupca koje može da postavi na bilo koga.

Log i ljudsko odobrenje za email i novac
Svaki poziv ide u log: ko je prijavljen, koji alat, argumenti bez tajni i brojeva kartica, da li je uspio, i kad. Mjesec kasnije možete reći ko je tražio ovu narudžbu, bez bilješki modela. Log ne vraćajte modelu, jer kasniji poziv može da citira zapis koji trenutni pozivalac ne smije da vidi.
Sve što šalje email ili mijenja novac staje zbog osobe. Alat smije da skicira poruku ili da izračuna povrat. Član osoblja koji to pravo već ima vidi primaoca, iznos i id narudžbe na vašem ekranu, i potvrdi. Vaš put za poštu ili plaćanje odradi posao. MCP serveri upisuju odobrenje i ko ga je dao. Ako niko ne potvrdi, ništa se ne šalje i ništa se ne naplaćuje.
Siguran odlomak nije potpis. “Model je zvučao uvjereno” nije odobrenje, i potvrda nije skrivena u promptu.
Gdje MCP serveri rade
Server stavite pored sistema koje zove, na privatnoj mreži koju već koriste. Node.js ili PHP proces uz API dovoljan je većini firmi. Lokalni asistent govori mu preko stdio. Dijeljeni asistent govori preko HTTP-a na internoj adresi, sa istim provjerama sesije kao ostatak aplikacije. To nije javni URL sa ključem na laptopu.
Ako narudžbe i dokumenti ne smiju da napuste mrežu, i model može da ostane lokalan. Spajamo hostovane i lokalne modele, a pretragu po vašem tekstu koristimo kad pitanje nije o živom zapisu. Živi status i dalje dolazi iz alata. Jučerašnji izvoz do poslijepodneva već je pogrešan.

Šta ne izlagati
MCP serveri ne smiju da budu opći daljinski upravljač. Ovo ostavite van spiska:
- SQL koji je model napisao, ili upit preko sirovog connection stringa.
- Shell, pogled na cijeli disk, ili alat koji povlači bilo koji URL.
- Pretragu svih kupaca, zahtjeva ili dokumenata, bez vlasnika i bez limita.
- Brojeve kartica, pune podatke o plaćanju, lozinke, kolačiće i sirove tokene.
- Administratorske radnje: korisnici, uloge, brisanje kataloga, izvoz baze.
- Alat čiji je jedini ulaz slobodan tekst. To je prompt sa sporednim vratima.
Kad zadatak traži novu činjenicu, dodajte imenovani alat sa shemom, provjerom prava i linijom u logu. Kratak spisak koji možete da objasnite jeste zdrav server. Dugačak spisak koji niko ne pregleda jeste širom otvoren API.
Po čemu se MCP serveri razlikuju od lijepljenja podataka u chat
Lijepljenje tabele u chat djeluje brzo prvog poslijepodneva. Zalijepljeni sadržaj je kopija. Zastarjeva, često nosi redove koje ta osoba nije smjela da podijeli, i model je ne može osvježiti. Ništa ne bilježi ko je šta zalijepio.
MCP serveri odgovaraju u trenutku pitanja, iz sistema u kojem zapis živi, i samo poljima koja alat smije da vrati. Pozivalac vidi svoje narudžbe, ne izvoz firme. Promjena je imenovana radnja sa osobom u petlji, a ne rečenica koju bi neko kasnije odradio rukom.
Chat je pravo mjesto za pitanje. Loše je mjesto za čuvanje podataka firme. Server je mjesto odakle odgovor smije da dođe, i gdje odbijanje vrijedi i kad je pitanje dovitljivo sročeno.
Kako radimo
- Upoznavanje. Mapiramo gdje žive narudžbe, dokumenti, CMS i status podrške, ko smije da vidi svaki zapis, i koje radnje ne smiju bez čovjeka.
- Spisak alata. Imena, ulazi, čitanje ili pisanje, i ko smije da zove alat. Spisak prihvatate prije izgradnje.
- Izgradnja. MCP serveri na tom koraku rade kao jedan proces u Node.js ili PHP, uz vaš API, auth sesije, filter na jednog kupca i strukturisan log.
- Test. Dozvoljeni pozivi, odbijeni pozivi, tuđi id, i odobrenje za poštu i povrat novca.
- Puštanje. Server ostaje na vašoj mreži, asistent pokazuje na njega, a osoblje dobije kratku bilješku o odbijanju.
- Podrška. Alat dodajemo kad zadatak to traži, i uklanjamo alat koji nije smio da bude tu.
Zašto CodeWiz
- Studio građen za ovaj stack. CodeWiz je 2023. osnovao Dragan Plavšić u Banjoj Luci. Radimo sa klijentima lokalno i u inostranstvu, na daljinu.
- API i auth na prvom mjestu. Alati zovu API-je i provjere prava koje već imate. Te dijelove gradimo u Node.js i PHP kad nedostaju.
- AI koji može da ostane na vašoj mreži. Pretraga po dokumentima i lokalni modeli, kad tekst ne smije da izađe, stoje pored živih alata. To je dio usluga AI i ML integracije.
- MCP serveri koje možete da pregledate. Radije objašnjavamo šest alata nego katalog javnih konektora na produkciji.
- Open source na prvom mjestu. Protokol je otvoren, server je vaš, a dizajn prati način na koji osoblje već radi.
Često postavljana pitanja
Moraju li MCP serveri da stoje na javnom internetu?
Ne. Pripadaju privatnoj mreži pored API-ja. Jedna mašina osoblja može da koristi lokalni proces. Dijeljeni asistent koristi internu HTTP adresu i istu prijavu kao ostatak aplikacije. Javno ga otvorite samo kad klijent van mreže mora da se poveže, i tada ga autentifikujete kao svaki drugi javni API.
Može li sam da pošalje email kupcu ili da vrati novac?
Ne. Smije da skicira email ili da izračuna iznos. Osoba koja to pravo već ima potvrdi, a vaš put za poštu ili plaćanje odradi ostatak. Bez potvrde radnja se ne desi.
Po čemu se ovo razlikuje od API ključa u promptu?
Ključ u promptu je tajna koju model može da ponovi ili da upotrijebi za sve što ključ dozvoljava. Ovdje model ne vidi kredencijal. Vidi imena alata. Server drži kredencijal, veže ga za prijavljenu osobu i odbija sve van njenih prava.
Do kojih naših sistema može da dođe?
Do onih gdje usku funkciju možemo da stavimo ispred API-ja ili baze: narudžbe, dokumenti, CMS, help desk. Svaki sistem postane jedan ili dva alata, a ne kopija svakog endpointa. Ako stabilnog interfejsa još nema, njegova izrada je dio posla.
Šta vam treba od nas prije početka?
Neko ko zna gdje žive narudžbe, dokumenti i zahtjevi, i ko smije da ih vidi. Pristup testnom API-ju, ili kodu ako ga gradimo. Pitanja koja osoblje traži svaki dan, i radnje koje moraju da sačekaju osobu. Procjenu dajemo poslije tog razgovora.
Server koji vaše osoblje može da objasni
Recite nam koje pitanje vaš tim traži cijeli dan, i koji sistem drži tačan odgovor. Mi ćemo predložiti kako MCP serveri trebaju da izgledaju, koje alate imaju i koje pozive moraju da odbiju. Kontaktirajte nas, ili pogledajte usluge razvoja.