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.
Co zyskasz z tej strony
Dział zatytułowany „Co zyskasz z tej strony”- 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.
Skąd w 2026 roku bierze się koszt tokenów MCP?
Dział zatytułowany „Skąd w 2026 roku bierze się koszt tokenów MCP?”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żka | Co usuwa z kontekstu | Kiedy po nią sięgnąć |
|---|---|---|
| Narzędzia piaskownicy context-mode | Surowe 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 endpoint | Jeden serwer obsługuje całe API platformy |
Zawężone adresy serwerów (toolsety GitHuba, ?maxTokenBudget=) | Nieużywane narzędzia, zbyt duże wyniki | Serwer zostaje, ale używasz tylko jego części |
CLI + skill (Playwright CLI, ctx7, mslearn) | Sam serwer MCP | Dostawca 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.
Jak zmierzyć, ile kosztuje serwer MCP?
Dział zatytułowany „Jak zmierzyć, ile kosztuje serwer MCP?”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:
claude plugin details context-modeW 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.
W terminalu uruchom codex mcp list, żeby zobaczyć każdy serwer i to, czy jest włączony. W TUI uruchom /status (pokazuje konfigurację bieżącej sesji i zużycie tokenów) przed jednym reprezentatywnym zadaniem i po nim, a potem porównaj liczby. Z zainstalowanym context-mode wpisz na czacie ctx stats, żeby zobaczyć oszczędności dla każdego narzędzia; README podaje tę frazę dla każdego klienta poza Claude Code.
Serwery są w .cursor/mcp.json (projekt) albo ~/.cursor/mcp.json (globalnie), a każdy można wyłączyć w ustawieniach Cursora bez usuwania wpisu. Z zainstalowanym context-mode ctx stats na czacie daje ten sam podział na narzędzia co w Codeksie.
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).
Zainstaluj context-mode
Dział zatytułowany „Zainstaluj context-mode”W sesji Claude Code:
/plugin marketplace add mksglu/context-mode/plugin install context-mode@context-modeTe 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:
claude mcp add context-mode -- npx -y context-modeBez hooków narzędzia są dostępne, ale nic nie popycha modelu, żeby z nich korzystał, więc wymień ctx_execute w prompcie.
W terminalu (przetestowane na codex-cli 0.157.1 z tymczasowym CODEX_HOME):
codex plugin marketplace add mksglu/context-modecodex plugin add context-mode@context-modecodex mcp list # context-mode widnieje jako enabledWtyczka dostarcza serwer MCP, skille i hooki. Codex prosi o zaufanie hookom wtyczki, zanim je uruchomi. README wciąż każe ustawić plugin_hooks = true w sekcji [features]; w 0.157.1 ta flaga ma status „removed”, a hooks jest stabilne i włączone, więc nie ruszaj [features]. Uruchom sesję i wpisz ctx stats, żeby potwierdzić, że serwer odpowiada.
W Codeksie hooki mogą zablokować surowe wywołanie powłoki, ale nie mogą go przepisać (README śledzi to jako openai/codex#18491), więc także tam wymieniaj ctx_execute w promptach.
README podaje, że wpis w Cursor Marketplace czeka na przegląd. Do czasu jego zatwierdzenia README zaleca lokalną wtyczkę z folderu (Option A): git clone https://github.com/mksglu/context-mode.git, potem dowiązanie symboliczne klonu w ~/.cursor/plugins/local/context-mode i ponowne uruchomienie Cursora. Jeśli wolisz zwykłą konfigurację projektu, użyj ręcznej ścieżki z README (Option B) poniżej. Żadnej z nich nie testowano w Cursorze na potrzeby tej strony.
npm install -g context-mode{ "mcpServers": { "context-mode": { "command": "context-mode" } } }// .cursor/hooks.json — kieruje wywołania powłoki, odczytu i pobrań przez context-mode{ "version": 1, "hooks": { "preToolUse": [{ "command": "context-mode hook cursor pretooluse", "matcher": "Shell|Read|Grep|WebFetch|Task|MCP:ctx_execute|MCP:ctx_execute_file|MCP:ctx_batch_execute" }], "postToolUse": [{ "command": "context-mode hook cursor posttooluse" }], "stop": [{ "command": "context-mode hook cursor stop" }] }}Cursor odrzuca hook sessionStart, więc instrukcje kierowania model dostaje na starcie sesji z pliku reguł. Skopiuj go z instalacji globalnej:
mkdir -p .cursor/rules && cp "$(npm root -g)/context-mode/configs/cursor/context-mode.mdc" .cursor/rules/context-mode.mdcUruchom Cursora ponownie i wpisz ctx doctor na czacie agenta.
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.
Skąd wiesz, że podsumowanie nie ukryło błędu?
Dział zatytułowany „Skąd wiesz, że podsumowanie nie ukryło błędu?”Przefiltrowany wynik ma wartość tylko wtedy, gdy jest kompletny. Sprawdź to bez czytania logu:
- Liczby muszą się zgadzać.
passed+failed+skippedmusi 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. - 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.
- 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.
Użyj Code Mode zamiast setek schematów narzędzi
Dział zatytułowany „Użyj Code Mode zamiast setek schematów narzędzi”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.
claude mcp add --transport http cloudflare https://mcp.cloudflare.com/mcpPotem uruchom claude mcp login cloudflare, żeby dokończyć logowanie OAuth. Wtyczka cloudflare w claude-plugins-official podpina ten sam adres razem ze skillami Cloudflare.
codex mcp add cloudflare --url https://mcp.cloudflare.com/mcpcodex mcp login cloudflareDrugie polecenie kończy logowanie OAuth. Jeśli jesteś zalogowany w Codeksie, możesz zamiast tego wpisać w TUI /plugins i zainstalować wtyczkę cloudflare z katalogu openai-curated; jej serwer cloudflare-api wskazuje ten sam adres Code Mode.
{ "mcpServers": { "cloudflare": { "url": "https://mcp.cloudflare.com/mcp" } } }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.
# Claude Code: sesja debugowania CI, której wystarczą logi Actionsclaude mcp add --transport http github-actions \ https://api.githubcopilot.com/mcp/x/actions/readonly \ -H "Authorization: Bearer $GITHUB_PAT"# Codex: ten sam zawężony adres, token ze zmiennej środowiskowejcodex mcp add github-actions --url https://api.githubcopilot.com/mcp/x/actions/readonly \ --bearer-token-env-var GITHUB_PATW 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ą.
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"Zamień serwer na CLI + skill
Dział zatytułowany „Zamień serwer na CLI + skill”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”.
| Serwer | Zamiennik CLI + skill | Konfiguracja (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 MCP | CLI ctx7 w trybie CLI + Skills | npx 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).
Przeprowadzaj comiesięczny przegląd budżetu MCP
Dział zatytułowany „Przeprowadzaj comiesięczny przegląd budżetu MCP”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”.
-
Zmierz stan bazowy. W świeżej sesji zapisz
/context(Claude Code) albo liczbę tokenów z TUI (Codex) orazclaude plugin detailsdla każdej wtyczki. Wypisz skonfigurowane serwery przezclaude mcp listicodex mcp list. -
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ć.
-
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.
-
Przytnij i zawęź. Usuń nieużywane serwery przez
claude mcp remove NAZWAalbocodex mcp remove NAZWA. Te, które zostają, skieruj na adres toolsetu, adres tylko do odczytu albo budżet tokenów. -
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.
-
Przekieruj obszerne wyjście. Dodaj context-mode albo zaostrz prompt tam, gdzie koszt brał się z wyników, a nie ze schematów.
-
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ść.
Co się psuje przy obniżaniu kosztu tokenów MCP
Dział zatytułowany „Co się psuje przy obniżaniu kosztu tokenów MCP”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.