Představte si Model Context Protocol jako univerzální adaptér nebo překladač pro umělou inteligenci. Dnes musí vývojáři složitě propojovat každý AI model s každou aplikací zvlášť, což je neefektivní. MCP vytváří společný jazyk, kterému všechny zapojené systémy rozumí. Díky tomu se může jakýkoli AI model snadno „domluvit“ s různými nástroji, například aby získal data z firemní databáze nebo poslal zprávu do chatu, aniž by pro to pokaždé potřeboval řešení na míru.
Model Context Protocol (MCP) je otevřený standard navržený pro sjednocení komunikace mezi generativními AI modely a externími zdroji, jako jsou databáze, API nebo jiné softwarové nástroje. Protokol funguje na principu klient-server, kde AI model (klient) může standardizovaným způsobem objevovat a volat funkce poskytované externím serverem. Cílem MCP je eliminovat potřebu vytvářet specifické integrace pro každou kombinaci modelu a nástroje, čímž podporuje interoperabilitu a umožňuje vývoj komplexnějších a schopnějších AI agentů.
Model Context Protocol (MCP) je otevřený standard, který sjednocuje způsob, jakým umělá inteligence komunikuje s externími nástroji a daty. Představte si ho jako USB-C port pro AI: místo toho, aby bylo nutné pro každý AI model a každou aplikaci (např. kalendář, databázi, interní firemní systém) vytvářet unikátní propojení, MCP poskytuje univerzální rozhraní. To umožňuje jakémukoli kompatibilnímu AI modelu snadno a bezpečně „mluvit“ s jakýmkoli nástrojem, který MCP také podporuje.
Cílem je zjednodušit vývojářům práci a umožnit tvorbu komplexnějších a schopnějších AI asistentů a agentů, kteří dokážou pracovat s aktuálními daty a vykonávat úkoly ve vašich aplikacích.
Jak MCP funguje
Protokol funguje na architektuře klient-server:
- MCP Server: Je to malý program, který funguje jako „překladatel“ pro konkrétní aplikaci nebo datový zdroj (např. GitHub, Slack, databáze). Zpřístupňuje funkce tohoto nástroje (např. „přečti poslední zprávy“, „vytvoř nový úkol“) a data (např. „seznam souborů v projektu“) ve standardizovaném MCP formátu.
- MCP Klient: Je součástí AI aplikace (např. desktopového chatbota jako je Claude, nebo vývojového prostředí). Klient komunikuje se serverem, zjišťuje, jaké nástroje a data server nabízí, a posílá mu požadavky jménem AI modelu.
Když se uživatel zeptá AI na něco, co vyžaduje externí data (např. „Jaké mám dnes schůzky?“), AI aplikace (klient) pošle standardizovaný dotaz na MCP server kalendáře. Server provede akci, vrátí data ve standardizovaném formátu a AI model je pak použije k vygenerování odpovědi.
Ukázka kódu
Následující zjednodušený příklad v Pythonu ukazuje, jak vytvořit jednoduchý MCP server, který AI modelu zpřístupní jeden nástroj: get_weather. Tento nástroj vrátí aktuální počasí pro zadané město. Kód využívá knihovnu FastMCP, která celý proces usnadňuje.
Nejprve je potřeba nainstalovat potřebné knihovny:
pip install "mcp[cli]" httpx
Kód serveru (weather_server.py) v Python
import httpx
from mcp.server.fastmcp import FastMCP
# 1. Inicializace MCP serveru s unikátním názvem
# Tento název bude server identifikovat v AI aplikacích.
mcp = FastMCP("weather_forecast_server")
# 2. Definice nástroje pomocí dekorátoru @mcp.tool()
# Dekorátor zajistí, že funkce bude dostupná jako nástroj přes MCP.
# Docstring (text v uvozovkách) je velmi důležitý – AI model z něj pochopí,
# co nástroj dělá a jaké parametry přijímá.
@mcp.tool()
async def get_weather(city: str) -> str:
"""
Fetches the current weather for a specified city.
:param city: The name of the city (e.g., 'Prague', 'London').
:return: A string describing the current weather conditions.
"""
try:
# Použití externího API (v tomto případě wttr.in) pro získání dat
async with httpx.AsyncClient() as client:
# ?format=3 je speciální formát pro stručný textový výstup
response = await client.get(f"https://wttr.in/{city}?format=3")
response.raise_for_status() # Zkontroluje, zda dotaz proběhl v pořádku
return response.text
except httpx.HTTPStatusError as e:
return f"Chyba při získávání dat o počasí pro město {city}: {e.response.status_code}"
except Exception as e:
return f"Nastala neočekávaná chyba: {str(e)}"
# Tento kód se spustí, pouze pokud je soubor spuštěn přímo.
# Umožňuje server spustit pro vývoj a testování.
if __name__ == "__main__":
mcp.run_dev()
Jak spustit a co se děje:
- Uložte kód jako
weather_server.py. - Spusťte server z terminálu příkazem:
python weather_server.py. - Server nyní běží a „poslouchá“ na lokálním portu. Jakákoli AI aplikace s MCP klientem (např. Claude Desktop) se na něj může připojit.
- Když se uživatel v propojené AI aplikaci zeptá „Jaké je počasí v Praze?“, AI model uvidí, že má k dispozici nástroj
get_weather. - Model „zavolá“ tento nástroj s parametrem
city='Prague'. - Náš server spustí funkci, pošle dotaz na
https://wttr.in/Prague?format=3, obdrží odpověď (např. „Praha: ☀️ +22°C“) a pošle ji zpět AI modelu. - AI model tuto informaci použije k formulaci finální odpovědi pro uživatele.