Wprowadzenie do Model Context Protocol
Model Context Protocol (MCP) to otwarty standard, dzięki któremu agent kodujący, taki jak Claude Code, Codex czy Cursor, wywołuje zewnętrzne narzędzia i czyta dane na żywo: pull requesty z GitHuba, błędy z Sentry, zgłoszenia z Lineara, przeglądarkę, bazę danych. We wrześniu 2026 większość serwerów wartych dodania to zdalne serwery hostowane przez dostawców, z logowaniem OAuth, a każdy serwer to nowa granica zaufania.
Ta strona jest dla programistów, którzy dodają pierwsze serwery, i dla tech leadów, którzy decydują, z których zespół może korzystać. Sytuacja, którą rozwiązuje: ktoś wkleił JSON serwera do README, połowa zespołu uruchamia go z prawem zapisu, nikt nie wie, z jakiego pakietu naprawdę pochodzi, a agent właśnie zmienił zgłoszenie na produkcji.
Co wyniesiesz z tego przeglądu MCP
Dział zatytułowany „Co wyniesiesz z tego przeglądu MCP”- Co zmieniło się w 2026: bezstanowa specyfikacja 2026-07-28, którzy klienci ją obsługują i przejście na zdalne serwery z OAuth.
- Plik konfiguracyjny i polecenie dla każdego agenta, sprawdzone na Claude Code 2.1.283 i codex-cli 0.157.1.
- Jeden zdalny serwer (Sentry) dodany i zalogowany we wszystkich trzech agentach.
- Czterokrokowy proces zespołowy: ocena, zawężenie do odczytu, dodanie w zakresie projektu, przegląd w PR.
- Dwa prompty do skopiowania: jeden ocenia kandydata na serwer, drugi audytuje to, co już jest podłączone.
Jak działa MCP w 2026 roku
Dział zatytułowany „Jak działa MCP w 2026 roku”Host MCP to twój agent. Utrzymuje po jednym połączeniu klienta z każdym serwerem, a każdy serwer udostępnia narzędzia (akcje), zasoby (dane) i prompty. Agent czyta nazwę i opis każdego narzędzia, sam decyduje, kiedy je wywołać, i dostaje ustrukturyzowany wynik, który staje się kontekstem kolejnego kroku.
Serwer łączy się z agentem jednym z dwóch transportów:
- stdio: agent uruchamia serwer jako lokalny proces (
npx,uvx,docker run). Wybierz go dla lokalnych plików, lokalnej bazy albo serwera bez wersji hostowanej. - Streamable HTTP: serwer działa pod adresem URL i zwykle uwierzytelnia przez OAuth. Własne hostowane serwery udostępniają m.in. GitHub, Figma, Sentry, Linear, Atlassian, Notion, Supabase, Vercel, Stripe, Cloudflare, Datadog, PostHog, Slack i GitLab. Starszy transport HTTP+SSE jest przestarzały; nie wybieraj go w nowych konfiguracjach.
MCP stworzył Anthropic, który 2025-12-09 przekazał protokół fundacji Agentic AI Foundation (AAIF).
Co zmieniła specyfikacja MCP 2026-07-28?
Dział zatytułowany „Co zmieniła specyfikacja MCP 2026-07-28?”Aktualna wersja specyfikacji to 2026-07-28. Ta wersja sprawia, że protokół jest bezstanowy: znika handshake initialize i nagłówek Mcp-Session-Id, serwery muszą odpowiadać na server/discover, a Tasks przeniesiono do rozszerzenia. Oznacza jako przestarzałe Roots, Sampling i Logging oraz Dynamic Client Registration, którą zastępują Client ID Metadata Documents.
Nie wszyscy klienci nadążyli, więc to, jaki protokół dostajesz, zależy od agenta:
| Agent | Obsługuje 2026-07-28? | Sprawdzono |
|---|---|---|
| Claude Code | Tak, negocjuje go domyślnie z bezpośrednimi serwerami HTTP we wszystkich instalacjach od v2.1.274. Wyłączenie: MCP_PROTOCOL_NEGOTIATION=legacy | changelog, 2026-09-26 |
| Codex | Nie. Funkcja mcp_2026_07_28 ma status under development i jest wyłączona, więc połączenia używają starszego protokołu | codex features list, codex-cli 0.157.1 |
| Cursor | Niesprawdzone: 2026-09-26 cursor.com był nieosiągalny ze środowiska, w którym powstał ten tekst | — |
Serwer, który obsługuje wyłącznie nową wersję, może więc działać w Claude Code i nie działać w Codeksie. Zmiany po stronie serwera opisuje MCP 2026-07-28: co się zmieniło i jak zmigrować serwer.
Czy oficjalny rejestr MCP to wyselekcjonowana lista?
Dział zatytułowany „Czy oficjalny rejestr MCP to wyselekcjonowana lista?”Nie. Official MCP Registry wciąż jest w wersji preview (API zamrożone na v0.1 od 2025-10-24). Zliczony przez API 2026-09-26 zawierał od 36 176 do 36 184 serwerów w najnowszych wersjach (liczba zmienia się co godzinę). Jedynym filtrem jest weryfikacja przestrzeni nazw. Kilka wpisów */github, */figma i */sentry pochodzi od wydawców niezwiązanych z tymi firmami. Używaj rejestru, żeby potwierdzić, kto publikuje serwer, a przed instalacją przeczytaj README samego dostawcy. Dopuszczanie serwerów w organizacji opisuje Rejestry i bramki MCP.
Gdzie każdy agent przechowuje serwery MCP
Dział zatytułowany „Gdzie każdy agent przechowuje serwery MCP”Każdy z trzech agentów czyta inny plik i każdy inaczej zawodzi, gdy użyjesz składni innego agenta.
| Claude Code | Codex | Cursor | |
|---|---|---|---|
| Zakres projektu (commitujesz) | .mcp.json w katalogu głównym repo | .codex/config.toml, czytany tylko w zaufanym projekcie | .cursor/mcp.json |
| Zakres osobisty | claude mcp add (domyślny zakres local, per projekt w ~/.claude.json) lub --scope user | ~/.codex/config.toml (tam zapisuje codex mcp add) | ~/.cursor/mcp.json |
| Serwer zdalny | claude mcp add --transport http NAZWA URL | codex mcp add NAZWA --url URL | "url": "…" w mcpServers |
| Logowanie | /mcp w sesji albo claude mcp login NAZWA | codex mcp login NAZWA | w ustawieniach MCP Cursora, gdy serwer o to poprosi |
| Sprawdzenie | claude mcp list, claude mcp get NAZWA | codex mcp list, codex mcp get NAZWA --json | status serwera w ustawieniach MCP Cursora |
Polecenia z kolumn Claude Code i Codex sprawdzono 2026-09-26 na Claude Code 2.1.283 i codex-cli 0.157.1, łącznie z zachowaniem .codex/config.toml w zaufanym projekcie. Kształty plików Cursora pochodzą z README dostawców (GitHub, Context7, Sentry) i nie były testowane w Cursorze.
Dodaj zdalny serwer MCP we wszystkich trzech agentach
Dział zatytułowany „Dodaj zdalny serwer MCP we wszystkich trzech agentach”Hostowany serwer Sentry dobrze nadaje się na pierwszy zdalny serwer: używa OAuth, nie wymaga klucza API w pliku, a jego adres jest przykładem, który drukuje samo claude mcp add --help. W Official MCP Registry figuruje jako io.github.getsentry/sentry-mcp (0.42.0), a repozytorium miało 862 gwiazdki (getsentry/sentry-mcp na GitHubie, odczyt 2026-09-26).
Uruchom w terminalu w katalogu głównym repo:
claude mcp add --transport http --scope project sentry https://mcp.sentry.dev/mcpPolecenie zapisuje ten wpis w .mcp.json:
{ "mcpServers": { "sentry": { "type": "http", "url": "https://mcp.sentry.dev/mcp" } }}Uruchom claude, wpisz /mcp, wybierz sentry i dokończ logowanie w przeglądarce (albo uruchom claude mcp login sentry w terminalu). Serwer z .mcp.json ma w claude mcp list status Pending approval, dopóki go nie zatwierdzisz; po zatwierdzeniu claude mcp list sprawdza jego stan i pokazuje go jako połączony.
Uruchom w terminalu:
codex mcp add sentry --url https://mcp.sentry.dev/mcpcodex mcp login sentrycodex mcp add zapisuje serwer w ~/.codex/config.toml i podpowiada uruchomienie codex mcp login. codex mcp list pokazuje wiersz sentry z kolumnami Status i Auth. Żeby udostępnić serwer całemu zespołowi, wstaw tę samą tabelę do .codex/config.toml w repo:
[mcp_servers.sentry]url = "https://mcp.sentry.dev/mcp"Codex czyta ten plik dopiero wtedy, gdy oznaczysz projekt jako zaufany.
Dodaj do .cursor/mcp.json w repo (albo do ~/.cursor/mcp.json dla wszystkich projektów):
{ "mcpServers": { "sentry": { "url": "https://mcp.sentry.dev/mcp" } }}Otwórz ustawienia MCP w Cursorze, znajdź sentry i zaloguj się, gdy serwer poprosi o uwierzytelnienie. Ten kształt pochodzi z README dostawców i nie był testowany w Cursorze.
Potem daj agentowi zadanie tylko do odczytu i obserwuj, które narzędzia wywołuje:
Zobaczysz wywołania w rodzaju search_issues, potem pobranie szczegółów zgłoszenia, a na końcu odczyt lokalnych plików. Jeśli agent edytuje kod albo wywołuje narzędzie, które zmienia zgłoszenie, twoje ograniczenie do odczytu (niżej) ma lukę.
Proces zespołowy dodawania serwerów MCP
Dział zatytułowany „Proces zespołowy dodawania serwerów MCP”Serwer dodany przez jedną osobę do osobistej konfiguracji to eksperyment. Serwer w repo to zależność, którą dziedziczy każdy członek zespołu i każda sesja agenta, więc przechodzi tę samą ścieżkę co nowy pakiet.
-
Oceń serwer. Potwierdź wydawcę w Official MCP Registry i w README samego dostawcy, sprawdź dokładną nazwę pakietu w npm lub PyPI i wypisz jego narzędzia. Wiele wiarygodnie brzmiących nazw jest błędnych albo porzuconych; najczęstsze wymienia ramka z pułapkami poniżej. Wybieraj hostowany serwer dostawcy z OAuth zamiast wrappera społeczności.
-
Zawęź go do odczytu. Najpierw użyj przełącznika samego serwera; każdy zapisuje go inaczej. GitHub ma adres
/readonly, Supabaseread_only=true, Postgres MCP Pro--access-mode=restricted, Grafana--disable-write. Gdy serwer nie ma przełącznika, ogranicz narzędzia po stronie klienta: Codex przyjmujeenabled_toolsalbodisabled_toolsdla każdego serwera wconfig.toml, a Claude Code nazywa każde narzędziemcp__<serwer>__<narzędzie>, więc reguładenyw.claude/settings.jsonblokuje narzędzie zapisu. -
Dodaj go w zakresie projektu. Zacommituj
.mcp.json,.codex/config.tomlalbo.cursor/mcp.jsonbez żadnych poświadczeń w środku. Serwery zdalne logują każdego programistę osobno przez OAuth; serwer stdio czyta token ze zmiennej środowiskowej (--envw Codeksie,-ew Claude Code); serwer zdalny, który zamiast OAuth przyjmuje token, czyta go przez opcję Codeksabearer_token_env_var(--bearer-token-env-var). -
Przejrzyj go w PR. Obejmij te trzy pliki regułą
CODEOWNERS, żeby każdą zmianę zatwierdzał tech lead albo właściciel platformy. Recenzent sprawdza diff, a nie zachowanie agenta: wydawcę, nazwę i wersję pakietu, transport, przełącznik trybu odczytu i to, czy serwer sięga do danych, do których repo nie powinno mieć dostępu.
Wpis CODEOWNERS, który możesz przyjąć bez zmian (podmień nazwę zespołu):
# MCP servers are dependencies: platform owners approve every change/.mcp.json @acme/platform-owners/.codex/config.toml @acme/platform-owners/.cursor/mcp.json @acme/platform-ownersJak sprawdzić konfigurację MCP bez czytania każdego wywołania narzędzia
Dział zatytułowany „Jak sprawdzić konfigurację MCP bez czytania każdego wywołania narzędzia”Nie musisz śledzić każdego wywołania, żeby mieć dowód, że konfiguracja jest zgodna z zatwierdzoną. Dowodów dostarczają cztery kontrole:
- Konfiguracja jest taka, jaką zatwierdzono.
codex mcp get NAZWA --jsonwypisuje rozwiązany transport, URL, nagłówki i filtry narzędzi;claude mcp get NAZWAwypisuje zakres, typ, URL i status zatwierdzenia. Porównaj je z przejrzanym plikiem; na przykład kluczheaders = {…}w Codeksie jest po cichu pomijany i widać to tu jakohttp_headers: null. - Koszt kontekstu jest zmierzony. Uruchom
/contextw Claude Code przed dodaniem serwera i po nim. Dla skali: Cloudflare podaje około 244 tys. tokenów dla natywnych schematów swojego API wobec około 1 tys. dla trzynarzędziowego serwera Code Mode. Wyszukiwanie narzędzi (tool search) jest domyślnie włączone w Claude Code i w Codeksie, więc większość schematów ładuje się dopiero na żądanie, ale wyniki narzędzi i tak trafiają do kontekstu. Co zrobić z drogim serwerem, opisuje Jak obniżyć koszt tokenów MCP. - Konfiguracja jest przeskanowana. Snyk Agent Scan (
uvx snyk-agent-scan@latest, PyPI 0.6.4 w dniu 2026-09-26) skanuje konfiguracje MCP i skille pod kątem prompt injection i zatruwania narzędzi (tool poisoning). Wymaga tokenu API Snyka i uruchamia skanowane serwery stdio, więc niezaufane konfiguracje skanuj w piaskownicy. Pełną konfigurację pokazuje przewodnik po bezpieczeństwie MCP. - Agent raportuje swoje wywołania. Prompty na tej stronie kończą się poleceniem „list every MCP tool you called”. Wywołanie zapisujące w zadaniu tylko do odczytu to oblana kontrola, niezależnie od tego, jak wyglądał wynik.
Co się psuje, gdy dodajesz serwer MCP
Dział zatytułowany „Co się psuje, gdy dodajesz serwer MCP”Serwer w Claude Code nigdy się nie łączy. claude mcp add sentry https://mcp.sentry.dev/mcp bez --transport http kończy się sukcesem: Claude Code wypisuje tylko łatwe do przeoczenia ostrzeżenie i zapisuje serwer stdio, którego poleceniem jest adres URL (claude mcp list pokazuje potem Failed to connect — ENOENT). Usuń go przez claude mcp remove sentry i dodaj ponownie z --transport http. --url to flaga Codeksa; Claude Code odrzuca ją jako nieznaną opcję.
Codex ignoruje twój token. Tabela headers = {…} w config.toml jest pomijana. Użyj http_headers, env_http_headers albo bearer_token_env_var, a potem potwierdź przez codex mcp get NAZWA --json. codex mcp add --env działa tylko dla serwerów stdio.
Serwer działa w Claude Code, a w Codeksie nie. Codex 0.157.1 nie obsługuje MCP 2026-07-28. Sprawdź, które wersje protokołu obsługuje serwer; dopóki Codex nie wypuści tej funkcji, używaj wersji serwera, która wciąż obsługuje starszą rewizję.
Plik projektu jest ignorowany. Claude Code czyta .mcp.json w katalogu głównym repo, a nie .claude/mcp.json, i czeka na zatwierdzenie każdego serwera projektu. Codex ignoruje .codex/config.toml, dopóki projekt nie jest zaufany.
OAuth zawiesza się w przeglądarce. Callback trafia na lokalny port, który może blokować VPN albo firewall. Uruchom codex mcp login NAZWA --no-browser i dokończ logowanie, wklejając adres callbacku. W Claude Code serwer wymagający wcześniej zarejestrowanego adresu przekierowania przyjmuje --callback-port i --client-id w claude mcp add.
Agent wywołuje złe narzędzie. Za dużo serwerów to za dużo podobnych opisów narzędzi. Zanim zaczniesz przepisywać prompty, usuń serwery, których nie użyłeś od tygodnia. Pozostałe błędy opisuje Problemy z połączeniem serwera MCP.
Dokąd dalej z MCP
Dział zatytułowany „Dokąd dalej z MCP”Jeśli nie wiesz jeszcze, czy twój problem wymaga serwera MCP, skilla czy wtyczki, zacznij od przeglądu ekosystemu. Potem:
Szczegóły konfiguracji w poszczególnych narzędziach znajdziesz w konfiguracji MCP dla Claude Code, Codeksa i Cursora.