Integrovaný MCP server v NET Geniu

Každá instance NET Genia obsahuje integrovaný MCP server (Model Context Protocol), přes který AI asistenti a agenti získají všechno, co k práci s konkrétní implementací potřebují – data jejích aplikací, model dané implementace a znalosti o frameworku NET Genium. Data i model implementace mohou číst, analyzovat a s oprávněním k zápisu i měnit; znalosti frameworku jsou vždy jen pro čtení.

Typickými klienty jsou Claude nebo jeho vývojářská varianta Claude Code, ChatGPT nebo jeho vývojářská varianta CodexMicrosoft Copilot Studio, připojit se však může kterýkoli nástroj podporující protokol MCP. Klient se připojuje na adresu stránky „api.aspx“ v kořeni instance NET Genia a prokazuje se buď osobním MCP tokenem, nebo – u instancí běžících v kořeni webu přes HTTPS – přihlášením uživatele. Postup nastavení popisuje samostatný text Připojení AI nástroje k MCP serveru.

Co server umí

Nástroje serveru pokrývají šest okruhů:

  • Čtení dat – výpis dostupných tabulek, čtení záznamů s možností filtrování a zjišťování počtů záznamů. Číst lze také tabulky historie změn a metadata příloh.
  • Zápis dat – vytváření a úprava záznamů a jejich mazání. U vytváření a úpravy lze zvolit, zda se má změna zapsat i do historie změn a účastnit se synchronizace, tedy chovat se jako úprava provedená v uživatelském rozhraní – viz níže. Zápis ale nespouští ukládací skripty editačního formuláře, takže se hodí jen tam, kde na uložení záznamu nenavazuje procesní logika – viz níže.
  • Model implementace – přehled aplikačních skupin, aplikací a editačních formulářů, podrobný inventář jednotlivé aplikace, uživatelské skupiny a skupiny oprávnění a datový model ve formě příkazů CREATE TABLE. Jde o AI model implementace, který asistent dostává přímo ze serveru a vždy v aktuální podobě – nic se nestahuje ani ručně nevkládá.
  • Zápis modelu – zakládání, změny a mazání aplikačních skupin, aplikací, kategorií, editačních formulářů, nahlížecích stránek, ovládacích prvků, databázových dotazů i skriptů. Agent připojený k instanci tak aplikaci nejen popíše, ale i postaví a dál upravuje. Samostatnou operací je přejmenování stavebního prvku, které mění pouze zobrazovaný název, nikdy identifikátor.
  • Znalosti frameworku – výpis stránek dokumentace NET Genia a jejich plný text. Asistent tak navrhuje formuláře, dotazy a skripty podle platných standardů platformy, ne podle obecných zvyklostí. Znalostní báze serveru je výběrem z dokumentace; kompletní dokumentace je k dispozici v AI asistentovi na webu.
  • Podklady pro analýzu výkonu – statistika používání za posledních 30 dní (počet spuštění a celkový, průměrný i maximální čas u editačních formulářů, nahlížecích stránek, databázových dotazů, externích funkcí a skriptů), počty záznamů všech databázových tabulek a analýza indexů, která odhalí sloupce používané ve spojení tabulek bez indexu. Asistent tak analyzuje výkon instance přímo z běžícího systému, bez stahování reportů. Statistika používání se sbírá jen tehdy, je-li v nastavení NET Genia zapnuté logování do databáze.

Asistent s přístupem ke čtení dat tak dokáže odpovídat i na otázky, na které samotný popis struktury nestačí – například „kolik je záznamů“, „najdi konkrétní doklad“ nebo „jak se záznam v čase měnil“.

Osobní MCP token

Přístup k serveru řídí osobní MCP token konkrétního uživatele. Token si každý uživatel vygeneruje sám v dialogu „Změna hesla“ (v navigační oblasti v sekci „Moje nastavení“ odkaz „Změnit heslo“) na záložce „MCP token“:

  • token se v čitelné podobě zobrazí pouze jednou, při vygenerování – na serveru se ukládá jen jeho otisk (hash),
  • platnost tokenu je 90 dnů, po jejím vypršení lze vygenerovat token nový,
  • každý uživatel má nejvýše jeden token a může ho kdykoli smazat.

Oprávnění tokenu určují, které nástroje jsou klientovi dostupné:

Čtení všech dat a modelu přes MCP server čtecí nástroje a čtení implementačního modelu jen uživatelé s administrátorskými právy
Zápis všech dat a modelu přes MCP server zapisovací nástroje, zápis implementačního modelu a přejmenování stavebních prvků jen uživatelé s administrátorskými právy
Přístup přes vlastní API autentizace vůči vlastnímu API zákaznického projektu kterýkoli uživatel

Implementační model patří pod obě oprávnění – čtení modelu, datového modelu, statistiky používání, počtů záznamů i analýzy indexů odemyká oprávnění ke čtení, zápis modelu a přejmenování prvků oprávnění k zápisu. Model popisuje aplikace konkrétního zákazníka, takže token, kterému čtení dat vědomě nezapnete, se k němu nedostane.

Znalosti frameworku se nezapínají zaškrtnutím – dostane je každý token, jehož vlastník má administrátorská práva, bez ohledu na oprávnění ke čtení a zápisu. Je to obecná dokumentace platformy, ne obsah instance, takže o rozšíření oprávnění nejde. Token bez obou zaškrtnutí tedy dostane pouze ji.

Vestavěný účet Administrator navíc spravuje tokeny ostatních uživatelů – může je mazat a přepínat jejich oprávnění.

Přístup k serveru lze omezit jen vybraným administrátorům – na záložce „Oprávnění“ v Nastavení NET Genia se vyjmenují administrátoři, kteří smí s MCP serverem pracovat. Dokud je seznam prázdný, platí pravidla popsaná výše a server používá kterýkoli administrátor. Jakmile je v seznamu alespoň jeden záznam, projde už jen vestavěný účet Administrator a vyjmenovaní uživatelé – ostatním se požadavek odmítne, a to včetně znalostí frameworku, a oprávnění tokenu ke čtení a zápisu se jim v dialogu „Změna hesla“ přestanou nabízet. Omezení platí i pro připojení přihlášením popsané níže; oprávnění „Přístup přes vlastní API“ se netýká. Detailní popis seznamu je uveden v samostatné příručce Nastavení NET Genia.

Připojení přihlášením

Nástroje, které si hlavičku požadavku nastavit nedovolují – typicky ClaudeChatGPT – se k instanci připojí přihlášením místo tokenem: uživatel zadá jen adresu serveru, projde běžným přihlášením do instance a na obrazovce souhlasu zaškrtne, zda aplikace smí data číst a zapisovat. Instance je pro ně zároveň autorizačním serverem (OAuth 2.1) a vydá jim vlastní přístupový token s platností jedné hodiny, který si aplikace sama obnovuje.

Pravidla jsou stejná jako u osobního tokenu: přístup získá jen uživatel s administrátorskými právy, každý požadavek se přihlašuje jako on a oprávnění ke čtení a zápisu dat určuje jeho souhlas. Připojené aplikace vidí uživatel v dialogu „Změna hesla“ na záložce „Připojené aplikace“ a může je kdykoli odpojit – odpojení platí okamžitě. Tento způsob je dostupný jen u instancí běžících v kořeni webu přes HTTPS, v NET Genium Online tedy vždy; instance v podadresáři serveru zůstává u osobního tokenu. Postup popisuje text Připojení AI nástroje k MCP serveru.

Zápis s historií změn, nebo bez ní

U vytváření a úpravy záznamu se volí, zda se má změna zapsat i do historie změn a účastnit se synchronizace. Ve výchozím stavu se zapisuje bez nich – záznam vznikne nebo se změní, ale v historii po něm nezůstane stopa.

  • S historií zapisuj změny, které mají zůstat dohledatelné, a změny, na které něco v platformě reaguje.
  • Bez historie zapisuj hromadné dávky, typicky testovací a ukázková data. Historie by u nich jen narostla, aniž by komukoli něco řekla.

Je-li na editačním formuláři zapnutá vlastnost „Zakázat historii“, historie se nezapíše tak jako tak.

Co zápis přes MCP server neudělá

Záznam se ukládá přímo, bez ukládacích skriptů editačního formuláře. Neproběhne tedy ani „OnBeforeSave“, ani „OnAfterSave“ a s nimi ani validace, přepočty, notifikace a změny stavů, které na nich stojí – záznam vznikne, ale navazující procesní logika ne.

Rozhoduje tedy povaha dat, ne prostředí: tam, kde na uložení záznamu visí procesní logika, patří zápis do formuláře, a to i ve vývojové instanci. Kde nevisí, lze přes MCP server zapisovat i v provozu – se zapnutou historií, aby změna zůstala dohledatelná.

Jak agent mění model

Zápis modelu má tři kroky a agent je zvládne sám, přímo proti běžící instanci a bez jakýchkoli souborů na disku:

  1. Přečte si model – bez parametru dostane přehled aplikačních skupin, aplikací a editačních formulářů, s názvem aplikace pak její detailní inventář. Celý model najednou server nikdy nevrací, protože je příliš velký, takže se skládá po aplikacích.
  2. Složí změny do tří polí – co se má založit, co změnit a co smazat. Každá položka nese druh entity, její identifikátor a seznam nastavovaných vlastností; nově zakládaná entita dostane dočasný identifikátor, na který se ostatní položky odkazují a který server při zápisu nahradí skutečným.
  3. Odešle je nástrojem „write_model“. Pole se zpracují v pořadí založení, změna, smazání a zápis se zastaví na první položce, která selže – chyba pak nese počet už zapsaných položek i mapu dočasných identifikátorů, takže agent pošle jen zbytek a nezaloží nic dvakrát.

Zakládat lze aplikační skupiny, aplikace, kategorie, editační formuláře, nahlížecí stránky, ovládací prvky obojího, databázové dotazy, skripty i uživatelské skupiny a skupiny oprávnění. Co model obsahuje a jak ho agent čte, popisuje text AI model implementace.

Obrázky vložené do textu prvku RichText server vydává jako zástupný text „Obrázek: odstraněn (base64)“ v dvojitých hranatých závorkách, aby o ně odpověď nenarostla o stovky kilobajtů. Při zápisu je nahradí zpátky obrázky z uložené hodnoty v pořadí, ve kterém v textu stojí, takže text okolo obrázků lze měnit, aniž by se obrázky posílaly s ním; nesouhlasí-li počet zástupných textů s počtem obrázků, zápis skončí chybou a hodnota zůstane beze změny.

Bezpečnost

  • Každý požadavek přes MCP server se přihlašuje jako vlastník tokenu – podléhá tedy povoleným IP adresám v nastavení NET Genia i licencím, stejně jako běžné přihlášení.
  • Oprávnění se ověřují při každém přístupu – ztratí-li vlastník tokenu administrátorská práva, přístup k datům okamžitě končí.
  • Je-li v Nastavení NET Genia vyplněný seznam uživatelů s přístupem k MCP serveru, projde jen vestavěný účet Administrator a uživatelé v seznamu – odebrání ze seznamu ukončí přístup okamžitě, bez nutnosti mazat token.
  • Server je chráněn proti hádání tokenů – opakované požadavky s neplatným tokenem jsou zpomalovány.
  • Oprávnění zápisu umožňuje měnit libovolná data instance, ne jen vybranou tabulku nebo vlastní záznamy – zapínejte ho proto uvážlivě a jen těm, kdo ho potřebují.

Typické využití

  • dotazy nad daty v přirozeném jazyce – „najdi zakázky bez odpovědné osoby“, „kolik faktur měsíčně přibývá“,
  • kontroly konzistence a souhrnné analýzy dat napříč aplikacemi,
  • čtení historie změn při dohledávání, kdy a jak se záznam změnil,
  • orientace v implementaci – jak je aplikace postavená a které tabulky a sloupce k ní patří,
  • analýza výkonu – které stránky, dotazy a skripty trvají nejdéle a nad jak velkými tabulkami běží,
  • ověření, jak se daná věc ve frameworku NET Genium správně dělá, ještě před samotným návrhem,
  • autentizace uživatelů vůči vlastnímu API v zákaznických projektech.

Na tento server přirozeně navazuje agentní vývoj – agent, který si znalosti frameworku i model implementace vyžádá přímo z instance, dokáže pracovat i s reálným obsahem aplikací.