MCP servery — praktický průvodce pro vývojáře
MCP (Model Context Protocol) je otevřený protokol od Anthropic, který dává AI modelům přístup k tvým nástrojům a datům. Jak funguje a jak napsat vlastní server?
MCP (Model Context Protocol) je otevřený protokol od Anthropic, který umožňuje AI modelům jako Claude přistupovat k externím nástrojům, souborům a API. Místo aby Claude znal jen text konverzace, může přes MCP server číst soubory, volat databáze nebo ovládat aplikace.
Jak MCP funguje
Klasický AI asistent dostane prompt → vrátí text. MCP přidává třetí vrstvu: nástroje.
Claude ←→ MCP server ←→ tvé nástroje (soubory, API, databáze)
Vývojář napíše MCP server, který definuje sadu nástrojů. Claude pak může tyto nástroje volat — čte výsledky a pokračuje v odpovědi na jejich základě.
Protokol je otevřený, funguje s Claude, ale i s jinými modely.
Kdy MCP použít
- Chceš, aby Claude četl soubory z tvého počítače
- Potřebuješ propojit Claude s interní databází nebo API
- Buduješ AI agenta, který má provádět akce (ne jen generovat text)
- Chceš rozšířit Claude Desktop o vlastní schopnosti
Instalace a rychlý start
git clone https://github.com/aidevelopers-cz/mcp-server-example
cd mcp-server-example
npm install
npm start
Server se spustí a čeká na připojení přes stdio.
Připojení do Claude Desktop
Uprav soubor ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"muj-server": {
"command": "node",
"args": ["/cesta/k/mcp-server-example/node_modules/.bin/tsx",
"/cesta/k/mcp-server-example/src/index.ts"]
}
}
}
Restartuj Claude Desktop — server se automaticky připojí a Claude bude mít přístup ke všem definovaným nástrojům.
Jak napsat vlastní MCP server
MCP server v TypeScriptu se skládá ze tří částí: inicializace serveru, definice nástrojů a jejich implementace.
1. Instalace závislostí
npm install @modelcontextprotocol/sdk tsx
2. Definice nástrojů
import { Server } from '@modelcontextprotocol/sdk/server/index.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
import {
ListToolsRequestSchema,
CallToolRequestSchema,
} from '@modelcontextprotocol/sdk/types.js'
const server = new Server(
{ name: 'muj-server', version: '1.0.0' },
{ capabilities: { tools: {} } }
)
// Definuj dostupné nástroje
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
{
name: 'nacti_soubor',
description: 'Přečte obsah lokálního souboru',
inputSchema: {
type: 'object',
properties: {
cesta: { type: 'string', description: 'Cesta k souboru' }
},
required: ['cesta']
}
}
]
}))
3. Implementace nástrojů
import { readFileSync } from 'fs'
server.setRequestHandler(CallToolRequestSchema, async (req) => {
if (req.params.name === 'nacti_soubor') {
const cesta = req.params.arguments?.cesta as string
const obsah = readFileSync(cesta, 'utf-8')
return {
content: [{ type: 'text', text: obsah }]
}
}
throw new Error(`Neznámý nástroj: ${req.params.name}`)
})
// Spuštění přes stdio
const transport = new StdioServerTransport()
await server.connect(transport)
Kompletní příklad — weather nástroj
server.setRequestHandler(CallToolRequestSchema, async (req) => {
if (req.params.name === 'pocasi') {
const mesto = req.params.arguments?.mesto as string
const res = await fetch(`https://wttr.in/${mesto}?format=3`)
const text = await res.text()
return { content: [{ type: 'text', text }] }
}
})
Po restartu Claude Desktopu se Clauda zeptáš "jaké bude počasí v Praze?" a on zavolá tvůj nástroj.
Funkční ukázka na GitHubu
Open-source MCP server s hotovými nástroji (čtení souborů, výpis adresáře, načítání URL, počasí): mcp-server-example