EN

MCP server a Model Context Protocol — návod

Návod na Model Context Protocol (MCP): co je MCP server, nástroje, zdroje a prompty, vlastní server v Pythonu, připojení ke klientovi a časté chyby.

Co je Model Context Protocol

Model Context Protocol (MCP) je otevřený standard pro propojení AI asistentů s externími nástroji a daty. Klient (Claude Code, Claude Desktop, IDE, vlastní agent) se připojí k MCP serveru, zjistí, co server nabízí, a model pak tyto schopnosti volá. Jeden server tak slouží všem klientům, kteří protokol podporují. Pro širší koncepty vývoje AI viz Vývoj AI .

Kdy ho použít

  • Model má pracovat s vlastním systémem — databází, CMS, ticketovacím systémem, interním API
  • Stejnou integraci má používat víc klientů nebo agentů
  • Ladíte spojení mezi MCP klientem a serverem
  • Rozhodujete, zda má být nová schopnost nástroj, zdroj, nebo prompt

Architektura

  • Host — aplikace, ve které běží model (Claude Code, IDE, chatovací aplikace).
  • Klient — část hostu, která drží spojení s jedním serverem. Na každý server jeden klient.
  • Server — program, který nabízí schopnosti. Zprávy jsou JSON-RPC 2.0.

Server nabízí tři druhy schopností:

SchopnostKdo ji řídíK čemu jePříklad
Nástroje (tools)modelakce a dotazy s parametrycreate_issue, search_docs
Zdroje (resources)aplikace / uživatelobsah ke čtení, adresovaný URIfile:///README.md, db://orders/42
Prompty (prompts)uživatelpřipravené šablony zadání/review-pr

Klient může serveru naopak nabídnout sampling (server požádá o vygenerování textu modelem), roots (adresáře, se kterými smí pracovat) a elicitation (dotaz na uživatele).

Transporty

  • stdio — klient spustí server jako podproces a komunikuje přes standardní vstup a výstup. Pro lokální nástroje; žádná síť ani autentizace.
  • Streamable HTTP — server běží samostatně na URL a obslouží víc klientů. Pro vzdálené a sdílené servery; patří k němu autentizace (OAuth nebo token v hlavičce).

Starší transport HTTP+SSE je ve specifikaci nahrazen Streamable HTTP; u nových serverů ho nepoužívejte.

Vlastní MCP server v Pythonu

pip install "mcp[cli]"
# server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("demo")


@mcp.tool()
def add(a: int, b: int) -> int:
    """Sečte dvě celá čísla."""
    return a + b


@mcp.resource("note://{name}")
def note(name: str) -> str:
    """Vrátí poznámku podle názvu."""
    return f"Obsah poznámky {name}"


@mcp.prompt()
def review(code: str) -> str:
    """Zadání pro revizi kódu."""
    return f"Zkontroluj tento kód a vypiš chyby:\n\n{code}"


if __name__ == "__main__":
    mcp.run()  # výchozí transport: stdio

Typové anotace a docstring nejsou ozdoba: SDK z nich sestaví JSON schéma a popis nástroje, podle kterých se model rozhoduje, kdy a jak nástroj zavolat. Pro HTTP stačí mcp.run(transport="streamable-http").

Připojení ke klientovi

# Claude Code — lokální server přes stdio
claude mcp add demo -- python /abs/cesta/server.py

# Claude Code — vzdálený server přes HTTP
claude mcp add --transport http notes https://example.com/mcp

claude mcp list                 # připojené servery a jejich stav

Konfigurace sdílená s týmem patří do souboru .mcp.json v kořeni projektu:

{
  "mcpServers": {
    "demo": {
      "command": "python",
      "args": ["/abs/cesta/server.py"],
      "env": { "API_TOKEN": "${API_TOKEN}" }
    }
  }
}

Ladění

npx @modelcontextprotocol/inspector python server.py

MCP Inspector otevře webové rozhraní, kde jde vypsat nástroje, zdroje a prompty serveru a zavolat je ručně — bez modelu a bez klienta. Je to nejrychlejší způsob, jak zjistit, zda je chyba v serveru, nebo v konfiguraci klienta.

Přehled metod protokolu

OblastMetody
Životní cyklusinitialize, notifications/initialized, ping
Nástrojetools/list, tools/call, notifications/tools/list_changed
Zdrojeresources/list, resources/templates/list, resources/read, resources/subscribe, resources/unsubscribe, notifications/resources/updated, notifications/resources/list_changed
Promptyprompts/list, prompts/get, notifications/prompts/list_changed
Logovánílogging/setLevel, notifications/message
Schopnosti klientasampling/createMessage, roots/list, elicitation/create
Pomocnécompletion/complete, notifications/progress, notifications/cancelled

Spojení vždy začíná initialize: obě strany si vymění verzi protokolu a capabilities — seznam toho, co která podporuje. Metodu, kterou druhá strana neohlásila, nevolejte.

Časté chyby

ChybaProjevŘešení
print() ve stdio serveruKlient hlásí chybu parsování nebo se spojení rozpadne — stdout patří JSON-RPC zprávámLogovat na stderr nebo přes notifications/message
Relativní cesty v konfiguraciServer se nespustí, protože klient má jiný pracovní adresářAbsolutní cesty k interpretu i skriptu
Chybějící proměnné prostředíServer běží, ale volání API selhávajíPředat je v env konfigurace; klient shell profil nenačítá
Vágní popis nástrojeModel nástroj nevolá, nebo ho volá ve špatnou chvíliPopsat, co nástroj dělá, kdy ho použít a co vrací
Desítky nástrojů na jednom serveruPopisy zaplní kontext a model si mezi nimi vybírá hůřMéně nástrojů s jasným účelem, servery dělit podle domény
Obří výstup nástrojeKontext se zaplní jedním volánímStránkovat, filtrovat a vracet jen potřebná pole
Vzdálený server bez autentizaceKdokoli s URL může volat nástrojeOAuth nebo token, nejmenší nutná oprávnění
Důvěra ve výstup nástrojeText z webu nebo ticketu obsahuje instrukce, které model provedeBrát výstup jako data, viz Útoky na LLM

Časté otázky

Co je MCP?

MCP (Model Context Protocol) je otevřený protokol, kterým se AI asistent připojuje k externím nástrojům a datům. Místo zvláštní integrace pro každou aplikaci stačí jeden MCP server, který umí použít každý klient s podporou MCP.

Co je MCP server?

MCP server je program, který přes protokol nabízí nástroje (funkce, které model může zavolat), zdroje (data ke čtení) a prompty (připravené šablony). Běží buď lokálně jako podproces klienta, nebo vzdáleně přes HTTP.

Jaký je rozdíl mezi MCP a běžným REST API?

REST API je psané pro programátora, který zná jeho dokumentaci. MCP server své schopnosti popisuje strojově — názvem, popisem a JSON schématem vstupu — takže je model objeví přes tools/list a zavolá sám. MCP server bývá tenká vrstva nad existujícím API.

Jaký je rozdíl mezi nástrojem a zdrojem v MCP?

Nástroj (tool) je akce, kterou volá model a která může něco změnit: vytvořit ticket, spustit dotaz. Zdroj (resource) je obsah určený ke čtení a identifikovaný URI, který do kontextu obvykle vybírá aplikace nebo uživatel.

Je MCP bezpečný?

Protokol sám bezpečnost neřeší za vás. Server běží s oprávněními, která mu dáte, a výstup nástroje může obsahovat podvržené instrukce. Připojujte jen servery, kterým věříte, dávejte jim nejmenší nutná oprávnění a vzdálené servery chraňte autentizací.