Przejdź do głównej zawartości

Jak obniżyć koszt tokenów MCP: Code Mode, context-mode i ścieżka CLI + skill

Obniżenie kosztu tokenów MCP polega na tym, by obszerne wyniki narzędzi i nieużywane definicje narzędzi nie trafiały do okna kontekstu agenta. W 2026 roku główne dźwignie to uruchamianie poleceń w piaskownicy zwracającej tylko podsumowanie (context-mode), serwery wykonujące kod, takie jak Cloudflare Code Mode, węższe adresy serwerów oraz zastąpienie serwera parą CLI + skill.

Prosisz agenta o uruchomienie testów. Wlewa do rozmowy 4000 linii wyjścia runnera, znajduje dwa błędy i je naprawia. Dwadzieścia minut później streszcza sesję przy kompaktowaniu i zapomina plan, według którego pracował, bo kontekst zapełnił się wynikami, których nikt nie musiał czytać.

Ta strona jest dla programistów prowadzących długie sesje z agentem i dla tech leadów, którzy odpowiadają za wspólną konfigurację MCP zespołu. Dopiero zaczynasz z MCP? Zacznij od przeglądu MCP i zestawu startowego, a wróć tu, gdy serwery będą już podłączone.

  • Sposób na zmierzenie, ile kosztuje każdy serwer i każda wtyczka w Claude Code, Codeksie i Cursorze.
  • context-mode zainstalowany we wszystkich trzech narzędziach i przebieg testów, po którym do kontekstu trafiają tylko błędy.
  • Przełączniki po stronie serwera, które zmniejszają wyniki: Cloudflare Code Mode, adresy toolsetów GitHuba i ?maxTokenBudget= w Microsoft Learn.
  • Trzy zamiany na CLI + skill (Playwright CLI, ctx7, mslearn) i generator dla serwerów, które własnego CLI nie mają.
  • Comiesięczny przegląd budżetu MCP, który zespół przeprowadzi w niecałą godzinę, razem z regułą akceptacji.

Koszt się przesunął. Claude Code i Codex ładują narzędzia MCP przez tool search, domyślnie włączone (dokumentacja Claude Code; Codex od 0.143.0). Agent widzi indeks nazw narzędzi i pobiera pełny schemat dopiero wtedy, gdy go potrzebuje. Dziesięć podłączonych serwerów nie oznacza już dziesięciu pełnych zrzutów schematów w każdym żądaniu. Sprawdź w ustawieniach MCP Cursora, ile narzędzi udostępnia każdy serwer; ta strona nie opisuje, jak Cursor je ładuje.

Okno wciąż zapełnia wyjście narzędzi: log z CI, snapshot strony, lista zgłoszeń, zrzut schematu bazy. Wynik zostaje w kontekście do kompaktowania albo końca sesji, a łańcuch wywołań przepycha przez model każdy wynik pośredni. Wpis inżynierów Anthropic „Code execution with MCP” (2025-11-04) opisuje rozwiązanie: model pisze kod, który wywołuje narzędzia, dane są filtrowane poza kontekstem, a wraca tylko wynik. W przykładzie z tego wpisu zużycie tokenów spadło ze 150 000 do 2000, co Anthropic podaje jako oszczędność 98,7%. To jeden przykład dostawcy, a nie benchmark, którego należy się spodziewać w twoim repozytorium.

Poniższe ścieżki stosują tę ideę na różnych warstwach:

ŚcieżkaCo usuwa z kontekstuKiedy po nią sięgnąć
Narzędzia piaskownicy context-modeSurowe wyjście poleceń, plików i pobrańTesty, logi, duże pliki, strony WWW
Serwery Code Mode (Cloudflare)Setki schematów narzędzi, po jednym na endpointJeden serwer obsługuje całe API platformy
Zawężone adresy serwerów (toolsety GitHuba, ?maxTokenBudget=)Nieużywane narzędzia, zbyt duże wynikiSerwer zostaje, ale używasz tylko jego części
CLI + skill (Playwright CLI, ctx7, mslearn)Sam serwer MCPDostawca wydaje CLI, które robi to samo

Limity rozmiaru wyniku (MAX_MCP_OUTPUT_TOKENS, enabled_tools w Codeksie) opisuje strona dobre praktyki MCP. To siatki bezpieczeństwa; ścieżki z tej strony zmieniają to, co agent w ogóle widzi.

Zmierz, zanim cokolwiek zmienisz, bo inaczej nie udowodnisz, że zmiana pomogła.

Uruchom świeżą sesję i wpisz /context. Wykonaj jedno reprezentatywne zadanie i znowu wpisz /context; różnica to koszt tego zadania. Dla wszystkiego, co zainstalowano jako wtyczkę, sprawdź stały koszt w terminalu:

Okno terminala
claude plugin details context-mode

W Claude Code 2.1.286 polecenie wypisuje listę komponentów i sekcję „Projected token cost”. Dla context-mode 1.0.169 pokazało około 972 tokenów stałego kosztu. Schematy narzędzi MCP są oznaczone jako „resolved at runtime; not counted”, więc łącz ten odczyt z /context.

Zapisz liczby: stan bazowy po świeżym starcie i koszt reprezentatywnego zadania. Comiesięczny przegląd opisany niżej porównuje się właśnie z nimi.

Trzymaj wyjście poleceń poza kontekstem dzięki context-mode

Dział zatytułowany „Trzymaj wyjście poleceń poza kontekstem dzięki context-mode”

context-mode to społecznościowy serwer MCP z hookami, który uruchamia polecenia i pobrania w podprocesie i wpuszcza do rozmowy tylko to, co skrypt wypisze. Jego narzędzia piaskownicy to ctx_execute, ctx_batch_execute, ctx_execute_file, ctx_index, ctx_search i ctx_fetch_and_index. W Claude Code hooki wtyczki kierują model do tych narzędzi zamiast surowych Bash, Read i WebFetch.

Stan na 2026-09-26: 24,1 tys. gwiazdek na GitHubie dla mksglu/context-mode, npm context-mode 1.0.169 (ostatnia publikacja 2026-06-29). Nie ma go w Official MCP Registry ani w claude-plugins-official. Licencja to Elastic-2.0, a nie licencja OSI, więc skonsultuj ją z osobą, która zatwierdza zależności. W każdym narzędziu wymaga Node.js 22.5+ (albo Buna).

W sesji Claude Code:

/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-mode

Te same dwa kroki działają w terminalu jako claude plugin marketplace add mksglu/context-mode i claude plugin install context-mode@context-mode (podkomendy sprawdzone w claude plugin --help, 2.1.286). Uruchom sesję ponownie i wpisz /context-mode:ctx-doctor; każdy test powinien pokazać [x].

Lżejsza próba, bez hooków i bez komend slash:

Okno terminala
claude mcp add context-mode -- npx -y context-mode

Bez hooków narzędzia są dostępne, ale nic nie popycha modelu, żeby z nich korzystał, więc wymień ctx_execute w prompcie.

Przykład: pełny przebieg testów, w kontekście tylko błędy

Dział zatytułowany „Przykład: pełny przebieg testów, w kontekście tylko błędy”

To przypadek, dla którego powstał context-mode. Runner wypisuje tysiące linii, a tobie potrzeba kilkunastu.

Czego się spodziewać: jednego wywołania ctx_execute, którego wynikiem jest krótki blok liczników i fragmentów błędów, a nie log. Potem uruchom /context-mode:ctx-stats (Claude Code) albo ctx stats (Codex, Cursor); pokaże, ile bajtów to wywołanie zatrzymało poza kontekstem. Tabela benchmarków w README deklaruje duże redukcje dla poszczególnych narzędzi; traktuj je jako liczby autora i ufaj raczej własnemu wynikowi ctx-stats.

Przefiltrowany wynik ma wartość tylko wtedy, gdy jest kompletny. Sprawdź to bez czytania logu:

  1. Liczby muszą się zgadzać. passed + failed + skipped musi dać total, a niezerowy kod wyjścia przy zerze zgłoszonych błędów to błąd skryptu, a nie zielony przebieg. Prompt prosi o obie wartości właśnie po to, żeby porównać je jednym spojrzeniem.
  2. Uruchom jeden błąd bezpośrednio. Wybierz jeden zgłoszony test i uruchom go po nazwie swoim runnerem w terminalu. Jeśli nie pada tak samo, podsumowanie jest błędne.
  3. CI pozostaje bramką. context-mode zmienia to, co czyta agent, a nie to, co jest prawdą. O merge’u decyduje pełny przebieg w CI, a recenzent patrzy na wynik CI, a nie na podsumowanie agenta.

Serwer Code Mode Cloudflare pod adresem https://mcp.cloudflare.com/mcp udostępnia trzy narzędzia: search, execute i docs. Agent przeszukuje specyfikację OpenAPI Cloudflare, pisze JavaScript wywołujący cloudflare.request() i dostaje z powrotem tylko wynik skryptu. README Cloudflare opisuje to jako „2500 endpoints in 1k tokens” wobec około 244 tys. tokenów dla minimalnych natywnych schematów narzędzi (liczby dostawcy z README cloudflare/mcp). Wyniki są domyślnie obcinane do około 6000 tokenów; ?truncateToolResult=false znosi limit, czego rzadko chcesz.

Okno terminala
claude mcp add --transport http cloudflare https://mcp.cloudflare.com/mcp

Potem uruchom claude mcp login cloudflare, żeby dokończyć logowanie OAuth. Wtyczka cloudflare w claude-plugins-official podpina ten sam adres razem ze skillami Cloudflare.

Ta sama idea pojawia się gdzie indziej: Composio Connect chowa „1000+ apps” za siedmioma meta-narzędziami (zobacz huby integracyjne). Serwery domenowe, takie jak observability.mcp.cloudflare.com, opisuje strona Cloudflare MCP.

Zawęź serwer, który zostaje: toolsety GitHuba i budżety tokenów

Dział zatytułowany „Zawęź serwer, który zostaje: toolsety GitHuba i budżety tokenów”

Niektóre serwery same się zmniejszają, jeśli poprosisz o to w adresie.

GitHub. Zdalny serwer publikuje osobny adres dla każdego toolsetu, każdy z wariantem /readonly: https://api.githubcopilot.com/mcp/x/actions/readonly daje agentowi wyłącznie odczyt Actions (docs/remote-server.md GitHuba). To samo zawężenie działa przez nagłówki X-MCP-Toolsets i X-MCP-Readonly albo flagi --toolsets i --read-only lokalnego serwera.

Okno terminala
# Claude Code: sesja debugowania CI, której wystarczą logi Actions
claude mcp add --transport http github-actions \
https://api.githubcopilot.com/mcp/x/actions/readonly \
-H "Authorization: Bearer $GITHUB_PAT"
Okno terminala
# Codex: ten sam zawężony adres, token ze zmiennej środowiskowej
codex mcp add github-actions --url https://api.githubcopilot.com/mcp/x/actions/readonly \
--bearer-token-env-var GITHUB_PAT

W Cursorze wpisz zawężony adres w pole url wpisu github w .cursor/mcp.json. Linia claude mcp add rozwija $GITHUB_PAT w twojej powłoce i zapisuje wartość w lokalnej konfiguracji, więc nigdy nie używaj jej z --scope project. Pełną konfigurację, tryb lockdown i zakresy PAT opisuje strona o GitHub MCP.

Microsoft Learn. Dopisz maxTokenBudget do adresu, żeby obciąć wyniki wyszukiwania do budżetu tokenów. Microsoft oznacza tę funkcję jako eksperymentalną.

Okno terminala
claude mcp add --transport http microsoft-learn "https://learn.microsoft.com/api/mcp?maxTokenBudget=2000"
codex mcp add microsoft-learn --url "https://learn.microsoft.com/api/mcp?maxTokenBudget=2000"

Gdy dostawca wydaje CLI, które robi to samo co serwer, skill uczący agenta tego CLI kosztuje krótki opis, dopóki nie zostanie użyty, a wyjście CLI da się filtrować zwykłymi narzędziami powłoki. README Playwright MCP samo mówi dziś, że agenci kodujący „might benefit from using the CLI+SKILLS instead”.

SerwerZamiennik CLI + skillKonfiguracja (terminal)
Playwright MCP@playwright/cli (plik wykonywalny playwright-cli)npm install -g @playwright/cli@latest, potem playwright-cli install --skills (--skills agents zapisuje do .agents/skills/)
Context7 MCPCLI ctx7 w trybie CLI + Skillsnpx ctx7 setup --cli --claude (albo --codex, --cursor)
Microsoft Learn MCP@microsoft/learn-cli (plik wykonywalny mslearn)npm install -g @microsoft/learn-cli, potem mslearn setup --cli --claude (albo --codex)

Flagi sprawdzone w playwright-cli install --help (0.1.22), ctx7 setup --help (0.5.12) i README MicrosoftDocs/mcp. mslearn setup nie ma opcji dla Cursora (sprawdzone w mslearn setup --help, @microsoft/learn-cli 1.0.0). Szczegóły i kompromisy są na stronach Playwright MCP kontra Playwright CLI i Context7.

Brak CLI od dostawcy? mcporter (npm mcporter 0.14.1; repozytorium przeniesiono z steipete/mcporter do openclaw/mcporter) generuje samodzielne CLI z dowolnego serwera, zamieniając schematy narzędzi w podkomendy. npx mcporter generate-cli linear --include-tools issues_list,issues_create zostawia tylko wskazane narzędzia. Wymaga Node 24+, a linear musi już być skonfigurowanym serwerem w mcporterze; w przeciwnym razie podaj --command <url>. --compile buduje pojedynczy plik wykonywalny i wymaga Buna. Opakuj wynik w skill, żeby agent poznawał go przez --help dopiero wtedy, gdy go potrzebuje (zobacz tworzenie własnych skilli).

Serwerów przybywa. Godzinny przegląd raz w miesiącu utrzymuje budżet kontekstu w ryzach. Prowadzi go tech lead, który odpowiada za wspólną konfigurację (.mcp.json, zespołowy config.toml Codeksa, .cursor/mcp.json), a zmiana trafia jako pull request z liczbami „przed” i „po”.

  1. Zmierz stan bazowy. W świeżej sesji zapisz /context (Claude Code) albo liczbę tokenów z TUI (Codex) oraz claude plugin details dla każdej wtyczki. Wypisz skonfigurowane serwery przez claude mcp list i codex mcp list.

  2. Uruchom to samo reprezentatywne zadanie. Weź jedno prawdziwe zadanie z ostatniego miesiąca, na przykład naprawę czerwonego przebiegu CI, i zapisz jego koszt. Zadanie nie zmienia się z miesiąca na miesiąc, żeby liczby dało się porównać.

  3. Znajdź to, czego nie używano. Zapytaj agenta, które serwery i narzędzia wywołał (prompt poniżej). Serwer bez wywołań przez miesiąc to kandydat do usunięcia.

  4. Przytnij i zawęź. Usuń nieużywane serwery przez claude mcp remove NAZWA albo codex mcp remove NAZWA. Te, które zostają, skieruj na adres toolsetu, adres tylko do odczytu albo budżet tokenów.

  5. Zamień tam, gdzie jest CLI. Zastąp Playwright MCP, Context7 MCP albo Microsoft Learn MCP ścieżką CLI + skill, jeśli sposób pracy zespołu do niej pasuje.

  6. Przekieruj obszerne wyjście. Dodaj context-mode albo zaostrz prompt tam, gdzie koszt brał się z wyników, a nie ze schematów.

  7. Zmierz ponownie i wdróż. Powtórz kroki 1 i 2. Wpisz oba zestawy liczb w opis pull requesta. Scal tylko wtedy, gdy reprezentatywne zadanie nadal przechodzi własne sprawdzenie (testy zielone, ten sam błąd znaleziony) przy niższym koszcie.

Reguła akceptacji. Przegląd przechodzi, gdy reprezentatywne zadanie kosztuje mniej, a jego wynik się nie zmienia. Tańszy przebieg, który nie znajduje błędu wykrytego przez droższy, to regres, a nie oszczędność.

Agent wciąż używa Bash zamiast ctx_execute. Zainstalowano sam serwer MCP, bez hooków, które kierują wywołania, albo hooki nie są jeszcze zaufane. W Claude Code zainstaluj wtyczkę i uruchom /context-mode:ctx-doctor. W Codeksie zaakceptuj hooki wtyczki, gdy o to poprosi. W każdym narzędziu wymień ctx_execute w prompcie.

Podsumowanie mówi „0 failed”, a CI jest czerwone. Skrypt wypisał liczniki z niewłaściwego źródła albo połknął kod wyjścia runnera. Wymagaj kodu wyjścia w każdym podsumowaniu ctx_execute, tak jak robi to przykładowy prompt, i traktuj niezgodność jako nieudany przebieg.

Polecenie z piaskownicy sięga dalej, niż się spodziewasz. Podproces context-mode to granica procesu, a nie granica bezpieczeństwa: uwierzytelnione CLI, takie jak gh, aws i kubectl, dziedziczą twoje poświadczenia. Narzędzie stosuje w piaskownicy reguły deny z uprawnień Claude Code, więc trzymaj je w .claude/settings.json (zobacz bezpieczeństwo MCP).

Code Mode zwrócił obcięty wynik. Domyślny limit uciął go na około 6000 tokenów. Filtruj mocniej wewnątrz skryptu execute, zamiast dopisywać ?truncateToolResult=false.

Adres toolsetu ukrywa potrzebne narzędzie. Agent zgłasza, że narzędzie nie istnieje. Przełącz się na bazowy adres https://api.githubcopilot.com/mcp/ z nagłówkiem X-MCP-Toolsets: actions,pull_requests (i X-MCP-Readonly: true) albo zarejestruj drugi zawężony wpis z osobnym adresem, zamiast wracać do pełnego serwera.

Zużycie tokenów nie spadło. Zmierz ponownie przez /context albo ctx stats. Jeśli koszt siedzi we własnych odpowiedziach agenta albo w przeczytanych plikach, problemem nie był MCP; zobacz okna kontekstu i limity tokenów oraz skille do dyscypliny kontekstu i tokenów.