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í – znalosti o frameworku NET Genium, model dané implementace a data jejích aplikací. 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 nástroje jako Claude Code, Codex nebo Microsoft 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 osobním MCP tokenem. Postup nastavení popisuje samostatný text Připojení AI nástroje k MCP serveru.

Co server umí

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

  • 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.
  • 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 tentýž AI model, který si lze z NET Genia stáhnout, jen ho asistent dostává přímo ze serveru a vždy v aktuální podobě.
  • 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.
  • Č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.
  • 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ů. Je to tatáž cesta, kterou model nahrává utilita popsaná v příručce AI modely, takže agent připojený k instanci dokáže aplikaci nejen popsat, ale i postavit a dál upravovat. Samostatnou operací je přejmenování stavebního prvku, které mění pouze zobrazovaný název, nikdy identifikátor.

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ů, poté ho lze jedním kliknutím prodloužit,
  • každý uživatel má nejvýše jeden token a může ho kdykoli smazat.

Oprávnění tokenu určují, které nástroje pro práci s daty jsou klientovi dostupné:

Čtení všech dat přes MCP server čtecí nástroje jen uživatelé s administrátorskými právy
Zápis všech dat přes MCP server zapisovací nástroje 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

Znalosti frameworku a model implementace 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 dat. Jde o tytéž podklady, které si administrátor může z NET Genia i stáhnout, takže o rozšíření oprávnění nejde.

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

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, bez staženého modelu a bez jakéhokoli nástroje 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í. Je to tatáž cesta, kterou model nahrává utilita popsaná v příručce AI modely – obě rozhraní tedy zapisují stejně.

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čí.
  • 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í.