- Published on
MCP (1. díl) - Jak funguje MCP server
Úvod
Model Context Protocol (MCP) je otevřený protokol, který definuje způsob, jak propojit různé aplikace s umělou inteligencí (např. ChatGPT, Claude apod.). S pomocí MCP serveru definujeme, jaké funkce budou přes protokol MCP dostupné, a umožníme tak MCP klientům (např. VS Code s Copilotem nebo Claude Desktop) tyto funkce využívat. Můžeme tak umožnit umělé inteligenci, aby například přímo komunikovala s naší databází, e-shopem, nebo ji můžeme nechat otestovat aplikaci přes Playwright.
Instalace
Nejprve si připravíme nový Node.js projekt:
mkdir greeting-machine
cd greeting-machine
npm init -y
npm install @modelcontextprotocol/sdk
MCP server
Vytvoříme soubor server.js, který námi definovaným nástrojem greet pozdraví uživatele:
import { Server } from '@modelcontextprotocol/sdk/server/index.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js'
// Vytvoření MCP serveru
const server = new Server(
{
name: 'greeting-machine',
version: '1.0.0',
},
{
capabilities: {
tools: {},
},
}
)
// Definice dostupných nástrojů
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
{
name: 'greet',
description: 'Greets a person with a friendly message.',
inputSchema: {
type: 'object',
properties: {
name: {
type: 'string',
description: 'Name of the person to greet.',
},
},
required: ['name'],
},
},
],
}))
// Zpracování volání nástrojů
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name: toolName, arguments: args } = request.params
if (toolName === 'greet') {
const personName = args.name
return {
content: [
{
type: 'text',
text: `Hi ${personName}! I am greeting you from the greeting-machine server!`,
},
],
}
}
throw new Error(`Unknown tool: ${toolName}`)
})
// Spuštění serveru
async function main() {
const transport = new StdioServerTransport()
await server.connect(transport)
console.error('MCP server běží...')
}
main().catch(console.error)
Definice našeho MCP serveru se skládá z několika částí:
Vytvoření serveru - Inicializujeme nový Server s názvem
greeting-machinea definujeme jeho schopnosti. V našem případě server podporuje nástroje (tools).Definice nástrojů - Pomocí
ListToolsRequestSchemahandleru říkáme MCP klientům, jaké nástroje dáváme k dispozici. Nástrojgreetočekává parametrnametypu string.Zpracování volání - Handler
CallToolRequestSchemazpracovává volání nástrojů. Když klient zavolá nástrojgreet, server vezme parametrnamea vrátí pozdrav ve správném formátu.Komunikace - Server používá
StdioServerTransportpro komunikaci přes standardní vstup a výstup (běžný způsob, jak MCP servery komunikují s klienty)
Struktura MCP odpovědi
Všechny nástroje v MCP protokolu vrací odpověď ve standardizovaném formátu:
{
"content": [
{
"type": "text",
"text": "Hi John Doe! I am greeting you from the greeting-machine server!"
}
]
}
Pole content může obsahovat více elementů různých typů (text, obrázky, atd.). V našem případě vracíme pouze jednoduchý textový obsah.
MCP klient
Jako MCP klienta můžeme použít například Claude Desktop. Do konfigurace Claude Desktop přidáme nový MCP server s názvem greeting-machine. Soubor je uložený zde: c:\Users\[jmeno_uzivatele]\AppData\Roaming\Claude\claude_desktop_config.json. Vložíme tam následující konfiguraci:
{
"mcpServers": {
"greeting-machine": {
"command": "node",
"args": ["[absolutni_cesta_k_serveru]/server.js"]
}
}
}
Spustíme náš server:
node server.js
V Claude Desktop teď můžeme v novém chatu napsat "Greet John Doe". Claude by měl odpovědět tímto způsobem:
Hi John Doe! I am greeting you from the greeting-machine server!
Závěr
V tomto článku jsme si ukázali, jak vytvořit základní MCP server pomocí knihovny @modelcontextprotocol/sdk. V příštím díle si ukážeme, jak lze MCP využít pro automatizované testování - vytvoříme MCP server, který umožní ChatGPT ovládat Playwright a testovat webové aplikace pomocí příkazů v přirozeném jazyce.

