
Model Context Protocol (MCP) to otwarty standard, który zapewnia modelom AI uniwersalny sposób łączenia się z zewnętrznymi narzędziami, źródłami danych i usługami. Zamiast pisać niestandardowy kod integracyjny dla każdej kombinacji model-narzędzie, tworzysz jeden serwer MCP, z którego może korzystać każdy kompatybilny model. Anthropic stworzył MCP pod koniec 2024 roku, obecnie zarządza nim Linux Foundation, a przyjęły go OpenAI, Google oraz reszta ekosystemu agentowego AI. Oto wszystko, co musisz wiedzieć, aby zrozumieć, zbudować i wdrożyć MCP.
MCP w skrócie
Jeśli chcesz szybkiego podsumowania przed zagłębieniem się w tysiące słów szczegółów, oto ono.
| Atrybut | Szczegóły |
|---|---|
| Pełna nazwa | Model Context Protocol (MCP) |
| Twórca | Anthropic (listopad 2024), obecnie zarządzany przez Linux Foundation / AAIF (grudzień 2025) |
| Działanie | Uniwersalny standard łączenia modeli AI z narzędziami, danymi i usługami |
| Rozwiązany problem | Eliminuje M x N niestandardowych integracji, jak USB-C dla AI |
| Podstawowe prymitywy | Narzędzia (Tools), Zasoby (Resources), Prompty (Prompts) i Próbkowanie (Sampling) |
| Transport | stdio (lokalny dev), Streamable HTTP (produkcja) |
| Uwierzytelnianie | OAuth 2.1 (wymagane dla transportu HTTP) |
| SDK | Python (FastMCP), TypeScript, Java, Kotlin, C# |
| Wielkość ekosystemu | Ponad 10 000 aktywnych serwerów (według Linux Foundation, grudzień 2025) |
| Główni adoptujący | Claude, ChatGPT, Gemini, Cursor, VS Code Copilot, Windsurf |
| Status specyfikacji | Otwarty standard, aktywnie ewoluujący (harmonogram na 2026 rok w toku) |
| Najlepsze zastosowanie | Agenci AI, którzy muszą interagować z rzeczywistymi narzędziami i danymi |
Teraz rozłóżmy każdy z tych elementów, zaczynając od tego, czym właściwie jest MCP i jaki problem sprawił, że stało się konieczne.
Czym jest Model Context Protocol?
Model Context Protocol to otwarty protokół oparty na JSON-RPC, który standaryzuje sposób, w jaki modele AI odkrywają i współdziałają z zewnętrznymi narzędziami i danymi. Traktuj to jako HTTP dla integracji AI – wspólny język, którym może posługiwać się każdy model i każde narzędzie.
Prawdopodobnie słyszałeś analogię do USB-C i jest ona przydatna do pewnego stopnia: przed USB-C każde urządzenie potrzebowało własnego kabla. MCP robi to samo dla AI, ale ta analogia niedoceniam jego możliwości. USB-C przesyła tylko dane i zasilanie. MCP przenosi definicje narzędzi, wzorce dostępu do danych, wielokrotnego użytku szablony promptów, a nawet pozwala serwerom żądać uzupełnień od modelu. To bogatszy protokół, niż sugeruje metafora kabla.
Problem M x N, który rozwiązuje MCP
Bez MCP połączenie M modeli z N narzędziami wymaga M x N niestandardowych integracji. Powiedzmy, że obsługujesz 5 LLM (Claude, GPT-4, Gemini, Llama, Mistral) i potrzebujesz, aby miały dostęp do 10 narzędzi (GitHub, Postgres, Slack, Jira itd.). To daje 50 indywidualnych warstw integracyjnych, każda z własnym uwierzytelnianiem, obsługą błędów i formatowaniem danych.
Dzięki MCP każdy model implementuje protokół klienta MCP raz, a każde narzędzie implementuje serwer MCP raz. Teraz mamy 5 + 10 = 15 implementacji zamiast 50. Dodajesz nowy model? Natychmiast działa ze wszystkimi 10 narzędziami. Dodajesz nowe narzędzie? Wszystkie 5 modeli może z niego korzystać.
Krótka historia MCP
Anthropic open-sourcował MCP w listopadzie 2024 roku wraz z SDK dla Pythona i TypeScript oraz konektorami dla Claude Desktop. Przyjęcie nastąpiło szybko. OpenAI dodało obsługę MCP do ChatGPT w marcu 2025 roku. Google podążyło za tym dla Gemini w kwietniu 2025 roku. Do grudnia 2025 roku Anthropic przekazał MCP nowej Agentic AI Foundation (AAIF) należącej do Linux Foundation, współzałożonej z Block i OpenAI, czyniąc MCP neutralnym wobec dostawców standardem z międzybranżowym zarządzaniem.
Czym MCP NIE jest:
- Nie jest modelem ani frameworkiem AI (to protokół, jak HTTP)
- Nie zastępuje LangChain ani LlamaIndex (to warstwy orkiestracji; MCP znajduje się poniżej nich)
- Nie jest ograniczony do Anthropic lub Claude (z założenia jest niezależny od modelu)
- Nie jest tym samym co wywoływanie funkcji (więcej na ten temat w sekcji porównania)
Jak działa MCP? Dogłębna analiza architektury
MCP ma trzy role, a ich mylenie jest najczęstszym błędem początkujących. Ustalmy tę różnicę raz na zawsze.
<!-- IMAGE: Diagram architektury MCP pokazujący role hosta, klienta i serwera z prawdziwymi przykładami takimi jak Claude Desktop, GitHub MCP Server, Postgres MCP Server -->Host, Klient i Serwer – jaka jest różnica?
| Komponent | Rola | Przykłady | Co robi |
|---|---|---|---|
| Host | Aplikacja, z którą interakcję prowadzi użytkownik | Claude Desktop, Cursor, VS Code | Udostępnia UI, zarządza instancjami klientów |
| Klient | Obsługa protokołu wewnątrz hosta | Wbudowany w aplikację hosta | Utrzymuje połączenie 1:1 z jednym serwerem MCP |
| Serwer | Udostępnia narzędzia i dane przez MCP | Serwer GitHub, serwer Postgres, serwer Slack | Opakowuje zewnętrzne API/dane w punkty końcowe kompatybilne z MCP |
Oto konkretny przykład: prosisz Claude Desktop o sprawdzenie otwartych pull requestów na GitHubie. Claude Desktop jest hostem. Jego wbudowany klient MCP otwiera połączenie z serwerem MCP GitHuba. Serwer wywołuje API GitHuba, pobiera Twoje PR-y i zwraca wyniki do klienta, który przekazuje je modelowi.
Jeden host może uruchamiać wielu klientów, każdy połączony z innym serwerem. Dzięki temu Claude Desktop może jednocześnie uzyskiwać dostęp do GitHuba, Twojej bazy danych Postgres i Slacka – trzech oddzielnych serwerów MCP, trzech oddzielnych połączeń klienckich, jednego hosta.
Przepływ wiadomości (JSON-RPC 2.0)
Cała komunikacja MCP wykorzystuje JSON-RPC 2.0, lekki protokół żądanie/odpowiedź. Oto jak wygląda wymiana tools/list w sieci:
// Client request: "What tools do you have?"
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}
// Server response: one tool available
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "get_weather",
"description": "Get current weather for a city",
"inputSchema": {
"type": "object",
"properties": {
"city": { "type": "string" }
},
"required": ["city"]
}
}
]
}
}Model odczytuje te definicje narzędzi, decyduje, kiedy je wywołać na podstawie żądania użytkownika, a klient wysyła z powrotem do serwera żądanie tools/call z odpowiednimi argumentami.
Cykl życia połączenia
Każda sesja MCP przebiega według tego samego cyklu życia:
- Inicjalizacja, klient wysyła swoje możliwości, serwer odpowiada swoimi
- Negocjacja możliwości, obie strony uzgadniają obsługiwane funkcje (narzędzia, zasoby, prompty, próbkowanie)
- Gotowość, połączenie jest aktywne; żądania płyną w obu kierunkach
- Żądania/odpowiedzi,
tools/call,resources/readitp. - Zamykanie, czyste rozłączenie
To handshake zapewnia zgodność wsteczną. Jeśli serwer doda nowy prymityw, starsi klienci elegancko go zignorują zamiast ulec awarii.
Prymitywy MCP: Narzędzia, Zasoby, Prompty i Próbkowanie
MCP definiuje cztery prymitywy, a zrozumienie tego, kto kontroluje każdy z nich, jest kluczem do projektowania dobrych serwerów MCP.
| Prymityw | Kto kontroluje | Kierunek | Przykład | Przypadek użycia |
|---|---|---|---|---|
| Narzędzia (Tools) | Model decyduje, kiedy wywołać | Klient -> Serwer | create_github_issue | Akcje podejmowane autonomicznie przez AI |
| Zasoby (Resources) | Aplikacja/użytkownik wybiera | Klient -> Serwer | file://project/README.md | Dane dołączone do kontekstu |
| Prompty (Prompts) | Użytkownik wyzwala | Klient -> Serwer | Szablon code_review | Wielokrotnego użytku wzorce interakcji |
| Próbkowanie (Sampling) | Serwer żąda uzupełnienia | Serwer -> Klient | Serwer prosi model o podsumowanie | Pętle agentowe, gdzie serwer używa LLM |
Narzędzia (Kontrolowane przez model)
Narzędzia to funkcje, które model może wywołać. Serwer deklaruje je z nazwą, opisem i definicją wejścia w JSON Schema. Model odczytuje te definicje i gdy żądanie użytkownika tego wymaga, model decyduje się na wywołanie narzędzia.
// Client sends tools/call request
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_weather",
"arguments": { "city": "Berlin" }
}
}Jeśli korzystałeś z wywoływania funkcji OpenAI, narzędzia będą Ci znajome, ale są one standaryzowane across każdego modelu kompatybilnego z MCP.
Zasoby (Kontrolowane przez aplikację)
Zasoby to punkty końcowe danych tylko do odczytu. W przeciwieństwie do narzędzi, model nie decyduje samodzielnie o pobraniu zasobu – aplikacja hostująca lub użytkownik jawnie dołącza zasoby do kontekstu rozmowy. Traktuj je jak punkty końcowe GET: postgres://mydb/users/schema, file://docs/api-reference.md.
Zasoby obsługują subskrypcje poprzez resources/subscribe, dzięki czemu klient może być powiadamiany o zmianach danych.
Prompty (Kontrolowane przez użytkownika)
Prompty to szablony wielokrotnego użytku udostępniane przez serwer MCP. Prompt code_review może przyjmować ścieżkę do pliku i generować ustrukturyzowane żądanie recenzji. Użytkownik (lub UI hosta) wyzwala prompty jawnie, nie są one automatycznie wywoływane przez model.
Próbkowanie (Inicjowane przez serwer), Zaawansowane
Oto prymityw, który pomija większość przewodników. Próbkowanie pozwala serwerowi poprosić klienta o wygenerowanie uzupełnienia przy użyciu LLM. Odwraca to zwykły przepływ: zamiast model wywoływał narzędzie, narzędzie wywołuje model.
Po co? Pętle agentowe. Wyobraź sobie serwer MCP, który przetwarza zgłoszenia wsparcia. Odczytuje zgłoszenie (zasób), używa sampling/createMessage, aby poprosić model o podsumowanie, a następnie używa tego podsumowania do skierowania zgłoszenia za pomocą narzędzia. Serwer organizuje wieloetapowy przepływ pracy, wykorzystując inteligencję modelu.
Próbkowanie jest kontrolowane przez aplikację hostującą – użytkownik musi je zatwierdzić, a host kontroluje, o co serwer może poprosić. Zapobiega to niekontrolowanym pętlom i utrzymuje nadzór człowieka.
Zbuduj swój pierwszy serwer MCP: Python i TypeScript obok siebie
Dość teorii. Zbudujmy działający serwer MCP, który udostępnia narzędzie get_weather. Pokażę zarówno Pythona, jak i TypeScript, abyś mógł porównać doświadczenie deweloperskie i wybrać stos pasujący do Twojego projektu.
Python z FastMCP
FastMCP to oficjalne wysokopoziomowe SDK dla Pythona. Zajmuje się całą mechaniką protokołu, więc możesz skupić się na logice swojego narzędzia.
# Install FastMCP
pip install fastmcp# weather_server.py
from fastmcp import FastMCP
mcp = FastMCP("Weather Server")
@mcp.tool()
def get_weather(city: str) -> str:
"""Get the current weather for a city."""
# In production, call a real weather API here
weather_data = {
"Berlin": "Cloudy, 12°C",
"Tokyo": "Sunny, 22°C",
"New York": "Rainy, 8°C",
}
return weather_data.get(city, f"No data for {city}")
if __name__ == "__main__":
mcp.run()To wszystko – 15 linii. FastMCP wnioskuje schemat wejściowy narzędzia z hintów typów Pythona i docstringa. Bez boilerplate'u JSON Schema.
TypeScript z oficjalnym SDK
TypeScript SDK (@modelcontextprotocol/sdk) jest nieco bardziej jawny, ale daje pełną kontrolę nad definicjami schematów.
# Install the SDK and Zod for schema validation
npm install @modelcontextprotocol/sdk zod// weather-server.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "Weather Server",
version: "1.0.0",
});
server.tool(
"get_weather",
"Get the current weather for a city",
{ city: z.string() },
async ({ city }) => {
const weatherData: Record<string, string> = {
Berlin: "Cloudy, 12°C",
Tokyo: "Sunny, 22°C",
"New York": "Rainy, 8°C",
};
return {
content: [
{ type: "text", text: weatherData[city] ?? `No data for ${city}` },
],
};
}
);
const transport = new StdioServerTransport();
await server.connect(transport);Wersja TypeScript używa schematów Zod zamiast hintów typów i zwraca ustrukturyzowane bloki treści. Bardziej rozwlekłe, ale bezpieczeństwo typów jest doskonałe.
Połącz z Claude Desktop
Aby podpiąć którykolwiek serwer do Claude Desktop, dodaj go do swojego claude_desktop_config.json:
{
"mcpServers": {
"weather-python": {
"command": "python",
"args": ["weather_server.py"],
"cwd": "/path/to/your/project"
},
"weather-typescript": {
"command": "npx",
"args": ["tsx", "weather-server.ts"],
"cwd": "/path/to/your/project"
}
}
}Uruchom ponownie Claude Desktop, a oba serwery pogodowe pojawią się na liście narzędzi. Zapytaj „Jaka jest pogoda w Berlinie?”, a model automatycznie wywoła Twoje narzędzie get_weather.
Testuj z MCP Inspector
Zanim podłączysz swój serwer do hosta, przetestuj go w izolacji za pomocą MCP Inspector:
npx @modelcontextprotocol/inspector python weather_server.pyInspector otwiera interfejs przeglądarkowy, w którym możesz zobaczyć odkryte narzędzia, wywoływać je ręcznie i inspekcjonować wiadomości JSON-RPC przesyłane tam i z powrotem. To najlepsze narzędzie debuggerskie w ekosystemie MCP, używaj go wcześnie i często.
Transports MCP: stdio dla Dev, Streamable HTTP dla Produkcji
Wiadomości MCP potrzebują sposobu na podróżowanie między klientem a serwerem. To warstwa transportu, a wybór właściwej ma znaczenie.
| Transport | Przypadek użycia | Zalety | Wady | Status |
|---|---|---|---|---|
| stdio | Lokalny development, narzędzia osobiste | Zero konfiguracji, prosty, szybki | Tylko na tej samej maszynie | Aktywny |
| Streamable HTTP | Produkcja, zdalne serwery, multi-user | Działa przez sieć, obsługuje streaming przez SSE, przyjazny dla bezstanowości | Wymaga serwera HTTP, potrzebuje auth | Aktywny (spec 2025) |
| HTTP+SSE (stary) | Starszy transport zdalny | Był oryginalną opcją zdalną | Zastąpiony przez Streamable HTTP | Przestarzały |
stdio działa poprzez spawnowanie serwera MCP jako podprocesu i komunikację przez stdin/stdout. To właśnie użyliśmy w powyższym tutorialu, bez portów, bez TLS, bez potrzeby uwierzytelniania. Idealne do developmentu i jednoosobowych narzędzi lokalnych.
Streamable HTTP to transport produkcyjny, dodany w aktualizacji specyfikacji z 2025 roku. Klienci wysyłają standardowe żądania HTTP POST do serwera. Serwer może odpowiadać synchronicznie lub otworzyć strumień SSE dla dłuższych operacji. Jest przyjazny dla bezstanowości, działa za load balancerami i obsługuje standardowe uwierzytelnianie HTTP.
Jeśli widzisz starsze tutoriale mówiące o „HTTP+SSE” jako o dwóch oddzielnych transportach (jeden do wysyłania, jeden do odbierania), to podejście przestarzałe. Streamable HTTP konsoliduje oba w jeden, czystszy mechanizm.
Decyzja jest prosta: używaj stdio podczas developowania lokalnie, przełącz się na streamable-http podczas wdrażania dla innych.
// Switching from stdio to Streamable HTTP in TypeScript
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
const transport = new StreamableHTTPServerTransport({ port: 3001 });
await server.connect(transport);MCP vs Wywoływanie Funkcji vs REST API – Kiedy używać czego
To pytanie pojawia się w każdej dyskusji o MCP, więc rozstrzygnijmy to bezpośrednim porównaniem.
| Cecha | MCP | Wywoływanie Funkcji | REST APIs |
|---|---|---|---|
| Standaryzacja | Otwarty protokół, niezależny od modelu | Per-dostawca (OpenAI, Anthropic mają swoje własne) | Uniwersalny |
| Odkrywanie narzędzi | Wbudowane (tools/list) | Brak, wysyłasz schematy per żądanie | Brak, wymaga dokumentacji lub specyfikacji OpenAPI |
| Dostęp do danych | Prymityw Zasobów | Nieobsługiwany | Standardowe endpointy |
| Szablony promptów | Prymityw Promptów | Nieobsługiwany | Nie dotyczy |
| Auth | OAuth 2.1 (poziom specyfikacji) | Klucz API dostawcy | Różne (klucze API, OAuth itp.) |
| Streaming | SSE przez Streamable HTTP | Zależne od dostawcy | Różne |
| Multi-Model | Działa z każdym modelem kompatybilnym z MCP | Zablokowane do API jednego dostawcy | Niezależne od modelu (z kodem klejącym) |
| Ekosystem serwerów | 10 000+ gotowych serwerów | N/A | Miliony API |
| Złożoność konfiguracji | Uruchom serwer MCP | Wyślij JSON w wywołaniu API | Klient HTTP |
| Najlepsze dla | Środowiska agentowe multi-model, multi-tool | Proste aplikacje single-model z kilkoma narzędziami | Komunikacja usługa-do-usługi |
Kiedy Wywoływanie Funkcji wystarcza
Jeśli masz mniej niż 5 narzędzi i używasz jednego modelu, wywoływanie funkcji jest prostsze. Definiujesz schematy narzędzi inline z każdym wywołaniem API, model zwraca nazwę funkcji i argumenty, a Ty wykonujesz je w kodzie aplikacji. Żadnego serwera do uruchamiania, żadnego protokołu do nauki. Dla chatbota sprawdzającego status zamówienia i szukającego FAQ, wywoływanie funkcji jest całkowicie wystarczające.
Kiedy MCP staje się opłacalne
MCP zyskuje na złożoności, gdy:
- Obsługujesz wiele LLM i nie chcesz przepisywać definicji narzędzi dla każdego dostawcy
- Potrzebujesz odkrywania narzędzi, model może zapytać, co jest dostępne, zamiast hardcodować schematy
- Chcesz zasobów i promptów, nie tylko wywołań narzędzi
- Budujesz agentów AI, którzy koordynują się autonomicznie i potrzebują standaryzowanej warstwy integracyjnej
- Twój zespół rośnie i różni inżynierowie budują różne narzędzia, MCP pozwala im pracować niezależnie
Werdykt: MCP wygrywa, gdy potrzebujesz standaryzowanego, multi-model dostępu do narzędzi. Wywoływanie funkcji wygrywa w prostych przypadkach single-model. REST API pozostaje właściwym wyborem dla tradycyjnej komunikacji usługa-do-usługi, która nie obejmuje LLM.
Ekosystem MCP w 2026: Kto go wspiera i co jest dostępne
MCP przeszedł drogę od pobocznego projektu Anthropic do standardu branżowego w niespełna 18 miesięcy. Oto jak wygląda sytuacja.
Jakie LLM wspierają MCP?
| LLM | Wsparcie MCP | Od | Uwagi |
|---|---|---|---|
| Claude | Natywne, pełne wsparcie | Listopad 2024 | Stworzył MCP; najgłębsza integracja |
| ChatGPT | Oficjalne wsparcie | Marzec 2025 | Przez integrację MCP OpenAI |
| Gemini | Oficjalne wsparcie | Kwiecień 2025 | Serwery MCP Google Cloud dla usług Google |
| Llama / Open-Source | Przez adaptery | 2025 | LangChain, LlamaIndex i customowe adaptery |
| Copilot (VS Code) | Natywne w trybie agenta | 2025 | Microsoft dostarcza wsparcie MCP w VS Code |
Popularne serwery MCP, które warto znać
| Kategoria | Serwer | Co robi |
|---|---|---|
| Kod | GitHub | PR-y, issues, repozytoria, wyszukiwanie kodu |
| Kod | GitLab | Merge requesty, pipeline'y, zarządzanie projektem |
| Baza danych | PostgreSQL | Inspekcja schematu, wykonywanie zapytań |
| Baza danych | MySQL | Dostęp do zapytań i schematu |
| SaaS | Slack | Wiadomości kanałów, wyszukiwanie, powiadomienia |
| SaaS | Google Drive | Dostęp do plików, wyszukiwanie, czytanie dokumentów |
| SaaS | Notion | Czytanie stron, zapytania do bazy danych |
| Wyszukiwarka | Brave Search | Wyniki wyszukiwania web |
| DevOps | Docker | Zarządzanie kontenerami |
| Infra | AWS | Zarządzanie zasobami chmurowymi |
Ogłoszenie AAIF Linux Foundation cytowało ponad 10 000 aktywnych serwerów i 97 milionów miesięcznych pobrań SDK w momencie przekazania MCP w grudniu 2025 roku. Ekosystem nie jest już eksperymentalny, jest gotowy do produkcji.
MCP Apps to nowy prymityw wprowadzony w styczniu 2026 roku. Pozwala serwerom dostarczać interaktywne komponenty UI, które renderują się wewnątrz aplikacji hostującej. Wciąż wczesne stadium, ale sygnalizuje ewolucję MCP z protokołu danych do pełnego frameworka aplikacyjno-agentowego. Warto obserwować.
Zarządzanie: Od Anthropic do Linux Foundation
MCP jest zarządzany przez Agentic AI Foundation (AAIF) pod auspicjami Linux Foundation, współzałożoną przez Anthropic, Block i OpenAI. Ma to znaczenie dla adopcji enterprise: MCP nie jest związany z roadmapą jednego dostawcy. Priorytety roadmapy na 2026 rok to ewolucja transportu, komunikacja agent-do-agenta (nowy prymityw „Tasks”), dojrzewanie zarządzania i gotowość enterprise.
Dla zespołów budujących produkcyjne systemy AI, frameworki takie jak autonomiczny framework agentów AI OpenClaw już integrują się z serwerami MCP, aby dać agentom możliwości świata rzeczywistego.
Bezpieczeństwo MCP: OAuth 2.1, Zagrożenia i Praktyczna Lista Kontrolna
Bezpieczeństwo to obszar, w którym ekosystem MCP ma najwięcej do nadrobienia. A liczby malują drastyczny obraz.
Problem 88%: Dlaczego większość serwerów MCP jest niezabezpieczona
Astrix Security przeanalizowało ponad 5200 implementacji serwerów MCP open-source i stwierdziło, że 88% wymaga jakichś poświadczeń, ale 53% polega na niezabezpieczonych, długotrwałych statycznych sekretach, takich jak klucze API i tokeny dostępu osobistego, hardcoded w plikach konfiguracyjnych. Tylko 8,5% implementuje OAuth.
Oznacza to, że przytłaczająca większość serwerów MCP w dzikiej naturze używa uwierzytelniania równoważnego przyklejeniu klucza do domu taśmą na drzwiach wejściowych.
OAuth 2.1 dla serwerów MCP
Specyfikacja MCP wymaga OAuth 2.1 dla wszystkich serwerów opartych na HTTP od aktualizacji z czerwca 2025 roku. Przepływ działa tak: klient MCP inicjuje przepływ autoryzacji OAuth 2.1 z serwerem, uzyskuje token dostępu z określonym zakresem i dołącza go do każdego kolejnego żądania. PKCE (Proof Key for Code Exchange) jest wymagane dla wszystkich klientów, bez wyjątków.
Jeśli budujesz serwer MCP działający przez Streamable HTTP, OAuth 2.1 nie jest opcjonalne. Jest wymagane przez specyfikację.
Model zagrożeń: Co może pójść nie tak
Cztery zagrożenia zasługują na uwagę w każdej wdrożeniu MCP:
- Wstrzykiwanie promptów przez narzędzia, Złośliwe lub skompromitowane źródło danych zwraca treść zaprojektowaną do manipulacji modelem. Jeśli narzędzie pobiera stronę internetową, a ta strona zawiera ukryte instrukcje, model może je wykonać.
- Atak confused deputy, Model wywołuje narzędzie z szerszymi uprawnieniami niż zamierzał użytkownik. Jeśli serwer MCP ma dostęp admina do bazy danych, model teoretycznie mógłby usunąć tabelę.
- Ryzyko koncentracji tokenów, Serwer MCP, który przechowuje klucze API do GitHuba, Slacka i Twojej produkcyjnej bazy danych, jest pojedynczym celem o wysokiej wartości. Skompromituj jeden serwer, skompromituj wszystko, z czym się łączy.
- Niebezpieczny transport, Uruchamianie serwera HTTP MCP bez TLS naraża każde żądanie, w tym tokeny OAuth i poufne dane, w postaci plaintext.
Lista kontrolna bezpieczeństwa dla produkcyjnego MCP
- Zaimplementuj OAuth 2.1 dla każdego serwera wystawionego przez HTTP. Żadnych statycznych kluczy API w plikach konfiguracyjnych.
- Stosuj zasadę najmniejszych uprawnień. Jeśli Twoje narzędzie tylko odczytuje dane, poświadczenia serwera powinny być tylko do odczytu. Nie dawaj narzędziu raportującemu uprawnień do zapisu.
- Izoluj poświadczenia. Każdy serwer MCP powinien mieć swoje własne tokeny z określonym zakresem. Nie dziel jednego „boskiego tokena” między serwerami.
- Wymuszaj TLS wszędzie. Streamable HTTP bez HTTPS to automatyczne „nie” dla produkcji.
- Waliduj i sanitizuj wyjścia narzędzi. Traktuj dane zwracane przez narzędzia tak samo, jak traktowałbyś dane wejściowe użytkownika, nie ufaj im слепо.
- Limituj wywołania narzędzi. Pętla agenta wymykająca się spod kontroli, wywołująca narzędzie tysiące razy, może wyczerpać limity API lub spowodować niezamierzone skutki uboczne.
- Audituj i loguj każde wywołanie narzędzia. Dołącz ID żądania, znaczniki czasu, wywołujący model i argumenty narzędzia. Potrzebujesz tego do debugowania i reagowania na incydenty bezpieczeństwa.
Debugowanie MCP: Inspector, Logowanie i Częste Błędy
Napotkasz błędy. Każdy deweloper to robi. Oto jak naprawić je szybko.
MCP Inspector to oficjalne narzędzie debuggerskie i Twoja pierwsza linia obrony. Łączy się z dowolnym serwerem MCP, odkrywa jego narzędzia/zasoby/prompty i pozwala wywoływać je ręcznie, pokazując surowy ruch JSON-RPC.
# Launch Inspector against your Python server
npx @modelcontextprotocol/inspector python weather_server.py
# Or against a TypeScript server
npx @modelcontextprotocol/inspector npx tsx weather-server.tsInspector otwiera interfejs oparty na przeglądarce z zakładkami dla Narzędzi, Zasobów, Promptów i panelem powiadomień. Możesz wywołać dowolne narzędzie z customowymi argumentami i zobaczyć dokładnie, jaki JSON przelatuje przez sieć. Używaj go przed połączeniem z aplikacją hostującą, znacznie łatwiej jest debugować serwer w izolacji.
Częste błędy i poprawki
- „Server not found” w Claude Desktop, Prawie zawsze problem ze ścieżką w
claude_desktop_config.json. Sprawdź dwukrotnie, czycommandwskazuje na prawdziwy binarium, acwdna poprawny katalog. Na macOS używaj ścieżek absolutnych. - Błędy walidacji schematu narzędzia, Jeśli model wysyła argumenty, które nie pasują do
inputSchemanarzędzia, serwer odrzuca wywołanie. Sprawdź, czy typy w schemacie pasują do tego, czego oczekuje model. Zod (TypeScript) i hinty typów (Python) łapią większość z nich na etapie definicji. - Urywanie połączenia transportu, Dla
stdiozwykle oznacza to, że proces serwera uległ awarii. Sprawdź output stderr. Dla Streamable HTTP zweryfikuj ustawienia timeoutu, długo działające narzędzia mogą przekroczyć domyślne timeouty HTTP. - „Permission denied” lub błędy 401, Zakres OAuth zbyt wąski. Serwer odrzuca token, ponieważ nie ma wymaganych uprawnień. Poszerz zakres, ale tylko tyle, ile narzędzie rzeczywiście potrzebuje.
Najlepsze praktyki logowania
Strukturyzuj logi z ID żądań, abyś mógł śledzić pojedyncze żądanie użytkownika przez klienta MCP, serwer i wszelkie downstream API. Loguj każde wywołanie tools/call z nazwą narzędzia, argumentami, czasem odpowiedzi i statusem wyniku. W produkcji wysyłaj te logi do platformy observability, gdy coś pójdzie nie tak o 3 nad ranem, będziesz wdzięczny, że to zrobiłeś.
Jak Techsy buduje z MCP
Integrujemy MCP w projektach klienckich od początku 2025 roku, a wzorzec, który widzimy najczęściej, jest taki: zespół ma funkcję AI, która działa z jednym modelem i garstką narzędzi, ale planują skalowanie – więcej modeli, więcej źródeł danych, więcej możliwości agentowych. To punkt zwrotny, w którym MCP zaczyna się opłacać.
Nasze podejście składa się z trzech kroków:
- Ocena dopasowania. Nie każdy projekt potrzebuje MCP. Jeśli wywołujesz dwa narzędzia z jednego modelu, wywoływanie funkcji jest prostsze i powiemy Ci to. MCP ma sens, gdy łączysz 3+ źródła danych, obsługujesz wiele modeli lub budujesz przepływy agentowe, gdzie narzędzia muszą być discoverowalne.
- Budowa i testowanie serwerów w izolacji. Opracowujemy customowe serwery MCP dla każdego źródła danych – wewnętrznych baz danych, API SaaS, usług proprietary – i walidujemy je z MCP Inspector przed podłączeniem do jakiegokolwiek hosta.
- Wdrażanie ze Streamable HTTP i OAuth 2.1. Dla produkcji uruchamiamy serwery MCP jako konteneryzowane usługi za TLS, ze scoped tokenami OAuth i strukturalnym logowaniem od pierwszego dnia. Żadnych statycznych sekretów.
Najczęstsze integracje, które budujemy: łączenie asystentów AI z wewnętrznymi bazami danych Postgres, budowanie customowych serwerów MCP dla platform SaaS klientów oraz migracja zespołów z rozproszonych setupów function-calling do standaryzowanej architektury MCP.
Budujesz narzędzia zasilane AI, które muszą łączyć się z Twoją infrastrukturą? Pomagamy zespołom projektować i implementować integracje MCP. Umów bezpłatną konsultację
Często Zadawane Pytania o MCP
Czym jest Model Context Protocol (MCP)?
MCP to otwarty standard, pierwotnie stworzony przez Anthropic, a obecnie zarządzany przez Linux Foundation, który definiuje, jak modele AI łączą się z zewnętrznymi narzędziami, źródłami danych i usługami. Standaryzuje warstwę integracji, więc jeden serwer MCP działa z każdym kompatybilnym modelem, jak uniwersalna wtyczka dla AI.
Jak działa MCP?
MCP używa trzyczęściowej architektury: aplikacja hosta (jak Claude Desktop lub Cursor), klient MCP wewnątrz hosta, który zarządza połączeniami, oraz serwery MCP, które udostępniają narzędzia i dane. Cała komunikacja wykorzystuje wiadomości JSON-RPC 2.0 przez stdio (lokalnie) lub Streamable HTTP (zdalnie).
Do czego służy MCP?
Typowe przypadki użycia obejmują łączenie asystentów AI z bazami danych (Postgres, MySQL), integrację z platformami kodu (GitHub, GitLab), dostęp do narzędzi SaaS (Slack, Notion, Google Drive) oraz budowanie autonomicznych agentów AI, które muszą interagować z usługami świata rzeczywistego.
Czy MCP jest tym samym co wywoływanie funkcji?
Nie. Wywoływanie funkcji jest specyficzne dla modelu (format OpenAI różni się od Anthropic) i per-żądanie – wysyłasz schematy narzędzi z każdym wywołaniem API. MCP to standaryzowany protokół, który działa across modeli, wspiera odkrywanie narzędzi i obejmuje zasoby oraz prompty poza samym wykonaniem funkcji.
Czym są serwery MCP?
Serwery MCP to programy, które udostępniają narzędzia, zasoby i prompty modelom AI przez protokół MCP. Opakowują zewnętrzne API i źródła danych w standaryzowany interfejs. Przykłady obejmują serwer GitHub MCP (do zarządzania PR i issue) oraz serwer Postgres MCP (do zapytań do bazy danych).
Jak zbudować serwer MCP?
Użyj Pythona z FastMCP (pip install fastmcp) lub TypeScript z oficjalnym SDK (npm install @modelcontextprotocol/sdk). Zdefiniuj swoje narzędzia jako dekorowane funkcje (Python) lub zarejestrowane handlery (TypeScript), a następnie uruchom serwer. Zobacz sekcję tutoriala powyżej dla kompletnego działającego kodu lub skorzystaj z naszego przewodnika krok po kroku budowania serwera MCP od zera dla pełnego walkthrough.
Czy MCP jest bezpieczne?
Sam protokół wspiera OAuth 2.1 do uwierzytelniania i scoped permissions. Jednak badania Astrix Security wykazały, że 88% istniejących implementacji serwerów MCP polega na statycznych sekretach zamiast OAuth. Protokół jest bezpieczny z założenia, ale większość wdrożeń w świecie rzeczywistym jeszcze nie nadążyła.
Jakie LLM wspierają MCP?
Claude ma natywne wsparcie MCP od jego stworzenia w listopadzie 2024 roku. ChatGPT dodało wsparcie w marcu 2025, a Gemini podążyło w kwietniu 2025. Modele open-source mogą używać MCP przez adaptery w LangChain i LlamaIndex.
Jaka jest różnica między MCP a REST API?
REST API są zaprojektowane do ogólnej komunikacji usługa-do-usługi. MCP jest zaprojektowane specjalnie do interakcji z modelem AI – obejmuje odkrywanie narzędzi, negocjację schematów, dostęp do zasobów i szablony promptów, których REST nie posiada. Nie zastępowałbyś swoich REST API przez MCP; służą różnym warstwom.
Kto teraz utrzymuje MCP?
Agentic AI Foundation (AAIF) Linux Foundation, utworzona w grudniu 2025 roku, zarządza MCP. Została współzałożona przez Anthropic, Block i OpenAI. To neutralne wobec dostawców zarządzanie jest kluczowym powodem, dla którego przedsiębiorstwa adoptują MCP.
Czym jest Streamable HTTP w MCP?
Streamable HTTP to mechanizm transportu produkcyjnego dodany w aktualizacji specyfikacji MCP z 2025 roku. Zastępuje starszy transport HTTP+SSE czystszym designem: klienci wysyłają żądania HTTP POST, a serwery mogą odpowiadać synchronicznie lub przez streaming SSE. Działa za load balancerami i wspiera standardowe uwierzytelnianie HTTP.
Ile istnieje serwerów MCP?
Linux Foundation cytowało ponad 10 000 aktywnych serwerów i 97 milionów miesięcznych pobrań SDK, gdy MCP zostało przekazane do AAIF w grudniu 2025 roku. Ekosystem obejmuje bazy danych, narzędzia kodu, integracje SaaS, wyszukiwarki i dostawców infrastruktury chmurowej.
Podsumowanie
MCP przeszło drogę od open-source'owego eksperymentu Anthropic do branżowego standardu protokołu łączenia modeli AI z narzędziami w nieco ponad rok. Oto co ważne:
- MCP rozwiązuje problem M x N, jeden serwer działa z każdym kompatybilnym modelem, jeden klient działa z każdym serwerem
- Możesz zbudować działający serwer MCP w mniej niż 50 linii Pythona (FastMCP) lub TypeScript
- Używaj stdio do developmentu, Streamable HTTP do produkcji, wybór transportu jest prosty
- Zabezpiecz swoje serwery OAuth 2.1 – 88% obecnych implementacji tego nie robi, a to realne ryzyko
- Ekosystem jest gotowy do produkcji – 10 000+ serwerów, wszystkie główne LLM, neutralne wobec dostawców zarządzanie pod Linux Foundation
Patrząc w przyszłość, roadmapa na 2026 rok koncentruje się na komunikacji agent-do-agenta przez nowy prymityw Tasks, ulepszonym bezpieczeństwie enterprise i MCP Apps dla interaktywnego UI sterowanego przez serwer. MCP nie jest już tylko protokołem dostępu do narzędzi, staje się warstwą infrastrukturalną dla agentowego AI.
Zacznij od kodu tutoriala powyżej, przetestuj go w MCP Inspector i połącz z Claude Desktop. Będziesz miał działającą integrację MCP w mniej niż godzinę.
Źródła
- Specyfikacja MCP (2025-11-25)
- Specyfikacja Autoryzacji MCP
- Specyfikacja Transportów MCP
- Dokumentacja MCP Inspector
- Wprowadzenie Model Context Protocol, Anthropic
- Przekazanie MCP do Linux Foundation, Anthropic
- Ogłoszenie AAIF Linux Foundation
- Wsparcie MCP Google Cloud
- FastMCP Python SDK
- MCP TypeScript SDK
- Astrix Security: Stan Bezpieczeństwa Serwerów MCP 2025
- Roadmapa MCP 2026