Modele językowe AI (LLM), takie jak Claude czy GPT-4, są niezwykle potężne w rozumowaniu i generowaniu tekstu — ale mają fundamentalne ograniczenie: są odizolowane od świata rzeczywistego. Nie wiedzą co wydarzyło się wczoraj, nie mają dostępu do Twojego systemu plików, bazy danych ani API firmy. Model Context Protocol (MCP) to otwarty standard stworzony przez Anthropic, który ma to zmienić.
Problem który rozwiązuje MCP
Przed MCP każdy dostawca AI tworzył własny, niekompatybilny sposób łączenia modelu z narzędziami. OpenAI miało function calling i plugins, Anthropic miało tool use, inne firmy miały własne podejścia. To powodowało:
- Fragmentację ekosystemu — integracja napisana dla GPT nie działała z Claude
- Problemy bezpieczeństwa — brak standardów uprawnień i sandboxingu
- Duplikację pracy — każdy tworzył te same konektory od zera
MCP rozwiązuje to poprzez jeden, otwarty protokół — analogicznie do tego jak HTTP ustandaryzował komunikację webową, czy LSP (Language Server Protocol) ustandaryzował obsługę języków w edytorach kodu.
Architektura MCP: Host, Klient, Serwer
MCP definiuje trzy role w systemie:
Host (Gospodarz)
To aplikacja uruchamiająca model AI, która zarządza całym systemem. Przykłady: Claude Desktop, Claude Code, środowiska IDE z wtyczkami AI. Host inicjuje połączenia z serwerami MCP i kontroluje uprawnienia dostępu.
Klient MCP
Komponent wewnątrz hosta, który utrzymuje połączenie 1:1 z konkretnym serwerem MCP. Host może mieć wiele klientów MCP — po jednym na każdy podłączony serwer (np. klient filesystem + klient GitHub + klient bazy danych).
Serwer MCP
Lekki program (może być napisany w Node.js, Python lub innym języku), który eksponuje określone możliwości dla modelu AI. Serwer definiuje co udostępnia: pliki, dane z API, możliwość wykonania poleceń itp.
Typy zasobów w MCP
Serwer MCP może udostępniać trzy rodzaje zasobów:
- Resources (Zasoby) — dane do odczytu: pliki, wpisy w bazie danych, odpowiedzi API. Model może prosić o odczyt zasobu, np.
file:///home/user/config.json. Zasoby są statyczne lub dynamicznie generowane. - Tools (Narzędzia) — akcje do wykonania: uruchomienie komendy, zapis do pliku, wysłanie żądania HTTP. Narzędzia mają efekty uboczne i wymagają wyraźnej zgody użytkownika.
- Prompts (Szablony promptów) — predefiniowane szablony kontekstu, które użytkownik może aktywować. Np. "analizuj ten kod pod kątem bezpieczeństwa" z gotowym kontekstem.
Transport: stdio vs SSE
MCP obsługuje dwa mechanizmy transportu:
# Transport stdio (dla serwerów lokalnych):
# Host uruchamia serwer jako podproces i komunikuje się przez stdin/stdout
# Przykład uruchomienia serwera filesystem:
npx -y @modelcontextprotocol/server-filesystem /home/user/projekty
# Transport SSE (Server-Sent Events) dla serwerów zdalnych:
# Serwer nasłuchuje na porcie HTTP i wysyła zdarzenia przez SSE
# Przydatne dla współdzielonych serwerów MCP w sieci
curl http://localhost:3000/sse
Przykłady zastosowań MCP
Gotowe serwery MCP (wg dokumentacji Anthropic i społeczności) obejmują m.in.:
- Filesystem — odczyt/zapis plików lokalnych z kontrolą uprawnień katalogów
- GitHub — zarządzanie repozytoriami, issues, pull requestami przez API GitHub
- SQLite/PostgreSQL — zapytania do baz danych
- Brave Search — przeszukiwanie internetu w czasie rzeczywistym
- Puppeteer — automatyzacja przeglądarki (web scraping, testy E2E)
MCP vs Function Calling vs Plugins
Warto rozumieć różnice. Function calling (np. w OpenAI API) to mechanizm pozwalający modelowi "wywołać" funkcję zdefiniowaną przez programistę — ale definicja funkcji jest przekazywana w każdym zapytaniu, nie istnieje żaden standard ich publikacji ani odkrywania. ChatGPT Plugins (wycofane) były jednorazowym rozwiązaniem OpenAI. MCP natomiast definiuje protokół działający na poziomie niżej — niezależny od konkretnego modelu czy API, z mechanizmem odkrywania zasobów i standardem bezpieczeństwa. Według dokumentacji Anthropic, MCP ma być otwartym standardem całej branży, nie produktem jednej firmy.
# Porównanie podejść:
# Function Calling (OpenAI):
# - definicja funkcji w każdym API call
# - własny format JSON
# - brak standardu uprawnień
# MCP:
# - serwer rejestruje narzędzia raz przy połączeniu
# - otwarty protokół JSON-RPC 2.0
# - sandbox i uprawnienia wbudowane w protokół
# - wielokrotnego użytku między różnymi modelami/hostami