Přeskočit na obsah
Zpět na poznámky
6. června 20265 min čtení

Custom MCP servery — jak naučit AI rozumět vašemu vlastnímu softwaru

Co je MCP server srozumitelně, proč se custom server vyplatí víc než generické promptování a jak nastavit hranice, aby měl coding agent deterministický a bezpečný přístup k vašemu systému.

MCPcontext engineeringAIdeveloper experienceguardrails

Když dnes nasazuju AI do vývojářského workflow, nejčastější bariéra není model. Je to kontext. Coding agent zná veřejný internet do data tréninku, ale nezná váš interní systém — vaše API, vaše datové modely, vaše business pravidla. Generickým promptováním to lepíte ručně, znova a znova, a stejně se trefíte z poloviny. Tady přichází na řadu MCP server.

V tomhle textu vysvětluju, co MCP server je, proč se vyplatí postavit si vlastní místo spoléhání na prompt, a hlavně kde jsou hranice — co AI dělat smí a co ne.

Co je MCP server, bez hype

MCP (Model Context Protocol) je standardizovaný protokol, kterým se coding agent připojí k externímu zdroji. Berte to jako most mezi AI a vaším systémem — vaším API, databází, interní dokumentací, deploy pipeline.

Místo aby AI hádala, jak vaše aplikace funguje, dostane jasně definovanou sadu nástrojů (tools): „tohle umíš zavolat, tady jsou parametry, tohle dostaneš zpátky“. Žádná magie. Je to RPC vrstva s popisem, kterému model rozumí.

Důležité je, co MCP server není: není to model, není to „agent“, není to náhrada za vaši logiku. Je to adaptér. Veškerá chytrost zůstává tam, kde byla — ve vašem kódu a ve vašem návrhu nástrojů.

Proč custom server poráží generické promptování

Generický prompt typu „naše API má endpoint /orders, vrací JSON s poli...“ má tři problémy. Je křehký (formát se rozjede), je drahý na tokeny (kontext nacpaný popisem) a hlavně je nedeterministický — AI si to interpretuje pokaždé trochu jinak.

Custom MCP server tohle řeší tím, že dává AI deterministický, bezpečný přístup k vašemu kontextu:

  • Determinismus — nástroj get_order(id) vrátí strukturovaná data ve stejném tvaru pokaždé. Model nehádá schéma, dostane ho.
  • Bezpečnost — vy definujete, co je vystavené. AI nevidí celou databázi, vidí jen to, co jste jí dali jako tool.
  • Úspora kontextu — popis nástroje je krátký a jednoznačný. Nemusíte do každého promptu lepit dokumentaci.
  • Auditovatelnost — každé volání projde vaším serverem, takže ho můžete logovat, omezovat a kontrolovat.

V praxi dělám to, že business znalost, kterou bych jinak opakoval v promptu, zapouzdřím jednou do nástroje. Tím se z software engineeringu posouvám do context engineeringu — práce není napsat víc kódu, ale dát AI správně tvarovaný, ohraničený kontext.

Konkrétní use-cases

Kde se mi custom MCP server reálně vyplatí:

  • Ovládání vlastních aplikací — AI umí spustit deploy, založit feature flag nebo vyčíst stav prostředí přes nástroje, které jste schválili. Ne přes shell, kde může cokoliv.
  • Rychlejší změny — když agent ví, jak vypadají vaše entity a jak se validují, generuje úpravy, které sednou napoprvé. Méně kol revize.
  • Čtení interních zdrojů — interní wiki, ADR záznamy, schéma databáze, runbooky. AI dostane odpověď z vašeho zdroje pravdy, ne ze své paměti.

Společný jmenovatel: AI přestává hádat a začíná pracovat s vaším skutečným systémem.

Jak vypadá definice nástroje

Tady je ilustrativní (generická, ne z reálného produktu) definice jednoho read-only nástroje. Záměrně jednoduchá:

tool:
  name: get_order_status
  description: Vrátí aktuální stav objednávky podle ID. Read-only.
  input:
    order_id:
      type: string
      required: true
  returns:
    status: enum[new, paid, shipped, cancelled]
    updated_at: datetime
  permissions:
    scope: read
    rate_limit: 60/min

Klíčové je, že nástroj má úzký kontrakt: jeden účel, jasné vstupy, jasné výstupy, explicitní oprávnění. Žádné generické run_query(sql), kterým by AI mohla sáhnout kamkoliv.

Bezpečnost a hranice — co AI nesmí

Tohle je část, kterou nepřeskakujte. MCP server dává AI ruce ve vašem systému, takže hranice (guardrails) jsou součást návrhu, ne dodatek.

Moje pravidla, kterých se držím:

  • Default je read-only. Zápisové a destruktivní operace jsou samostatné nástroje s explicitním schválením, ideálně s human-in-the-loop potvrzením.
  • Žádné generické „spusť cokoliv“. Nevystavujte raw SQL, raw shell ani volný HTTP. Každá schopnost je pojmenovaný nástroj s úzkým kontraktem.
  • Princip nejmenšího oprávnění. Server běží pod identitou, která vidí jen to, co opravdu potřebuje. Ne pod admin tokenem.
  • Logujte a rate-limitujte. Každé volání auditovatelné. Když se něco zvrtne, chcete vědět co a kdy.
  • Citlivá data nepouštějte ven. Server je místo, kde maskujete PII a tajemství dřív, než se dostanou do kontextu modelu.

Cíl je jednoduchý heslem: deterministicky, rychle, bezpečně. Determinismus dává tvar, rychlost přichází z toho, že AI nehádá, a bezpečnost z toho, že hranice jsou tvrdě v kódu serveru — ne v naději, že prompt model udrží.

Pokud řešíte regulaci, tohle není navíc: auditovatelnost volání a omezení rozsahu jsou přesně to, co se vám hodí při argumentaci kolem EU AI Act i při interním compliance.

Závěrem

Custom MCP server není módní vlna. Je to praktická vrstva, která mění AI z chytrého hádače na nástroj s deterministickým, ohraničeným přístupem k vašemu systému. Nemusíte stavět deset serverů hned — začněte jedním read-only nástrojem nad zdrojem, který vaši lidé nejčastěji potřebují, a hranice si pohlídejte od prvního commitu. Vyplatí se víc investovat do návrhu nástrojů a guardrailů než do delších promptů. Tam je ta skutečná práce context engineeringu.