Model Context Protocol (MCP)

MCP (Model Context Protocol) je otvorený protokol, ktorý štandardizuje, ako aplikácie poskytujú kontext a nástroje (tools) veľkým jazykovým modelom (LLM). Často sa vysvetľuje analógiou „USB-C portu pre AI aplikácie“: rovnaké „rozhranie“ umožní pripojiť model k rôznym zdrojom dát a službám bez toho, aby si pre každý model a každú službu písal úplne inú integráciu.


1. Čo je na MCP podstatné

  • Štandardné role v
    • Host = aplikácia, v ktorej model „žije“ (napr. chat/agent/IDE).
    • Client = komponent v hostovi, ktorý sa pripája na MCP servery.
    • Server = proces/služba, ktorá modelu sprístupní nástroje a dáta cez MCP.
  • Tri „typy schopností“, ktoré server typicky poskytuje:
    • Tools (spustiteľné funkcie – napr. query do DB, volanie API).
    • Resources (dáta na čítanie – súbory, záznamy, odpovede API).
    • Prompts (predpripravené šablóny/kontextové „návody“ pre model).
  • Prenos (transport) je definovaný a interoperabilný:
    • stdio (lokálny subprocess – jednoduché a bezpečnejšie pre lokálne nástroje).
    • Streamable HTTP (server ako samostatná služba; cez HTTP, voliteľne so streamovaním cez SSE).
  • Bezpečnosť nie je „doplnok“, je súčasť špecifikácie:
    • Pri HTTP transporte je explicitne požadované napr. overovanie Origin hlavičky (kvôli DNS rebinding), odporúčanie bindovať lokálne na 127.0.0.1 a mať autentifikáciu.
    • Autorizácia je špecifikovaná cez OAuth 2.1 (kde to dáva zmysel – najmä pri vzdialených serveroch).
  • Ecosystem efekt:
    • Existuje MCP Registry so zoznamom publikovaných serverov a repo so „reference“ servermi + SDK pre viac jazykov (C#, Go, Java, Kotlin, PHP, Python, Ruby, Rust, Swift, TypeScript…).
    • MCP už podporujú aj iné ekosystémy (napr. OpenAI Agents SDK a LangChain adaptéry).

2. Ako MCP funguje (prakticky)

  1. Host (napr. agent) obsahuje MCP klienta.
  2. Klient sa pripojí k jednému alebo viacerým MCP serverom (lokálne cez stdio, alebo cez HTTP).
  3. Prebehne inicializácia + dohodnú sa schopnosti (capabilities).
  4. Klient si vie vyžiadať zo servera zoznam tools/resources/prompts.
  5. Keď model potrebuje niečo spraviť (napr. „zisti stav repozitára“), host vykoná tool call cez MCP klienta na daný server, zoberie výsledok a použije ho v ďalšom rozmýšľaní/odpovedi.

Dôležitý detail: MCP správy sú kódované cez JSON-RPC (UTF-8).


3. Technické detaily, ktoré sa v praxi riešia najčastejšie

  • stdio transport (lokálne nástroje)
    • Klient spúšťa server ako subprocess.
    • Komunikácia ide cez stdin/stdout, správy sú oddelené novým riadkom a nesmú obsahovať embedded newlines.
    • stderr je na logovanie; klient ho môže ignorovať alebo zbierať.
  • Streamable HTTP transport (lokálne aj remote servery)
    • Server má jeden MCP endpoint (napr. /mcp) pre POST aj GET.
    • Klient posiela každú JSON-RPC správu ako samostatný HTTP POST a uvádza Accept: application/json, text/event-stream.
    • Server môže odpovedať buď jednorazovo (application/json), alebo streamovať cez SSE (text/event-stream).
  • HTTP bezpečnostné minimum
    • Servery MUSIA validovať Origin (ochrana pred DNS rebinding).
    • Pri lokálnom behu sa odporúča bind iba na 127.0.0.1.
    • A odporúča sa mať autentifikáciu pre všetky spojenia.
  • Autorizácia (OAuth 2.1)
    • MCP špecifikácia popisuje OAuth 2.1 flow-y a bezpečnostné očakávania.
    • Tokeny sa majú posielať cez Authorization: Bearer ... (nie do URL query/fragmentu).

4. Dostupnosť a ekosystém

  • Špecifikácia a dokumentácia: je udržiavaná ako otvorený projekt (repo + docs). Autori pôvodného MCP sú uvedení v hlavnom repozitári.
  • Registry serverov: ak hľadáš hotové servery, odporúča sa ísť cez MCP Registry; GitHub repo so servermi je primárne „reference“ (edukačné), nie automaticky production-ready.
  • Integrácie v praxi:
    • OpenAI Agents SDK vie pracovať s viacerými MCP transportmi (vrátane Streamable HTTP a stdio) a rieši aj schvaľovacie (approval) flow-y pri tool volaniach.
    • LangChain má adaptéry, ktoré načítajú tools z MCP serverov do LangChain agentov.

5. Ceny / licencie

  • MCP špecifikácia (repo) je licencovaná pod MIT.
  • Repo MCP serversApache 2.0 pre nové príspevky (s existujúcim kódom pod MIT – podľa LICENSE).
  • MCP ako protokol nemá „licenčný poplatok“ – náklady v praxi sú v prevádzke serverov, infraštruktúre a v samotnom LLM/API.

6. Bezpečnosť a súkromie (praktické rady)

  • Najväčšie riziko MCP je, že “tools sú kód” – lokálne servery môžu spúšťať príkazy, čítať súbory, volať API. Preto:
    • používaj iba servery, ktorým dôveruješ,
    • ideálne ich spúšťaj v sandboxe/containery,
    • minimalizuj oprávnenia (least privilege).
  • Supply-chain + „tool injection“ scenáre:
    • aj legit server sa môže zmeniť aktualizáciou (alebo byť vydaný škodlivý „klon“), preto dávajú zmysel opatrenia ako pin verzií, kontrola zmien, audit závislostí.
    • v praxi už boli popísané prípady škodlivých MCP serverov zamerané na krádež dát (napr. exfiltrácia emailov).
  • OAuth „confused deputy“ (ak robíš proxy server na 3rd-party API):
    • špecifikácia bezpečnostných best-practices popisuje konkrétny útokový vzor a požaduje per-client consent a tvrdé validácie (redirect_uri, state, CSRF ochrany…).

7. Praktické použitia (kedy MCP dáva najväčší zmysel)

  • „Agent v IDE“: jeden MCP server na Git, druhý na filesystem, tretí na issue tracker → model vie robiť zmysluplné akcie bez custom integrácie pre každý nástroj zvlášť. (Reference príklady sú aj v server repo.)
  • RAG bez lepenia konektorov: namiesto toho, aby si každú znalostnú bázu pripájal ručne, vystavíš ju ako MCP resource + doplníš tool na „query“.
  • Zdieľateľné integrácie: keď raz spravíš MCP server pre interný systém (CRM, sklad, fakturácia), vieš ho použiť v rôznych hostoch (Claude Desktop, LangChain agent, OpenAI agent…).

Quick Reference

Parameter Hodnota Poznámka
Účel Štandardný prístup LLM k tools + kontextu „USB-C pre AI aplikácie“
Kódovanie správ JSON-RPC (UTF-8) Protokolové správy
Transporty stdio, streamable-http 2 štandardné transporty
stdio subprocess + stdin/stdout Správy bez embedded newlines
Streamable HTTP POST/GET + voliteľne SSE 1 endpoint, streamovanie možné
HTTP security minimum validovať Origin, bind localhost, auth proti DNS rebinding
Autorizácia OAuth 2.1 tokeny cez Authorization: Bearer
Ecosystem Registry + SDK v mnohých jazykoch + warning: reference ≠ produkcia

Zhrnutie

  • MCP rieši „večný problém“ integrácií: jeden štandard na pripájanie modelov k nástrojom a dátam (tools/resources/prompts) naprieč aplikáciami.
  • V praxi najviac rozhodujú transport + bezpečnosť: lokálne stdio je jednoduché, HTTP je flexibilné, ale vyžaduje disciplínu (Origin, auth, sandbox, least-privilege).
  • Ekosystém rastie (Registry, SDK, integrácie v agent frameworkoch), ale platí: MCP server je spustiteľný kód → vyberaj zdroje a verzie opatrne.