Podrobný pohled na MCP, část 1: Co je to vlastně MCP?

Pokud sledujete AI, téměř jistě jste už slyšeli o protokolu Model Context Protocol (MCP). Od té doby, co společnost Anthropic v listopadu 2024 oznámila tento nový standard, jeho popularita prudce vzrostla. Existují MCP pro odesílání e-mailů, MCP pro vyhledávání na webu, MCP, které spouštějí jiné MCP. MCP umožňují skromným LLM provádět žádosti o stažení a rezervace letenek. V květnu společnost Microsoft dokonce oznámila zavedení registru MCP pro Windows, který umožňuje aplikacím zpřístupnit funkce agentům AI

Úžasné! Ale jak? Co je MCP? Jak se to používá? Proč se stal mnohem populárnějším než předchozí pokusy? Jak umožňuje chatbotům provádět akce v reálném světě? A jak si můžete postavit svůj vlastní?

Když jsme se rozhodli vybudovat vlastní server MCP pro DeepL API, zdálo se to být zastrašující. Ale jakmile skutečně pochopíte, jak MCP fungují, jak MCP umožňují agentům objevovat a používat nástroje a jak můžete vytvořit základní MCP server pomocí 10 řádků kódu, už to není tak strašidelné. V této sérii příspěvků se pokusíme toto téma objasnit. Prozkoumáme:

  • co je MCP
  • jak používat MCP v AI klientovi
  • jak sestavit server MCP

Jdeme na to!

Co znamená MCP?

MCP je zkratka pro ModelContextProtocol(protokol kontextu modelu).

„Model“je model AI. Může se jednat o jakýkoli druh AI povrchu, ale obvykle je postaven na LLM. Zde to budeme označovat jako AI agent nebo AI asistent.

„Kontext“označuje prostředí, ve kterém AI agent působí. V AI často hovoříme o „kontextovém okně“, které odkazuje na veškerý kontext, který LLM zahrnuje při generování odpovědi na podnět – historii konverzace, systémový podnět a další. Aby MCP fungoval, poskytuje povrch AI podkladovému LLM dodatečný pokyn, který specifikuje, jaké nástroje může používat a jak je používat.

„Protokol“je soubor pravidel, která popisují způsob, jakým dvě entity komunikují v síti. Jedním z protokolů, který používáte každý den, je HTTP (HyperText Transfer Protocol), který řídí komunikaci mezi webovým serverem a webovým klientem.

Shrnutí: „Model Context Protocol“ je protokol, který poskytuje kontext, který umožňuje modelům AI využívat externí nástroje a zdroje.

MCP je otevřený standard vynalezený dvou inženýrů společnosti Anthropic. Používá JSON-RPC, populární protokol pro definování volání funkcí. A je inspirován Jazyk Server Protocol, který vytvořila společnost Microsoft za účelem oddělení logiky zpracování jazyků kódovacích jazyků od integrovaných vývojových prostředí (IDE).

MCP není software, aplikace ani API. Ale dává agentům AI přístup ke všem těmto informacím!

Co dělá MCP?

LLM mohou poskytovat inteligentní a užitečné odpovědi na vstupy uživatelů. Nemají však přístup k externím službám, nemohou komunikovat s jiným softwarem a nemají možnost získávat aktuální informace. MCP dává jakémukoli povrchu AI schopnost odesílat požadavky na jakoukoli softwarovou službu a získávat odpovědi. Poskytuje agentovi AI standardní prostředky pro přístup k externím nástrojům, zdrojům a datům.

Bez MCP je AI klient jen mozkem bez těla, bez možnosti přístupu k vnějšímu světu. S MCP může být klient AI agentem!

Kdo může používat MCP?

Jelikož MCP je otevřený standard, může kdokoli implementovat klienta MCP nebo server MCP.

Klientem může být jakákoli aplikace založená na LLM. MCP můžete používat v aplikacích jako Claude Desktop, VSCode, Windsurf a Cursor. Nebo můžete použít MCP s AI agentem, který jste vytvořili pomocí frameworku jako LangChain nebo CrewAI.

Proč se MCP stalo tak populární?

Jedním z důvodů je, že se jedná o otevřený standard. MCP může implementovat jakýkoli agent AI, stejně jako jakýkoli nástroj. Díky tomu je atraktivnější než řešení pro produkty konkrétní společnosti, jako je například OpenAI. Function calling.

Při vytváření tohoto univerzálního řešení se tvůrci MCP inspirovali protokolem jazykového serveru (LSP). Před LSP, když IDE chtělo implementovat funkce jako automatické doplňování nebo zvýrazňování syntaxe pro daný jazyk, muselo provést vlastní integraci. Výsledkem bylo to, co tvůrci nedávno označili jako m × n problém, ve kterém lidé museli implementovat jazykové služby samostatně pro každou možnou kombinaci IDE/jazyk. S LSP potřebuje každý kódovací jazyk pouze jednu integrační knihovnu. A IDE, které podporuje LSP, může podpořit jakýkoli takový jazyk. Podobně, jakmile služba implementuje server MCP, může jej používat jakýkoli klient AI, který podpoří MCP. Klient potřebuje pouze podpořit MCP.

MCP je flexibilní i v jiných ohledech. Může běžet lokálně nebo přes síť. A pochází od společnosti Anthropic, která je velmi respektovaná a která by sdílela výhody otevřeného standardu.

Proč AIA agenti potřebují standardní protokol?

Vzhledem k tomu, že LLM jsou tak dobré v porozumění a aplikaci informací, nemohou již používat jakoukoli softwarovou službu, jejíž popis je obsažen v jejich tréninkových datech? Koneckonců, LLM již rozumí tomu, jak používat mnoho populárních API, jak zjistíte, pokud požádáte o pomoc asistenta pro kódování, jako je Copilot nebo Sourcegraph.

Ale pokud byste LLM poskytli přístup ke všem API v jeho tréninkových datech, nastal by chaos. Jak by vědělo, které API volat a kdy? Jak by získal váš API klíč a přihlašovací údaje a jak by používal služby, které vyžadují jiné druhy přístupu? Co kdybyste chtěli znát vzdálenost autem z Kansas City do Des Moines – nebo aktuální teplotu v Bangkoku? Existuje mnoho způsobů, jak tyto informace najít. Jako uživatel/ka chcete mít kontrolu nad akcemi, které váš LLM volí. To platí zejména v případě, kdy nejde o získávání informací, ale o provádění akcí, které mají dopad na okolní svět, jako je odeslání e-mailu nebo objednání pizzy.

Je pravda, že agent by mohl přečíst a porozumět specifikaci OpenAPI na nízké úrovni nebo celé dokumentaci API a poté provést odpovídající volání API. MCP však umožňuje tvůrcům nástrojů definovat Služby vyšší úrovně, které by byly obzvláště užitečné pro agenta AI, a nasměrovat tohoto agenta užitečným směrem. Zatím je to oblast, ve které lidé stále vynikají.

Ukázalo se tedy, že nejlepším řešením je prozatím explicitně definovat nástroje a zdroje, které může LLM používat, a způsob, jakým je může používat. MCP to dělá staromódním způsobem, deterministicky – ne tím, že by LLM dělalo své kouzla, ale prostřednictvím kódu a JSON.

Ale jak může LLM používat nástroje?

V zásadě je LLM stroj, který generuje tokeny – tokeny, se kterými se lidé setkávají v podobě textu, obrázků, zvuku atd. Jak tedy může takový stroj mít přístup k nástrojům a zdrojům? Jak ví, že má takový přístup, a jak ví, který z nich má použít?

Klíčové je, že, jak Maximilian Schwarzmüller, LLM mohou komunikovat s vnějším světem pouze pomocí tokenů. Jako vstup přijímají tokeny a jako výstup produkují tokeny. A tyto tokeny mohou zahrnovat entity, které znamenají „Chci použít nástroj“. Aby tedy LLM naznačil, že chce použít nástroj nebo zdroj, a aby jej skutečně použil, generuje standardní tokeny, které okolní software rozpozná jako volání nástroje a zachytí. Tento software poté volá službu a vrací výstup do LLM.

LLM by zde mohl použít specializované tokeny. Obvykle však používá pouze specifické oddělovače a jazyk – tímto způsobem můžete tuto schopnost dodatečně implementovat do existujícího LLM pomocí jemného doladění. Můžete například použít počáteční a koncové tagy v hranatých závorkách, které obklopují JSON, jako v tomto vzorovém výstupu agenta:

Jistě! Můžu vám vytvořit novou tabulku. Počkejte...

[tool-start] { "tool": "spreadsheets", "action": "create" } [tool-end]

To je přesně to, co vědci udělali ve svém článku Toolformer z roku 2023, který, jak naznačuje název, ukázal, že „jazykové modely se mohou samy naučit používat nástroje” V této studii autoři generovali tréninková data, která zahrnovala textové reprezentace volání API a jejich výsledky. Díky doladění LLM pomocí těchto dodatečných dat vytvořili LLM, který by volal tyto API, aby generoval slibnou odpověď na výzvu.

Použili jednoduchý formát:

[název_funkce(data) → výsledek]

Například s vědomím, že LLM mají potíže s matematikou, poskytli nástroj Kalkulačka. Poté do tréninkových dat zahrnuli řetězce jako tento:

Z 1 400 účastníků jich 400 (nebo [Kalkulačka(400 / 1400) → 0,29] 29 %) prošlo testem.

a

Název pochází ze španělštiny slova „la tortuga“, což znamená [MT(„tortuga“) → želva] želva.

Díky doladění LLM pomocí těchto dat vytvořili LLM, který věděl, jak volat API, aby generoval nejslibnější odpověď na daný podnět.

Ale nemusíte LLM doladit, aby mohl používat nástroje. Ukázalo se, že vše, co potřebujete, je výzva. Tento článek ukazuje, jak naučit LLM používat nástroje pomocí JSON odděleného značkami [[qwen-tool-start]] a [[qwen-tool-end]], a to pouze zadáním příslušného příkazu. Můžete to vyzkoušet sami! Stačí navštívit svého oblíbeného chatbota a říct mu:

Gratulujeme! Nyní máte možnost použít nástroj pro násobení. Pokud potřebujete provést výpočet, stačí zadat následující syntaxi: 

[Matematika] { „arg1“: {hodnota}, „arg2“: {hodnota} } [/Math] 

kde samozřejmě každá {hodnota} představuje hodnotu, kterou chcete vynásobit. OK? 

Poté zadejte LLM matematický příklad a sledujte, jak věrně vygeneruje syntaxi, kterou jste zadali pro svůj matematický nástroj.

Moderní LLM stále používají nástroje téměř stejným způsobem. Například Anthropic popisuje zde způsob, jakým vytvářejí systémové výzvy pro Clauda, aby mohl používat nástroje v jejich API.

Jak LLM zpracovává výstup z nástroje?

Jak LLM přijímá výstup nástroje? Opět jde především o tokeny. Jakmile klient AI obdrží výstup z nástroje, předá jej zpět do LLM jako vstup, ale takovým způsobem, aby LLM věděl, že se jedná o výstup nástroje, nikoli vstup koncového uživatele.

Shrnutí

Shrnout, když LLM používá nástroj, dochází k následujícímu:

  • Typy uživatelů ve vstupu
  • LLM zpracovává tento vstup
  • Při generování výstupu se LLM „rozhodne“, že volání nástroje je nejlepším způsobem, jak výstup dokončit. To znamená, že vydává sadu tokenů, které byly trénovány tak, aby umožnily vyvolání nástroje.
  • Klient AI rozpozná tyto tokeny jako něco, co by mělo vyvolat nástroj, zachytí je, rozloží JSON na parametry a vše ostatní v požadavku a odešle je příslušnému nástroji.
  • Nástroj generuje výstup, který může, ale nemusí zahrnovat použití API. Vrátí to zpět AI klientovi, který to odešle LLM.
  • LLM zpracovává výstupy nástrojů
  • LLM používá tento výstup k pokračování ve vytváření odpovědi pro uživatele.

A to je můj rychlý přehled toho, co je MCP a jak je implementováno v LLM. V příštím příspěvku vám ukážu, jak používat MCP ve vašem vlastním AI klientovi!


O autorovi

Jako vývojářský evangelista DeepL pomáhá Ben Morss všem, kteří chtějí využívat DeepL API k přístupu k jeho špičkovým překladům založeným na AI. Dříve pracoval ve společnosti Google jako produktový manažer/ka pro Chrome a jako vývojářský advokát pro lepší web. Předtím pracoval jako softwarový inženýr v New York Times a AOL a kdysi byl i profesionálním hudebníkem. Získal bakalářský titul v oboru informatiky na Harvardově univerzitě a doktorát v oboru hudby na Kalifornské univerzitě v Davisu. Možná ho ještě najdete, jak hraje s kapelou Ancient Babies, analyzovat popové písně na Rock Theorya píše muzikál, který vlastně není o Stevu Jobsovi.

Share