🔌 Czym jest MCP?
The Model Context Protocol (MCP) to otwarty standard opublikowany przez Anthropic w grudniu 2024, który definiuje uniwersalny interfejs do łączenia modeli AI z zewnętrznymi narzędziami, źródłami danych i usługami. Przed MCP każda integracja AI była niestandardową, jednorazową implementacją. MCP standaryzuje sposób, w jaki klienci AI komunikują się z zewnętrznymi możliwościami — dzięki temu jedna integracja działa z dowolnym kompatybilnym systemem AI.
MCP to protokół klient-serwer: Klienci MCP to systemy AI (jak Claude, Cursor, VS Code z Copilot), które chcą korzystać z zewnętrznych możliwości. Serwery MCP to usługi, które udostępniają te możliwości (GitHub, baza danych, system plików, przeglądarka) przez ustrukturyzowane API, które może konsumować każdy klient MCP.
🔋 Metafora USB-C
Przed USB-C każde urządzenie miało własne, zamknięte złącze — ładowarka do telefonu nie działała z laptopem, kabel do wyświetlacza nie działał z urządzeniami pamięci. USB-C rozwiązał to jednym uniwersalnym standardem: jeden port, jeden kabel, nieskończenie wiele urządzeń.
Integracje AI przed MCP były tym samym chaosem. Podłączenie Claude do GitHub wymagało niestandardowego kodu. Podłączenie GPT-4 do tego samego API GitHub wymagało innego niestandardowego kodu. Dodanie nowego narzędzia oznaczało przebudowę integracji od zera dla każdej platformy AI.
MCP to USB-C dla AI. Jeden standard:
- Zbuduj serwer MCP raz — każdy klient MCP może go użyć
- Przyjmij nowy model AI — twoje istniejące serwery MCP działają od razu
- Ekosystem serwerów MCP rośnie niezależnie od rozwoju modeli AI
⚙️ Jak działa MCP
MCP używa protokołu JSON-RPC 2.0 nad warstwą transportową (stdio dla serwerów lokalnych, HTTP/SSE dla serwerów zdalnych). Komunikacja przebiega w cyklu inicjalizacji, odkrywania możliwości i obsługi żądań.
Trzy rdzeniowe prymitywy
| Primitive | Co udostępnia | Example |
|---|---|---|
| Tools | Funkcje, które AI może wywoływać (kontrolowane przez model) | search_github_issues, run_sql_query, send_email |
| Resources | Dane, które AI może czytać (kontrolowane przez aplikację) | file:///workspace/src, db://customers/schema |
| Prompts | Wielokrotnego użytku szablony promptów (kontrolowane przez użytkownika) | code-review, summarize-pr, explain-error |
Przepływ komunikacji
- Inicjalizacja: Klient łączy się z serwerem, wymienia wersję protokołu i możliwości
- Odkrywanie: Klient żąda listy dostępnych narzędzi, zasobów i promptów
- Wywołanie: Model AI decyduje się wywołać narzędzie; klient wysyła żądanie do serwera
- Zwrócenie: Serwer wykonuje akcję i zwraca ustrukturyzowane wyniki klientowi
- Kontynuacja: Model AI włącza wyniki do swojego rozumowania i kontynuuje proces
Opcje transportu
| Transport | Najlepsze dla | Notes |
|---|---|---|
| stdio | Narzędzia lokalne, integracje CLI | Klient uruchamia serwer jako subprocess; najprostsza konfiguracja |
| HTTP + SSE | Zdalne/usług w chmurze, zespoły współdzielone | Serwer działa niezależnie; obsługuje nagłówki auth |
| WebSocket | Dwukierunkowe działanie w czasie rzeczywistym (wstępny projekt) | Proponowane dla przypadków użycia strumieniowania |
🔄 MCP kontra Function Calling
Function calling (użycie narzędzi) to funkcja wbudowana w niektóre API AI — OpenAI, Anthropic, Google — która pozwala zdefiniować niestandardowe funkcje, które model może wywoływać. MCP to warstwa nad lub obok function calling, która standaryzuje jak te funkcje są wykrywane i łączone.
| Function Calling | MCP | |
|---|---|---|
| Scope | Specyficzne dla API, na żądanie | Wieloplatformowy, ustandaryzowany |
| Discovery | Wbudowane na stałe w wywołaniu API | Dynamiczne — serwer reklamuje możliwości |
| Portability | Powiązane z jednym dostawcą AI | Działa z każdym klientem zgodnym z MCP |
| Resources | Nieustrukturyzowane | Pierwszorzędny prymityw (pliki, DB, URI) |
| Najlepsze dla | Proste przypadki użycia dla jednego dostawcy | Systemy produkcyjne z wieloma narzędziami i modelami |
W praktyce serwery MCP często używają function calling wewnętrznie — MCP zapewnia warstwę odkrywania i łączenia, podczas gdy function calling obsługuje faktyczne wywołania LLM do narzędzi.
🏢 Kto obsługuje MCP
Adopcja MCP gwałtownie wzrosła od jego premiery w grudniu 2024. Na kwiecień 2026 ekosystem obejmuje:
Klienci AI z obsługą MCP
- Claude (Anthropic) — natywna obsługa MCP w Claude.ai i Claude Code
- Cursor — serwery MCP dla asysty związanej z kodem
- VS Code (GitHub Copilot) — integracja MCP w trybie agentowym
- Windsurf (Codeium) — wsparcie serwera MCP
- Continue.dev — open-source asystent IDE z MCP
Popularne serwery MCP
- Filesystem — odczyt/zapis plików lokalnych (oficjalne Anthropic)
- GitHub — repozytoria, PRy, issues, wyszukiwanie kodu
- PostgreSQL / SQLite — zapytania do bazy danych i eksploracja schematu
- Brave Search / Exa — wyszukiwanie w sieci bez kluczy API
- Puppeteer / Playwright — automatyzacja przeglądarki
- Slack / Linear / Notion — integracje narzędzi produktywności
🚀 Pierwsze kroki z MCP
Opcja 1: Użyj istniejących serwerów MCP (5 minut)
Najszybszy sposób na doświadczenie MCP to użycie Claude Desktop z gotowymi serwerami. Edytuj konfigurację Claude Desktop w ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
}
}
} Opcja 2: Zbuduj serwer MCP (30 minut)
Oficjalne SDK są dostępne dla TypeScript, Python i Kotlin:
// TypeScript MCP server example
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({ name: "my-server", version: "1.0.0" });
server.setRequestHandler("tools/list", async () => ({
tools: [{
name: "get_weather",
description: "Get current weather for a city",
inputSchema: {
type: "object",
properties: { city: { type: "string" } },
required: ["city"]
}
}]
}));
server.setRequestHandler("tools/call", async (request) => {
const { city } = request.params.arguments;
// ... fetch weather data
return { content: [{ type: "text", text: `Weather in ${city}: sunny, 22°C` }] };
});
const transport = new StdioServerTransport();
await server.connect(transport); 🔐 Rozważania dotyczące bezpieczeństwa MCP
Moc MCP — umożliwiając modelom AI dostęp do narzędzi, plików i usług — wprowadza także ryzyka bezpieczeństwa, przeciwko którym deweloperzy muszą się zabezpieczać.
| Risk | Description | Mitigation |
|---|---|---|
| Wstrzykiwanie promptów przez MCP | Złośliwa treść w wynikach narzędzi manipuluje AI | Oczyść (sanitize) wyjście narzędzi; używaj oddzielnych modeli do rozumowania i do wykonywania akcji |
| Serwery z nadmiernymi uprawnieniami | Serwer MCP ma więcej uprawnień niż potrzeba | Zasada najmniejszych uprawnień; tam, gdzie to możliwe, dostęp tylko do odczytu |
| Zdezorientowany pełnomocnik (confused deputy) | AI działa w imieniu atakującego bez świadomości użytkownika | Potwierdzenie HITL przy działaniach destrukcyjnych/nieodwracalnych |
| Łańcuch dostaw serwera | Złośliwy serwer MCP stron trzecich eksfiltrowuje dane | Używaj tylko zaufanych, audytowanych serwerów; przeglądaj kod serwera |
Aby zagłębić się w podatności bezpieczeństwa AI — w tym jak wstrzykiwanie promptów może być uzbrojone przez wyniki narzędzi MCP — zobacz nasz przewodnik: Wyjaśnienie wstrzykiwania promptów.