Najlepsze praktyki MCP: budżet kontekstu, szybkość i agenci równolegli
Najlepsze praktyki MCP utrzymują konfigurację serwerów w ryzach: pomiar kosztu kontekstu każdego serwera, limity i zawężanie wyników narzędzi, przypięte wersje, osobny profil MCP oraz osobny stan przeglądarki i bazy dla każdego agenta równoległego, a także test tylko do odczytu dla każdego serwera. W 2026 roku wyniki narzędzi kosztują więcej kontekstu niż ich schematy.
Czterej agenci pracują w czterech worktree. Dwaj padają jednocześnie, bo walczą o ten sam profil przeglądarki Playwright. Trzeci wykonał migrację bazy, ale jego serwer Postgres wciąż zwraca stary schemat. Czwarty wciągnął do kontekstu 400-liniowy log z Actions i zgubił plan, który realizował. Żaden z tych serwerów nie jest zepsuty. To konfiguracja, która działała dla jednego agenta, a nikt jej nie dostroił dla czterech. Ta strona jest dla developerów i tech leadów, którzy za tę konfigurację odpowiadają.
Co daje dostrojona konfiguracja MCP
Dział zatytułowany „Co daje dostrojona konfiguracja MCP”- Sposób na zmierzenie kosztu kontekstu każdego serwera w Claude Code i Codeksie zamiast zgadywania.
- Przełączniki, które ograniczają rozmiar wyników i liczbę narzędzi:
MAX_MCP_OUTPUT_TOKENS,enabled_tools, adresy zestawów narzędzi GitHuba. - Przypięte wersje serwerów i timeouty, dzięki którym wolne pobieranie przez
npxnie udaje zepsutego serwera. - Osobne profile MCP dla agentów równoległych:
--mcp-configz--strict-mcp-configw Claude Code,--profilew Codeksie oraz odizolowany stan przeglądarki i bazy. - Test zdrowia do wklejenia, uruchomienia lokalnie i powtórzenia w CI oraz tabelę awarii z poprawką dla każdego objawu.
Jeśli konfigurujesz MCP po raz pierwszy, zacznij od startowego zestawu MCP. Gdy serwer w ogóle się nie łączy, zajrzyj do problemów z połączeniem serwerów MCP.
Ile kontekstu kosztują serwery MCP w 2026 roku?
Dział zatytułowany „Ile kontekstu kosztują serwery MCP w 2026 roku?”Koszt się przesunął. Claude Code (sprawdzone na 2.1.283; działa też na kanale stable) i Codex (0.157.1, od wersji 0.143.0) ładują schematy narzędzi MCP przez wyszukiwanie narzędzi (tool search), domyślnie włączone: agent widzi indeks do przeszukania i pobiera pełną definicję narzędzia dopiero wtedy, gdy jej potrzebuje. Dziesięć podłączonych serwerów nie oznacza już dziesięciu pełnych zrzutów schematów w każdym żądaniu.
Okno kontekstu wciąż zapełniają wyniki narzędzi. Zrzut schematu bazy, pełny log CI, lista 30 zgłoszeń czy snapshot strony trafiają do kontekstu i zostają tam, dopóki sesja nie zostanie skompaktowana albo zakończona. Dlatego poniższe zasady dotyczą głównie wyników, a nie liczby serwerów. Sposobu ładowania w Cursorze nie udało się zweryfikować na potrzeby tej strony (cursor.com był niedostępny 2026-09-26), więc w Cursorze trzymaj krótką listę serwerów i wyłączaj to, czego bieżące zadanie nie potrzebuje.
Ekosystem jest na tyle duży, że pokusa „zainstaluję wszystko, co wygląda przydatnie” jest realna. Na 2026-09-26 oficjalny MCP Registry, wciąż w wersji preview i bez kontroli jakości poza weryfikacją przestrzeni nazw, zawiera 36 176 serwerów (liczba z API rejestru). Instaluj pod zadanie, które masz przed sobą.
Zmierz serwer, zanim go zostawisz
Dział zatytułowany „Zmierz serwer, zanim go zostawisz”# W terminalu: wszystkie skonfigurowane serwery, zatwierdzone z testem połączeniaclaude mcp listclaude mcp get githubUruchom /context w świeżej sesji, wykonaj jedno typowe zadanie, które używa serwera, i uruchom /context jeszcze raz. Różnica to koszt serwera na jedno zadanie. Dla serwera zainstalowanego jako plugin claude plugin details NAZWA_PLUGINU pokazuje listę komponentów pluginu i przewidywany koszt w tokenach. Serwery MCP, które plugin dodaje, zmierz przez /context przed zadaniem i po nim, jak wyżej, bo schematy narzędzi ładują się na żądanie przez wyszukiwanie narzędzi.
# W terminalu: skonfigurowane serwery i to, czy każdy jest włączonycodex mcp listcodex mcp get githubW TUI /mcp wypisuje skonfigurowane narzędzia MCP, a /mcp verbose dodaje szczegóły. Porównaj zużycie tokenów raportowane przez sesję przed jednym typowym zadaniem i po nim.
Serwery są w .cursor/mcp.json (projekt) albo ~/.cursor/mcp.json (globalnie). Ustawienia Cursora pokazują każdy skonfigurowany serwer i pozwalają go wyłączyć bez usuwania wpisu. Aktualną ścieżkę w menu sprawdź w dokumentacji MCP Cursora, której nie udało się ponownie przeczytać na potrzeby tej strony.
Jak utrzymać małe wyniki narzędzi MCP?
Dział zatytułowany „Jak utrzymać małe wyniki narzędzi MCP?”Kosztem są wyniki, więc kontrolujesz je na trzech poziomach: limitu po stronie klienta, listy narzędzi serwera i promptu.
-
Ogranicz pojedynczy wynik po stronie klienta. W Claude Code
MAX_MCP_OUTPUT_TOKENSustawia górną granicę jednego wyniku narzędzia MCP; gdy jej nie ustawisz, binarka 2.1.283 przyjmuje 25 000 tokenów. Obniż ją w sesji, która ma zostać oszczędna:MAX_MCP_OUTPUT_TOKENS=8000 claude. Limit to siatka bezpieczeństwa, nie filtr: wynik, który w niego uderza, i tak jest złym wynikiem, więc popraw też prompt albo narzędzie. -
Udostępniaj mniej narzędzi z serwera. Codex filtruje narzędzia po stronie klienta przez
enabled_toolsalbodisabled_toolswe wpisie serwera wconfig.toml. Wiele serwerów samo się zawęża: zdalny serwer GitHuba przyjmuje adresy per zestaw narzędzi i tylko do odczytu, na przykładhttps://api.githubcopilot.com/mcp/x/actions/readonly.# ~/.codex/config.toml (sparsowane przez codex mcp get na 0.157.1;# nazwy narzędzi z README github/github-mcp-server, odczyt 2026-09-26)[mcp_servers.github]url = "https://api.githubcopilot.com/mcp/"bearer_token_env_var = "GITHUB_PAT"enabled_tools = ["issue_read", "list_pull_requests", "pull_request_read"]tool_timeout_sec = 60 -
Zawęź pytanie. „Pokaż schemat bazy” zwraca wszystkie tabele. „Pokaż tabele
usersiordersoraz klucze obce między nimi” zwraca dwie. „Przeczytaj nieudany log z Actions” zwraca setki linii; „zwróć tylko nazwy nieudanych testów i pierwszą linię błędu każdego” zwraca dziesięć. -
Przenieś obszerne wyszukiwanie do subagenta. Subagent wydaje własny kontekst na surowe wyniki i zwraca tylko podsumowanie. Wzorzec, który zamienia serwer z dużą liczbą narzędzi w kod ładowany na żądanie, opisuje strona jak obniżyć koszt tokenów MCP.
Jak sprawić, by serwery MCP startowały szybko i działały u wszystkich tak samo?
Dział zatytułowany „Jak sprawić, by serwery MCP startowały szybko i działały u wszystkich tak samo?”Większość zgłoszeń „serwer jest wolny” to pobieranie przy pierwszym uruchomieniu, a nie wolny serwer. Nieprzypięte npx -y pakiet@latest rozwiązuje wersję i może pobrać nowe wydanie przy starcie sesji, a do tego potrafi zmienić zestaw narzędzi między poniedziałkiem a wtorkiem.
- Przypinaj wersje w
args.@playwright/mcp@0.0.82(Playwright MCP) albo@upstash/context7-mcp@4.1.1(Context7), a nie@latest. Serwery pythonowe uruchamiane przezuvxprzypinasz tak samo:uvx postgres-mcp@0.3.0(Postgres MCP Pro i inne serwery baz danych). Podbijaj wersje w przeglądanym pull requeście, jak każdą zależność. - Rozgrzej cache raz. Uruchom przypiętą komendę w terminalu przed pierwszą sesją dnia, żeby pobieranie odbyło się poza oknem startowym agenta.
- Ustawiaj timeouty świadomie. W Claude Code
MCP_TIMEOUT(start serwera) iMCP_TOOL_TIMEOUT(jedno wywołanie narzędzia) przyjmują milisekundy, na przykładMCP_TIMEOUT=20000 claude. W Codeksie ustawstartup_timeout_secitool_timeout_secwe wpisie[mcp_servers.NAZWA]. Prośba w prompcie, żeby agent „poczekał dłużej”, niczego nie zmienia: timeout egzekwuje klient. - Przeładuj po zmianie schematu. Serwer bazy, który trzyma metadane w cache, po migracji wciąż raportuje stary schemat. W Claude Code otwórz
/mcpi połącz serwer ponownie. W Codeksie zacznij nową sesję; konfiguracja jest wczytywana przy starcie. W Cursorze zrestartuj serwer w jego ustawieniach MCP.
Jak bezpiecznie uruchamiać serwery MCP dla agentów równoległych?
Dział zatytułowany „Jak bezpiecznie uruchamiać serwery MCP dla agentów równoległych?”Konfiguracja, która wystarcza jednemu agentowi, psuje się przy czterech, bo część stanu MCP jest wspólna dla maszyny albo konta, a nie dla worktree. Daj każdemu agentowi osobny profil i osobne zasoby ze stanem.
| Wspólny zasób | Co się psuje | Izolacja |
|---|---|---|
| Profil przeglądarki (Playwright MCP) | Trwały profil otwiera się naraz tylko w jednej przeglądarce, więc drugi agent pada | --isolated (profil w pamięci) albo osobny --user-data-dir dla każdego agenta |
| Baza za serwerem bazodanowym | Agent A robi migrację, serwer agenta B czyta zmieniony schemat albo dane | Jedna baza na worktree, przekazana przez zmienną środowiskową |
| Token API i jego limit | Czterej agenci na jednym PAT GitHuba dzielą jeden budżet: 5000 żądań na godzinę w osobistym limicie użytkownika (dokumentacja GitHub REST, odczyt 2026-09-26) | Zawężone prompty, adresy zestawów tylko do odczytu i gh do masowych odczytów |
| Sama lista serwerów | Agent od review może pisać do Jiry, bo potrzebował jej agent od implementacji | Profil MCP per agent tylko z serwerami, których wymaga jego zadanie |
Daj każdemu agentowi osobny profil MCP
Dział zatytułowany „Daj każdemu agentowi osobny profil MCP”Trzymaj jeden plik JSON na rolę i uruchamiaj każdego agenta tylko z tym plikiem. --strict-mcp-config ignoruje każdą inną konfigurację MCP, w tym projektowy .mcp.json i serwery z zakresu użytkownika.
# W terminalu, w worktree recenzentaclaude --mcp-config mcp-profiles/review.json --strict-mcp-config{ "mcpServers": { "github": { "type": "http", "url": "https://api.githubcopilot.com/mcp/x/pull_requests/readonly", "headers": { "Authorization": "Bearer ${GITHUB_PAT}" } } }}Uruchom sesję i wpisz /mcp: serwer powinien być połączony, co przy okazji potwierdza, że ${GITHUB_PAT} został podstawiony. Projektowy .mcp.json obsługuje podstawianie ${VAR} i ${VAR:-default}, więc jeden zacommitowany plik może kierować każdy worktree do jego własnych zasobów:
{ "mcpServers": { "playwright": { "command": "npx", "args": ["-y", "@playwright/mcp@0.0.82", "--isolated"] }, "postgres": { "command": "uvx", "args": ["postgres-mcp@0.3.0", "--access-mode=restricted"], "env": { "DATABASE_URI": "${DATABASE_URI}" } } }}-p NAZWA nakłada $CODEX_HOME/NAZWA.config.toml na konfigurację bazową. Ciężkie serwery i te z prawem zapisu trzymaj wyłączone w pliku bazowym i włączaj je per profil:
[mcp_servers.playwright]command = "npx"args = ["-y", "@playwright/mcp@0.0.82", "--isolated"]enabled = false[mcp_servers.playwright]enabled = true# W terminalu: agent sprawdzający UI dostaje przeglądarkę, pozostali niecodex -p browser# Jednorazowe nadpisanie dla pojedynczego uruchomieniacodex -c mcp_servers.github.enabled=falseObie formy sprawdzono przez codex mcp list na 0.157.1.
Każdy worktree otwarty jako osobny workspace czyta własny .cursor/mcp.json, więc plik w worktree jest profilem. Dodaj --isolated do args Playwrighta i daj każdemu worktree własny adres bazy. Dokumentacja Cursora opisuje podstawianie ${env:NAZWA} w mcp.json (źródło wtórne: fragment cursor.com/docs/mcp); potwierdź to na swojej wersji, zanim na tym oprzesz konfigurację.
Samo przygotowanie worktree opisuje strona o agentach równoległych.
Zamień wt-api-2 na nazwę bazy, której powinien używać twój worktree.
Jak zespół ma współdzielić jedną konfigurację MCP?
Dział zatytułowany „Jak zespół ma współdzielić jedną konfigurację MCP?”Commituj konfigurację, nigdy poświadczeń, i wyznacz jedną osobę jako właściciela pliku.
- Claude Code: commituj
.mcp.jsonw katalogu głównym repozytorium (nie.claude/mcp.json) z odwołaniami${VAR}.claude mcp add --scope projectzapisze go za ciebie. Każdy developer zatwierdza serwery projektowe przy pierwszym użyciu;claude mcp listpokazuje niezatwierdzone jako oczekujące, aclaude mcp reset-project-choicesczyści wcześniejsze decyzje. - Codex: serwery są w
~/.codex/config.toml. Trzymaj w repozytorium przejrzany fragment (na przykładdocs/codex-mcp.toml), który developerzy wklejają, z tokenami czytanymi przezbearer_token_env_var,env_http_headersalboenv. Tabelaheaders = {…}jest po cichu ignorowana; właściwe klucze tohttp_headers,env_http_headersibearer_token_env_var. - Cursor: commituj
.cursor/mcp.jsonz tymi samymi serwerami i przypiętymi wersjami. - Własność: umieść pliki konfiguracji w
CODEOWNERS, żeby dodanie serwera albo podbicie wersji wymagało przeglądu tech leada. Listy dozwolonych serwerów dla całej organizacji należą do strony rejestry i bramki MCP; zakresy tokenów i obrona przed prompt injection do strony bezpieczeństwo MCP.
Notka wdrożeniowa w CONTRIBUTING (przewodniku dla kontrybutorów) potrzebuje czterech linii: serwery i przypięte wersje, zakresy tokenów dla każdego z nich, zmienne środowiskowe do ustawienia i poniższy prompt testu zdrowia.
Jak udowodnić, że konfiguracja MCP działa, bez czytania każdego wywołania narzędzia?
Dział zatytułowany „Jak udowodnić, że konfiguracja MCP działa, bez czytania każdego wywołania narzędzia?”Sprawdzasz dowody, które skrypt albo człowiek może porównać, a nie transkrypty.
-
Uruchom test zdrowia. Poniższy prompt wywołuje jedno narzędzie tylko do odczytu na serwer i zwraca PASS albo FAIL z identyfikatorem do potwierdzenia, na przykład numerem PR albo liczbą tabel. Konfiguracja nowego developera jest gotowa, gdy każdy wiersz przechodzi.
-
Zapisz koszt kontekstu w pull requeście, który dodaje serwer. Wklej liczby z
/contextsprzed jednego typowego zadania i po nim. Recenzent zatwierdza koszt, a nie wrażenie. -
Porównuj przypięte wersje. Podbicia wersji przychodzą jako diff konfiguracji objęty
CODEOWNERS, więc zmieniony zestaw narzędzi przechodzi przegląd, zanim trafi do czyjejkolwiek sesji. -
Powtarzaj test w CI z zaufanego checkoutu. Uruchamiaj go według harmonogramu z gałęzi domyślnej, nigdy na kodzie z niezaufanego pull requesta.
--strict-mcp-configsprawia, że zadanie ładuje tylko profil CI, a nie.mcp.json, który kontrybutor mógłby zmienić:Okno terminala # W CI, z checkoutu gałęzi domyślnejclaude -p "$(cat ci/mcp-health-prompt.txt)" \--mcp-config ci/mcp-readonly.json --strict-mcp-config \--allowedTools "mcp__github" "mcp__postgres"Codex realizuje ten sam pomysł przez profil:
codex -p ci-readonly exec "$(cat ci/mcp-health-prompt.txt)". Profil CI trzymaj tylko do odczytu i daj zadaniu token wyłącznie z zakresami do odczytu. Plik z promptem dla CI to poniższy prompt bez linii o przeglądarce, bo profil CI ładuje tylko GitHuba i Postgresa.
Gdy strojenie MCP zawodzi: objawy i poprawki
Dział zatytułowany „Gdy strojenie MCP zawodzi: objawy i poprawki”| Objaw | Prawdopodobna przyczyna | Wyjście z sytuacji |
|---|---|---|
| Agent gubi plan w połowie pracy | Jeden duży wynik narzędzia zapełnił kontekst | /compact albo nowa sesja; obniż MAX_MCP_OUTPUT_TOKENS; przepisz prompt tak, by prosił o przefiltrowane wyniki |
| Przeglądarka drugiego agenta równoległego nie startuje | Dwaj agenci dzielą jeden trwały profil Playwrighta | Dodaj --isolated do args Playwrighta w każdym profilu |
| Serwer bazy pokazuje kolumnę, którą usunąłeś | Serwer zapisał schemat w cache przed migracją | Połącz serwer ponownie (/mcp w Claude Code) albo zacznij nową sesję Codeksa |
| Narzędzie wskazane w prompcie „nie istnieje” | Wersja serwera zmieniła się pod nieprzypiętym @latest albo odfiltrowuje je enabled_tools | Przypnij wersję; sprawdź filtr przez codex mcp get NAZWA |
| Pierwsze wywołanie dnia kończy się timeoutem | Pobieranie pakietu przy pierwszym uruchomieniu w oknie startowym | Rozgrzej cache w terminalu; podnieś MCP_TIMEOUT albo startup_timeout_sec |
| Agent wywołuje narzędzie niewłaściwego serwera | Dwa serwery udostępniają podobne narzędzia | Nazwij serwer w prompcie albo usuń jeden z profilu tego agenta |
| Przy agentach równoległych wywołania GitHuba zaczynają padać w trakcie pracy | Wspólny PAT wyczerpał godzinowy limit | Zawęź prompty, używaj gh do masowych odczytów i daj zadaniom w tle własny token GitHub App |
| Lokalnie działa, w CI nie | CI nie ma tokenów, ma inną sieć albo ładuje inną konfigurację | Osobny profil CI z --strict-mcp-config i sekretami tylko do odczytu |
| Agent kolegi widzi inne narzędzia | Niezatwierdzone albo nieprzypięte serwery projektowe | claude mcp list, żeby sprawdzić zatwierdzenie; przypnij wersje w zacommitowanym pliku |
Jeśli serwer w ogóle się nie łączy, najpierw przejdź przez problemy z połączeniem serwerów MCP. Jeśli wynik wygląda tak, jakby niósł polecenia dla agenta, potraktuj go jako próbę prompt injection i postępuj według strony bezpieczeństwo MCP.