spinny:~/writing $ less mcp-model-context-protocol-guide.md
12A **Model Context Protocol (MCP)** az Anthropic által létrehozott nyílt szabvány, amely meghatározza, hogyan kommunikálnak az AI modellek külső eszközökkel, adatforrásokkal és szolgáltatásokkal. Gondolj rá úgy, mint az "AI USB-C-je" - egy univerzális csatlakozó, amely lehetővé teszi bármely AI ügynök számára, hogy bármely eszközzel kommunikáljon egy szabványosított felületen keresztül.34A megjelenése óta az MCP átlépte a **havi 97 millió SDK letöltést** és minden nagy AI szolgáltató elfogadta: Anthropic, OpenAI, Google, Microsoft és Amazon. Ebben az útmutatóban mindent megvizsgálunk, amit tudnod kell az MCP-vel való fejlesztéshez.56## Miért Létezik az MCP78Az MCP előtt minden AI alkalmazásnak egyedi integrációkat kellett készítenie minden eszközhöz, amelyet használni akart. Szeretnéd, hogy az AI-d fájlokat olvasson? Írj egyedi kódot. Adatbázis lekérdezés? Több egyedi kód. Slack-re posztolás? Még egy integráció.910Ez egy **N×M problémát** hozott létre: N AI alkalmazás, amelyek mindegyike M egyedi integrációt igényelt, ami duplikált erőfeszítéshez és szétaprózott ökoszisztémákhoz vezetett.1112```mermaid13graph TD14 subgraph "Before MCP (N×M)"15 A1[AI App 1] --> T1[GitHub Integration]16 A1 --> T2[Slack Integration]17 A1 --> T3[DB Integration]18 A2[AI App 2] --> T4[GitHub Integration]19 A2 --> T5[Slack Integration]20 A2 --> T6[DB Integration]21 end22```2324Az MCP ezt **egyetlen protokollal** oldja meg, amelyet bármely AI kliens használhat bármely MCP szerverrel való kommunikációra:2526```mermaid27graph TD28 subgraph "With MCP (N+M)"29 A1[AI App 1] --> MCP[MCP Protocol]30 A2[AI App 2] --> MCP31 MCP --> S1[GitHub Server]32 MCP --> S2[Slack Server]33 MCP --> S3[DB Server]34 end35```3637## Alapfogalmak3839Az MCP három alapvető primitívvel rendelkezik:4041### 1. Eszközök (Tools)42Az eszközök olyan függvények, amelyeket az AI meghívhat. Olyan műveleteket képviselnek, mint "fájl létrehozása", "adatbázis lekérdezése" vagy "üzenet küldése". Minden eszköznek van neve, leírása és JSON Schema-ja a paramétereihez.4344```typescript45{46 name: "create_issue",47 description: "Create a new GitHub issue",48 inputSchema: {49 type: "object",50 properties: {51 title: { type: "string", description: "Issue title" },52 body: { type: "string", description: "Issue body" },53 repo: { type: "string", description: "Repository name" }54 },55 required: ["title", "repo"]56 }57}58```5960### 2. Erőforrások (Resources)61Az erőforrások olyan adatok, amelyeket az AI olvashat. Fájlokat, adatbázis rekordokat, API válaszokat vagy bármely más adatforrást képviselnek. Az erőforrásokat URI-k azonosítják.6263```typescript64{65 uri: "file:///Users/dev/project/README.md",66 name: "Project README",67 mimeType: "text/markdown"68}69```7071### 3. Promptok (Prompts)72A promptok újrafelhasználható sablonok, amelyek segítenek az interakciók strukturálásában. Tartalmazhatnak dinamikus paramétereket és hasznosak a gyakori munkafolyamatok szabványosítására.7374```typescript75{76 name: "code_review",77 description: "Review code changes for quality and security",78 arguments: [79 { name: "diff", description: "The code diff to review", required: true }80 ]81}82```8384## Architektúra8586Az MCP kliens-szerver architektúrát követ:8788```mermaid89graph LR90 subgraph "Host Application"91 Client[MCP Client]92 end9394 subgraph "MCP Server"95 Server[Server Process]96 Server --> Tools[Tools]97 Server --> Resources[Resources]98 Server --> Prompts[Prompts]99 end100101 Client -- "JSON-RPC 2.0\n(stdio or SSE)" --> Server102```103104- **Gazdagép**: Az AI alkalmazás (Claude Desktop, Cursor, az egyedi alkalmazásod)105- **Kliens**: 1:1 kapcsolatot tart fenn egy MCP szerverrel106- **Szerver**: Eszközöket, erőforrásokat és promptokat tesz elérhetővé a kliens számára107- **Szállítás**: A kommunikáció JSON-RPC 2.0-on keresztül történik stdio-n (helyi) vagy Server-Sent Events-en (távoli)108109## MCP Szerver Építése110111Építsünk egy gyakorlati MCP szervert, amely egy JSON fájlban tárolt feladatlistával kommunikál.112113### Telepítés114115```bash116mkdir mcp-todo-server && cd mcp-todo-server117npm init -y118npm install @modelcontextprotocol/sdk zod119```120121### Szerver Implementáció122123```typescript124// src/index.ts125import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";126import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";127import { z } from "zod";128import fs from "fs";129130const TODO_FILE = "./todos.json";131132function readTodos(): { id: number; text: string; done: boolean }[] {133 if (!fs.existsSync(TODO_FILE)) return [];134 return JSON.parse(fs.readFileSync(TODO_FILE, "utf-8"));135}136137function writeTodos(todos: { id: number; text: string; done: boolean }[]) {138 fs.writeFileSync(TODO_FILE, JSON.stringify(todos, null, 2));139}140141const server = new McpServer({142 name: "todo-server",143 version: "1.0.0",144});145146// Tool: Add a todo147server.tool(148 "add_todo",149 "Add a new todo item",150 { text: z.string().describe("The todo text") },151 async ({ text }) => {152 const todos = readTodos();153 const newTodo = { id: Date.now(), text, done: false };154 todos.push(newTodo);155 writeTodos(todos);156 return { content: [{ type: "text", text: `Added: "${text}"` }] };157 }158);159160// Tool: List todos161server.tool(162 "list_todos",163 "List all todo items",164 {},165 async () => {166 const todos = readTodos();167 const list = todos168 .map((t) => `${t.done ? "✅" : "⬜"} [${t.id}] ${t.text}`)169 .join("\n");170 return { content: [{ type: "text", text: list || "No todos yet." }] };171 }172);173174// Tool: Complete a todo175server.tool(176 "complete_todo",177 "Mark a todo as completed",178 { id: z.number().describe("The todo ID to complete") },179 async ({ id }) => {180 const todos = readTodos();181 const todo = todos.find((t) => t.id === id);182 if (!todo) return { content: [{ type: "text", text: "Todo not found." }] };183 todo.done = true;184 writeTodos(todos);185 return { content: [{ type: "text", text: `Completed: "${todo.text}"` }] };186 }187);188189// Resource: Current todos as a readable resource190server.resource(191 "todos://list",192 "Current todo list",193 async () => ({194 contents: [{195 uri: "todos://list",196 mimeType: "application/json",197 text: JSON.stringify(readTodos(), null, 2),198 }],199 })200);201202// Start the server203const transport = new StdioServerTransport();204await server.connect(transport);205```206207### Konfiguráció208209A szerver Claude Desktop-pal való használatához add hozzá a konfigurációdhoz:210211```json212{213 "mcpServers": {214 "todo": {215 "command": "npx",216 "args": ["tsx", "/path/to/mcp-todo-server/src/index.ts"]217 }218 }219}220```221222## MCP Kliens Építése223224Egyedi klienst is építhetsz, amely bármely MCP szerverhez csatlakozik:225226```typescript227import { Client } from "@modelcontextprotocol/sdk/client/index.js";228import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";229230const transport = new StdioClientTransport({231 command: "npx",232 args: ["tsx", "./src/index.ts"],233});234235const client = new Client({ name: "my-client", version: "1.0.0" });236await client.connect(transport);237238// List available tools239const { tools } = await client.listTools();240console.log("Available tools:", tools.map((t) => t.name));241242// Call a tool243const result = await client.callTool({244 name: "add_todo",245 arguments: { text: "Write MCP blog post" },246});247console.log(result);248```249250## Népszerű MCP Szerverek251252Az MCP ökoszisztéma gyorsan nőtt. Íme néhány a legnépszerűbb szerverek közül:253254| Szerver | Leírás | Felhasználási eset |255|---------|--------|-------------------|256| **GitHub** | Issue-k, PR-ek létrehozása, repók kezelése | Fejlesztési munkafolyamatok |257| **Slack** | Üzenetek küldése, csatornák kezelése | Csapatkommunikáció |258| **PostgreSQL** | Adatbázis lekérdezés és kezelés | Adathozzáférés |259| **Filesystem** | Fájlok olvasása, írása és keresése | Helyi fejlesztés |260| **Puppeteer** | Böngésző automatizálás és scraping | Webtesztelés |261| **Sentry** | Hibamonitorozás és hibakeresés | Éles támogatás |262| **Supabase** | Adatbázis, hitelesítés, tárolás | Backend műveletek |263264## MCP vs A2A (Agent-to-Agent)265266Míg az MCP az **ügynök-eszköz** kommunikációt kezeli, a Google **A2A (Agent-to-Agent)** protokollja az **ügynök-ügynök** kommunikációt kezeli. Kiegészítik egymást:267268```mermaid269graph TD270 Agent1[Agent 1] -- "A2A Protocol" --> Agent2[Agent 2]271 Agent1 -- "MCP Protocol" --> Tool1[GitHub MCP Server]272 Agent2 -- "MCP Protocol" --> Tool2[Database MCP Server]273```274275- **MCP**: Hogyan használ egy AI ügynök eszközöket (vertikális integráció)276- **A2A**: Hogyan működnek együtt az AI ügynökök (horizontális integráció)277278## Legjobb Gyakorlatok2792801. **Tartsd a szervereket fókuszáltan**: Egy szerver doménenként (GitHub szerver, Slack szerver stb.). Ne építs monolitikus szervereket.2812. **Validáld a bemeneteket Zod-dal**: Mindig validáld az eszköz bemeneteket megfelelő sémákkal.2823. **Kezeld a hibákat elegánsan**: Értelmes hibaüzeneteket adj vissza, ne stack trace-eket.2834. **Használj erőforrásokat csak olvasható adatokhoz**: Ha az AI-nak csak adatokat kell olvasnia, tedd elérhetővé erőforrásként eszköz helyett.2845. **Adj hozzá megfelelő leírásokat**: A jó eszköz- és paraméterleírások segítenek az AI-nak megérteni, mikor és hogyan használja az egyes eszközöket.2856. **Tesztelj az MCP Inspector-ral**: Használd az `npx @modelcontextprotocol/inspector`-t a szervered interaktív teszteléséhez.286287## Kezdj Hozzá288289```bash290# Create a new MCP server from template291npx @modelcontextprotocol/create-server my-server292293# Test with the MCP Inspector294npx @modelcontextprotocol/inspector npx tsx ./src/index.ts295```296297## Összegzés298299Az MCP 2026-ban az AI eszközhasználat de facto szabványává vált. Akár egyedi AI ügynököket építesz, akár a Claude Code-ot bővíted, akár meglévő platformokhoz készítesz integrációkat, az MCP megértése elengedhetetlen. A protokoll elég egyszerű ahhoz, hogy egy délután alatt megtanuld, de elég erős ahhoz, hogy termelési szintű AI munkafolyamatokat építs.300301**Következő lépések:**302- Fedezd fel az [MCP Specifikációt](https://spec.modelcontextprotocol.io/)303- Böngészd a [meglévő MCP szervereket](https://github.com/modelcontextprotocol/servers) inspirációért304- Építsd meg az első szervered a TypeScript vagy Python SDK-val305- Teszteld Claude Desktop-pal vagy az MCP Inspector-ral306
:MCP (Model Context Protocol): Teljes Útmutató Fejlesztőkneklines 1-306 (END) — press q to close