Model Context Protocol: propojení AI s reálným světem
Jedna techničtější vsuvka o tom, jak dovolit AI nástrojům přistupovat k vašemu webu standardizovaně. Myslím si, že na MCP budeme narážet čím dál častěji...
Představte si, že máte na stole deset různých zařízení - telefon, tablet, fotoaparát, powerbanku, sluchátka - a každé má jiný konektor. Jeden micro-USB, druhý Lightning, třetí USB-C, čtvrtý nějaký proprietární... Šílenství, že? Přesně takový chaos panoval do nedávna ve světě umělé inteligence, když se snažila komunikovat s externími systémy. Každý nástroj, každá služba, každá databáze potřebovala vlastní konektor.
Proč vůbec MCP vznikl?
Když se zamyslíte nad tím, jak dnes fungují AI asistenti, rychle zjistíte jeden zásadní problém: jsou to izolovaní géniové. Představte si, že máte úžasného kolegu, který zná odpovědi na většinu otázek, ale sedí zamčený v kanceláři bez internetu, telefonu či přístupu k firemním systémům. Přesně takový byl stav velkých jazykových modelů až donedávna.
Model Context Protocol (MCP) vznikl jako odpověď na to, co Anthropic nazývá „M×N problémem". Pokud máte M různých AI aplikací a N různých nástrojů nebo datových zdrojů, musíte teoreticky vytvořit M×N různých propojení. To znamená, že každý tým musel znovu a znovu vymýšlet kolo - psát vlastní konektory pro GitHub, vlastní pro Slack, vlastní pro databáze... Duplicitní práce na každém rohu.
Anthropic představil MCP v listopadu 2024 s jasným cílem: transformovat tento chaotický „M×N problém" na mnohem jednodušší „M+N problém". Místo tisíců různých propojení stačí vytvořit M klientů a N serverů, které spolu mluví jedním jazykem.
Jak MCP funguje - analogie s USB-C
Nejlepší analogii pro MCP najdete v USB-C. Stejně jako tento univerzální konektor umožňuje připojit jakékoli zařízení k jakémukoli periferii, tak i MCP poskytuje standardizovaný způsob, jak AI modely mohou komunikovat s vnějším světem.
Architektura MCP implementuje model klient-server, který možná znáte z webového vývoje. Máme zde tři hlavní aktéry:
MCP Host (hostitel) - to je aplikace, se kterou interagujete. Může to být Claude Desktop, nějaké IDE jako Cursor, nebo váš vlastní AI agent.
MCP Client (klient) - žije uvnitř hostitelské aplikace a spravuje připojení k MCP serverům. Udržuje vztah 1:1 s každým serverem.
MCP Server (server) - lehký program, který zpřístupňuje specifické schopnosti prostřednictvím standardizovaného protokolu.
Když se zamyslíte nad tím prakticky, funguje to takto: Spustíte Claude Desktop (Host), který vytvoří několik MCP klientů. Každý klient se připojí k jinému serveru - jeden třeba k vašemu GitHub účtu, druhý k Google Drive, třetí k firemní databázi. Všichni spolu mluví stejným jazykem - JSON-RPC 2.0.
Kdo stojí za MCP a kdo ho používá
Za vznikem MCP stojí Anthropic, společnost známá především díky Claude. Ale pozor - MCP není proprietární! Je to otevřený standard, což znamená, že ho může používat kdokoli, včetně konkurence.
A využívají ho! Mezi early adoptery patří impozantní seznam: Block (Square), Apollo, Zed, Replit, Codeium, Sourcegraph. Do února 2025 vzniklo přes 1000 open-source konektorů, což ukazuje, jak rychle komunita standard přijala.
Zajímavé je, že i OpenAI a Google DeepMind začaly MCP implementovat.
MCP má tři základní komponenty, které servery poskytují:
Tools (nástroje) - funkce, které LLM může volat pro konkrétní akce (třeba API pro počasí)
Resources (zdroje) - datové zdroje, ke kterým má LLM přístup (podobné GET endpointům v REST API)
Prompts (výzvy) - předpřipravené šablony pro optimální využití nástrojů a zdrojů
K čemu je vám MCP jako provozovateli webu
Teď se dostáváme k praktické otázce: proč by vás to mělo zajímat jako provozovatele webu? Odpověď je prostá - MCP otevírá dveře k tomu, aby se váš web stal chytřejším a více propojeným s AI ekosystémem.
Představte si, že provozujete e-shop. S MCP můžete vytvořit server, který AI asistentům poskytne:
Aktuální stav skladu prostřednictvím Resources
Možnost vytvořit objednávku prostřednictvím Tools
Optimalizované dotazy pro vyhledávání produktů prostřednictvím Prompts
Zákazník se pak může zeptat Claude: „Potřebuji něco na bolest hlavy, co máte skladem?" A Claude se přímo zeptá vašeho MCP serveru, získá aktuální data a může dokonce rovnou vytvořit objednávku.
Další praktické využití:
CMS systémy mohou nabídnout AI asistentům možnost číst a upravovat obsah
Analytické nástroje mohou poskytovat real-time data o návštěvnosti
Zákaznické podpory mohou integrovat AI s ticketing systémy
Vývojářské nástroje mohou umožnit AI práci s kódem a verzováním
Klíčová výhoda je standardizace. Místo vývoje vlastního API pro každý AI nástroj zvlášť vytvoříte jeden MCP server a všechny kompatibilní AI systémy ho mohou používat.
Praktická implementace MCP serveru
Teď si ukážeme, jak vypadá skutečná implementace s moderním přístupem. Začneme praktickým příkladem - MCP serverem pro základní operace s e-shopem. Použijeme nejnovější TypeScript SDK.
Nejdříve potřebujete vývojové prostředí. MCP má nové SDK, které velmi zjednodušuje vývoj:
npm install @modelcontextprotocol/sdk express zod
npm install --save-dev @types/express
Základní struktura MCP serveru
Největší změnou oproti starším přístupům je třída McpServer, která poskytuje elegantní, deklarativní API. Místo psaní nízkourovňových handlerů prostě definujete funkce:
import express from "express";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
import { z } from "zod";
const app = express();
app.use(express.json());
function createServer() {
const server = new McpServer({
name: "eshop-server",
version: "1.0.0"
});
// Zde budeme definovat naše nástroje...
return server;
}
Nepotřebujete se starat o JSON-RPC protokol, request/response objekty nebo error handling - SDK to všechno řeší za vás.
Definování nástrojů (Tools)
Nástroje v MCP jsou funkce, které AI může volat pro konkrétní akce. Nová syntax je docela intuitivní:
// Nástroj pro získání informací o produktu
server.tool(
"get_product_info",
{ product_id: z.string() },
async ({ product_id }) => {
const productInfo = await getProductFromDb(product_id);
return {
content: [{
type: "text",
text: `Produkt: ${productInfo.name}, Cena: ${productInfo.price} Kč, Skladem: ${productInfo.stock}`
}]
};
}
);
// Nástroj pro vytvoření objednávky s validací
server.tool(
"create_order",
{
product_id: z.string(),
quantity: z.number().int().positive()
},
async ({ product_id, quantity }) => {
const orderId = await createNewOrder(product_id, quantity);
return {
content: [{
type: "text",
text: `Objednávka ${orderId} byla úspěšně vytvořena`
}]
};
}
);
Místo psaní switch/case s parsováním argumentů prostě definujete Zod schéma a dostáváte typově bezpečné parametry. SDK automaticky validuje vstupy a generuje JSON schéma pro dokumentaci.
Zdroje (Resources) - statické i dynamické
Resources poskytují data AI systémům. Nové SDK rozlišuje mezi statickými a dynamickými zdroji:
// Statický zdroj pro kategorie
server.resource(
"categories",
"eshop://categories",
async (uri) => {
const categories = await getAllCategories();
const text = categories.map(cat => `- ${cat.name}: ${cat.description}`).join('\n');
return {
contents: [{
uri: uri.href,
text,
mimeType: "text/plain"
}]
};
}
);
Ještě zajímavější jsou dynamické zdroje s ResourceTemplate:
import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
// Dynamický zdroj s parametrem
server.resource(
"bestsellers",
new ResourceTemplate("eshop://bestsellers/{limit}", { list: undefined }),
async (uri, { limit }) => {
const numLimit = parseInt(limit) || 10;
const bestsellers = await getBestsellingProducts(numLimit);
const text = bestsellers.map((prod, i) =>
`${i+1}. ${prod.name} (${prod.sales} prodejů)`
).join('\n');
return {
contents: [{
uri: uri.href,
text,
mimeType: "text/plain"
}]
};
}
);
ResourceTemplate umožňuje parametrizované zdroje - AI může volat eshop://bestsellers/5
pro top 5 produktů nebo eshop://bestsellers/20
pro top 20.
Prompty - předpřipravené šablony
Prompty jsou nová funkce, která umožňuje poskytovat AI optimalizované šablony pro práci s vašimi nástroji:
server.prompt(
"product-search",
{ query: z.string() },
({ query }) => ({
messages: [{
role: "user",
content: {
type: "text",
text: `Pomoz mi najít produkty podle tohoto dotazu: "${query}". Použij nástroj get_product_info pro získání detailů a poskytni strukturovanou odpověď.`
}
}]
})
);
AI systém pak může použít tento prompt místo vymýšlení vlastního dotazu. Získáváte kontrolu nad tím, jak AI používá vaše nástroje.
Express integrace s StreamableHTTP
Moderní MCP používá HTTP transport místo dřívějšího STDIO nebo SSE, což umožňuje vzdálené připojení:
app.post('/mcp', async (req, res) => {
try {
const server = createServer();
const transport = new StreamableHTTPServerTransport({
sessionIdGenerator: undefined, // Stateless mode
});
// Cleanup při zavření připojení
res.on('close', () => {
transport.close();
server.close();
});
await server.connect(transport);
await transport.handleRequest(req, res, req.body);
} catch (error) {
console.error('Error handling MCP request:', error);
if (!res.headersSent) {
res.status(500).json({
jsonrpc: '2.0',
error: { code: -32603, message: 'Internal server error' },
id: null,
});
}
}
});
StreamableHTTPServerTransport automaticky řeší celou komunikaci - JSON-RPC protokol, error handling, streaming responses. Vy se soustředíte na business logiku.
Spuštění serveru
Alternativně jako http/sse služba s Express.js:
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`MCP Server běží na portu ${PORT}`);
console.log(`Endpoint: http://localhost:${PORT}/mcp`);
});
A to je všechno! Máte plně funkční MCP server s Express backendem, který může obsluhovat vzdálené AI klienty přes HTTP.
Testování
Teď máte funkční server, ale jak poznáte, že skutečně funguje? MCP Inspector je ideální nástroj.
Spuštění MCP Inspectoru
Inspector spustíte jedním příkazem přímo z terminálu:
npx @modelcontextprotocol/inspector http://localhost:3000/mcp
Pokud máte server na jiném portu nebo endpointu, prostě změníte URL. Inspector se otevře ve webovém prohlížeči a ukáže vám URL pro grafické rozhraní.
Co Inspector umí
Prohlížení nástrojů: Inspector vám ukáže všechny nástroje, které váš server nabízí, včetně jejich parametrů a popisů. Můžete si prohlédnout generované JSON schéma a vidět, jak bude vypadat dokumentace.
Testování tools: Kliknutím na nástroj otevřete formulář pro zadání parametrů. Zadáte třeba
product_id: "123"
a Inspector zavolá váš nástroj. Uvidíte request i response v reálném čase.Procházení resources: Inspector zobrazí všechny vaše zdroje. Kliknete na
eshop://categories
a okamžitě uvidíte data, která váš server vrací. U dynamických zdrojů můžete měnit parametry - třebaeshop://bestsellers/15
.Testování promptů: Můžete si vyzkoušet, jak vypadají vygenerované prompty s různými parametry. Ideální pro ladění formulací.
Bezpečnost a další praktické aspekty
MCP klade důraz na bezpečnost. Servery nevidí celou konverzaci ani do jiných serverů - získávají pouze nutné kontextové informace. Hostitelská aplikace (AI agent, Claude Desktop, …) funguje jako prostředník a kontroluje všechnu komunikaci.
Pro produkční nasazení zvažte samozřejmě:
Autentifikaci - implementujte API klíče nebo OAuth
Rate limiting - chraňte se před zneužitím
Logging - sledujte, kdo a jak váš server používá
Caching - optimalizujte výkon pro častá volání
Budoucnost…?
Model Context Protocol není jen další technický standard - je to paradigmatická změna ve způsobu, jak AI systémy komunikují s reálným světem. Místo izolovaných modelů získáváme propojené inteligence, které mohou pracovat s aktuálními daty a provádět skutečné akce.
Pro vás jako provozovatele webu to znamená příležitost být součástí AI ekosystému. Váš web nebo služba se může stát přirozenou součástí AI workflow uživatelů. Představte si, že místo návštěvy vašeho webu se uživatelé jednoduše zeptají AI asistenta, který jim poskytne aktuální informace a případně i provede transakci.
Kdybych byl ironický, tak poznamenám, že to mnohým způsobí břichabol, protože pokud uživatel místo návštěvy jejich webu získá informace jinak, oni přijdou o příjem, protože neumí monetizovat nic jiného, než uživatelovu pozornost reklamou.
MCP transformuje web z pasivního média, kde AI sbírá informace, na aktivního účastníka AI konverzací. A to je, myslím, budoucnost, na kterou se můžeme těšit.