Jeśli Twój agent ma powłokę, daj mu wiersz poleceń

MCP czy CLI dla agentów AI sprowadza się do jednego pytania: czy agent ma powłokę? Jeśli tak, jak w Claude Code, Codex czy Cursor, dobrze zbudowany wiersz poleceń jest zwykle lepszym interfejsem. Ładuje tylko to, czego agent potrzebuje, łączy się ze wszystkim innym w powłoce, a każde polecenie możesz uruchomić sam. Jeśli agent nie ma powłoki, jak w aplikacji czatu, drogą jest MCP. Dostęp agentów do Time Momentum zbudowaliśmy jako wiersz poleceń, tm, i zdecydowaliśmy się nie budować serwera MCP. Ten poradnik wyjaśnia dlaczego i kiedy ten wybór byłby błędny.

Stan na 18 paź 2026

Czym jest MCP

Model Context Protocol to, według własnego opisu, „otwarty standard łączenia aplikacji AI z systemami zewnętrznymi” (modelcontextprotocol.io). Projekt porównuje go do portu USB-C: jedna wtyczka do wielu urządzeń.

Aktualna specyfikacja, wersja 2026-07-28, definiuje hosty (aplikacja AI), klientów (konektory w jej wnętrzu) i serwery (usługi dostarczające dane i narzędzia), komunikujące się przez JSON-RPC. Serwer może oferować zasoby, prompty i narzędzia. Narzędzia to to, czego agenci używają najczęściej: klient pyta serwer o ich listę przez tools/list, a każde narzędzie ma nazwę, opis i JSON Schema dla danych wejściowych.

Projektowanie CLI dla agentów AI: co sprawia, że wiersz poleceń jest przyjazny agentom

Wiersz poleceń nie jest automatycznie dobry dla agentów. Potrzebuje kilku cech, o które ludzie rzadko proszą:

  • Opisuje sam siebie jako dane: --help i pełny katalog poleceń jako JSON, żeby agent nigdy nie musiał zgadywać flag.
  • Wynik to kontrakt: z --json dokładnie jeden dokument JSON na stdout, błędy jako JSON na stderr.
  • Kody wyjścia mają znaczenie: popraw wywołanie, zapytaj człowieka, poczekaj, spróbuj ponownie. Jedna liczba mówi agentowi, co zrobić dalej.
  • Nigdy nie czeka na dane, których agent nie może podać: bez terminala nic nie pyta. Kroki destrukcyjne wymagają wyraźnej flagi, takiej jak --yes.
  • Potrafi pokazać zamiast działać: --dry-run wypisuje dokładne żądanie bez wysyłania go.
  • Sekrety nie trafiają do wyniku, także z --verbose i --dry-run, bo wszystko, co widzi agent, trafia do jego kontekstu.
  • Łatwo go zainstalować wszędzie, gdzie działa agent, najlepiej bez drzewa zależności.

MCP czy CLI dla agentów AI w skrócie

PytanieSerwer MCPCLI przyjazne agentom
Kontekst zużyty przed pierwszym wywołaniemczęściowoCzęsto wszystkie definicjeTylko na żądanie
Wyniki łączą się bez udziału modelu–Przez modelPotoki, jq, skrypty
Możesz powtórzyć to, co zrobił agentczęściowoInspectorTo samo polecenie
Wersję można przypiąćczęściowoDecyduje serwer
Działa w agentach z powłokączęściowoJeśli klient to obsługuje
Działa w aplikacjach czatu bez powłoki–
Standardowe wykrywanie i logowanietools/list, OAuth–Własna konwencja

Stan na: 10 paź 2026

Kontekst: definicje z góry albo na żądanie

Zespół inżynierski Anthropic opisał problem w listopadzie 2025 roku: „Większość klientów MCP ładuje wszystkie definicje narzędzi z góry bezpośrednio do kontekstu”, a te opisy wydłużają czas odpowiedzi i zwiększają koszt (Code execution with MCP). Ich zalecenie: pozwolić modelowi czytać definicje narzędzi na żądanie.

Uczciwie trzeba dodać, że klienci nadrabiają. Claude Code domyślnie odkłada narzędzia MCP: na starcie sesji ładują się tylko nazwy narzędzi i instrukcje serwerów, a pełna definicja przychodzi, gdy Claude szuka narzędzia (MCP tool search). Inni klienci mogą nadal ładować wszystko.

CLI dostaje ładowanie na żądanie za darmo, bo nic nie jest w kontekście, dopóki agent nie uruchomi polecenia. Zmierzyliśmy, ile jest do załadowania w tm 0.3.0: pełny katalog (tm schema --json) ma 377 203 znaki, przegląd wszystkich grup poleceń (tm --json) 32 110, grupa faktur 104 009. Pojedyncze polecenie ma medianę 934 znaków przy 157 poleceniach. Metoda: npx -y @time-momentum/cli@0.3.0 schema --json | wc -c i to samo dla pozostałych wywołań, 10 paź 2026.

Katalog nie jest mały. I o to chodzi: agent decyduje, co załadować, zwykle jedną grupę albo jedno polecenie.

Składanie poleceń: potoki, jq i skrypty

W MCP „każdy wynik pośredni musi przejść przez model”, jak ujmuje to ten sam artykuł Anthropic. Lista 500 faktur, które agent ma tylko policzyć, i tak trafia do jego kontekstu.

W powłoce agent filtruje, zanim przeczyta. tm payments outstanding --json | jq '[.data[].summary.outstanding_micros] | add / 1000000' zwraca jedną liczbę: sumę należności w euro. tm invoices list --all --json | jq '[.data[] | select(.status == "draft")] | length' liczy szkice na wszystkich stronach. Te same linie działają w cron jobie albo skrypcie powłoki, bez żadnego agenta.

Uwierzytelnianie: OAuth czy klucz API

W MCP autoryzacja jest opcjonalna. Zdalne serwery przez HTTP powinny stosować przepływ OAuth 2.1 ze specyfikacji; lokalne serwery przez stdio biorą dane logowania ze środowiska. W aplikacji czatu, w której każdy loguje się własnym kontem, OAuth jest wygodniejszy.

CLI zwykle pracuje z kluczem API. To proste, ale wymaga ostrożności: klucz nigdy nie może pojawić się w tym, co czyta agent. tm trzyma go w lokalnym pliku z trybem 600 albo w zmiennej środowiskowej, wymienia klucz zapisu na token ważny przez godzinę i nigdy nie wypisuje klucza, nawet z --verbose czy --dry-run. Token z tej wymiany nie może tworzyć nowych kluczy ani usuwać konta.

Testowalność: próbne uruchomienie i to samo polecenie dla Ciebie

Każde wywołanie, które agent wykonuje przez CLI, to linia, którą możesz skopiować, przeczytać i uruchomić sam. --dry-run idzie krok dalej i pokazuje metodę, URL i treść bez wysyłania czegokolwiek. Dzięki temu pracę agenta można sprawdzić, zanim się wydarzy, co ma największe znaczenie przy fakturach.

MCP też ma do tego narzędzia, np. MCP Inspector dla programistów. Ale wywołania narzędzia nie wpiszesz we własnym terminalu, żeby zobaczyć, co się stanie.

Wersjonowanie: przypnij albo pozwól się zmieniać

CLI to pakiet z wersją. Możesz go przypiąć (npx -y @time-momentum/cli@0.3.0), cofnąć (tm update --to <version>) i wiedzieć, że skrypt, który działał wczoraj, działa dziś. Gdy API zmieni się tak, że stara wersja działałaby błędnie, serwer odrzuca tę wersję z jasnym błędem i poleceniem aktualizacji.

MCP wersjonuje protokół datą i pozwala serwerom ogłaszać zmiany listy narzędzi w trakcie działania. Zdalny serwer sam decyduje, jakie narzędzia dostajesz dziś. To wygodne, dopóki nic się nie psuje.

Zasięg: każdy agent z powłoką

Claude Code, Codex, Cursor i większość agentów programistycznych potrafi uruchamiać polecenia powłoki. CLI działa we wszystkich bez potrzeby obsługi czegokolwiek innego przez klienta, także w sandboksach i CI.

Kiedy MCP jest lepszym wyborem

  • Klienci bez powłoki. claude.ai, Claude Desktop i aplikacje mobilne Claude docierają do zewnętrznych narzędzi przez konektory, które są serwerami MCP (dokumentacja Claude). Tam CLI nie pomoże.
  • Standardowe wykrywanie. Każdy serwer MCP odpowiada na tools/list w ten sam sposób, a oficjalny MCP Registry wymienia serwery. Każde CLI dokumentuje się na swój sposób.
  • Logowanie per użytkownik. OAuth pozwala każdemu podłączyć własne konto bez obsługi klucza.
  • Użytkownicy nietechniczni. Dodanie konektora w aplikacji czatu jest łatwiejsze niż instalacja wiersza poleceń.

Jak robi to Time Momentum

Agenci naszych użytkowników już pracują w powłoce, nad projektami klientów. Dlatego Time Momentum nie ma serwera MCP. Ma tm, wiersz poleceń, który obsługuje cały produkt: nakład pracy, klientów, zlecenia, projekty, faktury i faktury elektroniczne, płatności, zestawienia godzin i rentowność.

tm nie ma zależności w czasie działania. Każda operacja REST API przeznaczona dla wiersza poleceń ma dokładnie jedno polecenie, 143 operacje w wersji 0.3.0, a test wymusza to przy każdej zmianie API. tm skill zwraca instrukcję użycia zgodną z zainstalowaną wersją. W Claude Code tm skill --install dodaje krótki skill, który do niej prowadzi, a Time Momentum jest też dostępne jako plugin do Claude Code.

Wystawienie albo anulowanie faktury i usuwanie wymagają wyraźnego --yes. Bez terminala tm w przeciwnym razie się zatrzymuje.

Więcej na ten temat

  • Dla agentów AI

    Co Twój agent może zrobić w Time Momentum przez tm, model bezpieczeństwa i konfiguracja.

    Dla agentów AI
  • Oprogramowanie biznesowe dla agentów AI

    Jak sprawdzić, czy oprogramowanie pozwala agentowi bezpiecznie pracować z klientami, fakturami i płatnościami.

    Czytaj poradnik

Pozwól agentowi prowadzić rozliczenia z powłoki

  • 30 dni Pro
  • Bez karty kredytowej
  • Potem dalej w planie Free

Najczęstsze pytania

Co jest lepsze dla agentów AI: CLI czy serwer MCP?

Dla agentów z powłoką, takich jak Claude Code, Codex czy Cursor, dobrze zbudowane CLI jest zwykle lepsze: ładuje tylko to, o co prosi agent, wyniki można przefiltrować potokami, zanim przeczyta je model, a każde wywołanie możesz powtórzyć sam. W aplikacjach czatu bez powłoki MCP jest jedyną opcją.

Czy definicje narzędzi MCP zajmują okno kontekstu?

W wielu klientach tak: Anthropic napisał w listopadzie 2025 roku, że większość klientów MCP ładuje wszystkie definicje narzędzi z góry. Claude Code domyślnie je odkłada i na starcie ładuje tylko nazwy narzędzi.

Co sprawia, że CLI jest przyjazne agentom?

Czytelny dla maszyny katalog poleceń, dokładnie jeden dokument JSON na wywołanie, błędy jako JSON, znaczące kody wyjścia, brak interaktywnych pytań bez terminala, wyraźna flaga potwierdzenia dla kroków destrukcyjnych, próbne uruchomienie i brak sekretów w wyniku.

Czy Time Momentum ma serwer MCP?

Nie. Agenci korzystają z wiersza poleceń tm, który obejmuje każdą przeznaczoną dla niego operację API. Claude Code dostaje dodatkowo skill i plugin.