
MCP, skill, subagent, hook: czym się różnią i kiedy czego użyć
MCP (Model Context Protocol) daje agentowi nowe narzędzia i dane, skill uczy go procedury, subagent wykonuje zadanie w osobnej rozmowie, a hook uruchamia Twój kod w ustalonym momencie, bez pytania modelu o zgodę. To cztery różne warstwy, więc nie zastępują się nawzajem. Pomaga prosta reguła: jeśli czegoś brakuje agentowi w świecie zewnętrznym, szukaj MCP; jeśli brakuje mu wiedzy o tym, jak u Ciebie coś się robi, napisz skill; jeśli kontekst się zapycha, użyj subagenta; jeśli coś musi zawsze zajść albo nigdy nie zajść, napisz hook.
Stan na 14 października 2026, według dokumentacji Claude Code, GitHub Copilot, VS Code, Codeksa oraz specyfikacji MCP. Nazwy i szczegóły zmieniają się szybko, więc tam, gdzie narzędzia się różnią, piszę to wprost. Pojęcia tłumaczę po kolei, a każde kończy się odnośnikiem do wpisu, który omawia je dokładnie.
Wszystkie cztery pojęcia w jednej tabeli
| Pojęcie | Do czego służy | Kto je uruchamia | Kiedy użyć | Kiedy NIE użyć |
|---|---|---|---|---|
| MCP (serwer) | Podłącza agenta do zewnętrznego systemu: baza, przeglądarka, tracker zgłoszeń | Model, gdy zdecyduje się wywołać narzędzie | Agent musi czytać lub zmieniać coś poza repozytorium | Gdy wystarczy komenda w terminalu, którą agent już zna |
| Skill | Daje agentowi procedurę lub wiedzę zapisaną w pliku SKILL.md |
Model, gdy opis pasuje do zadania, albo Ty komendą | Powtarzasz te same instrukcje, checklistę lub wieloetapowy proces | Gdy zasada ma obowiązywać zawsze: to miejsce na plik instrukcji; gdy ma być wymuszona: hook |
| Subagent | Osobna rozmowa z własnym kontekstem, która zwraca wynik | Główny agent, na Twoją prośbę lub z własnej decyzji | Zadanie zalałoby rozmowę logami i wynikami wyszukiwania | Drobne zadanie, w którym potrzebujesz pełnej historii rozmowy |
| Hook | Uruchamia Twój kod przed lub po zdarzeniu (narzędzie, start sesji, koniec tury) | Program (harness), nie model | Coś ma się dziać zawsze: formatowanie, blokada, logowanie | Gdy decyzja wymaga rozumienia kontekstu, a nie sztywnej reguły |
Pod tabelą zostaje jedno zdanie, które porządkuje resztę: skill i plik instrukcji to tekst dla modelu, MCP to narzędzia dla modelu, subagent to organizacja pracy modelu, a hook to kod, który model omija. Hook zabezpieczający musi przy tym zawodzić głośno, a nie cicho. Jak wyglądały hooki na Windows, które przepuszczały wywołania przy braku Git Bash, opisuję w tekście o Claude Code 2.1.309–2.1.312.
MCP: co to jest i jak działa?
MCP (Model Context Protocol) to otwarty standard łączenia aplikacji AI z zewnętrznymi systemami. Dokumentacja porównuje go do złącza USB-C: jeden wspólny sposób podłączenia, zamiast osobnej integracji dla każdej pary „program AI plus usługa”. Cały protokół opiera się na trzech uczestnikach: hoście (program AI, na przykład Claude Code lub VS Code), kliencie (część hosta, która utrzymuje połączenie) i serwerze (program, który udostępnia możliwości).
Serwer MCP może wystawić trzy rodzaje rzeczy:
- narzędzia (tools): funkcje, które model może wywołać, na przykład zapytanie do bazy;
- zasoby (resources): dane, które trafiają do kontekstu, na przykład schemat bazy;
- prompty (prompts): gotowe szablony rozmowy.
Połączenie jest lokalne (proces uruchamiany na Twoim komputerze, transport stdio) albo zdalne (usługa w sieci, transport Streamable HTTP). W Claude Code serwer dodajesz komendą claude mcp add.
MCP vs API i MCP vs CLI
Zwykłe API zakłada, że po drugiej stronie jest programista, który przeczyta dokumentację i napisze wywołanie. MCP zakłada, że po drugiej stronie jest model: serwer sam opisuje swoje narzędzia (nazwa, opis, schemat argumentów), a program AI pobiera tę listę i podaje ją modelowi. Serwer MCP bardzo często jest po prostu cienką nakładką na istniejące API.
Z CLI jest podobnie, ale prościej. Jeśli agent ma terminal, a Twoje narzędzie ma dobrze znaną komendę (git, gh, docker), często wystarczy dać mu terminal. MCP wygrywa tam, gdzie nie ma sensownej komendy, gdzie potrzebne jest logowanie przez OAuth, albo gdzie chcesz, żeby narzędzie miało ściśle opisane argumenty. To moja ocena, a nie zapis z dokumentacji. Cena MCP jest taka, że każdy podłączony serwer to kolejne opisy narzędzi w kontekście; Claude Code ładuje je domyślnie z wyszukiwaniem narzędzi (tool search), żeby nie zapychać rozmowy.
MCP vs RAG i MCP vs tools
RAG (retrieval-augmented generation) to technika: przed odpowiedzią system wyszukuje pasujące fragmenty danych i dokłada je do pytania. MCP to protokół transportowy, więc nie jest jego konkurentem. Serwer MCP może wystawić wyszukiwanie jako narzędzie albo dane jako zasób, a to, co jest za nim, może być właśnie RAG-iem.
„Tools” (narzędzia) to szersze pojęcie: dowolna funkcja, którą model może wywołać, także wbudowana w program (odczyt pliku, uruchomienie komendy). MCP to ustandaryzowany sposób dodawania narzędzi spoza programu.
MCP vs skill
Najkrócej: MCP daje agentowi możliwość (może coś zrobić albo odczytać), a skill daje wiedzę (wie, jak u Ciebie się to robi). Skill nie podłącza żadnego nowego systemu; serwer MCP nie uczy żadnej procedury. Dobrze się uzupełniają: serwer MCP daje dostęp do trackera zgłoszeń, a skill opisuje, jak w Waszym zespole wygląda dobre zgłoszenie.
Szczegóły w: MCP - Model Context Protocol: jak podłączyć AI do baz danych, przeglądarki i dowolnego narzędzia.
Skill: czym jest i czym różni się od instrukcji?
Skill (Agent Skills) to folder z plikiem SKILL.md: nazwa, opis i instrukcje, opcjonalnie skrypty i materiały pomocnicze. Format opracował Anthropic i opublikował jako otwarty standard, a dziś obsługuje go wiele narzędzi, w tym Claude Code, GitHub Copilot (VS Code, Copilot CLI, agent w chmurze) i Codex.
Kluczowa cecha to ładowanie na żądanie (progressive disclosure). Na starcie agent wczytuje tylko nazwę i opis każdego skilla. Pełna treść trafia do kontekstu dopiero wtedy, gdy zadanie pasuje do opisu. Dokumentacja Claude Code mówi to wprost: treść skilla ładuje się dopiero przy użyciu, więc długi materiał referencyjny prawie nic nie kosztuje, dopóki nie jest potrzebny.
W tym leży różnica względem plików instrukcji (CLAUDE.md, AGENTS.md, copilot-instructions.md), które wczytują się do każdej sesji. Według dokumentacji Claude Code, CLAUDE.md służy do faktów i stałego kontekstu, a skill do procedur. Jeśli fragment pliku instrukcji urósł z faktu do procedury, to znak, że czas na skill.
Agent vs skill
Agent to program, który działa w pętli: myśli, wywołuje narzędzia, czyta wyniki i powtarza. Skill to zawartość, którą agent może wczytać. Agent bez skilli działa, tylko nie zna Waszych zwyczajów. Skill bez agenta nie robi nic, bo to plik tekstowy.
Co z regułami (Claude Code rules)?
W Claude Code „rules” to pliki Markdown w katalogu .claude/rules/. To podział dużego CLAUDE.md na tematyczne kawałki, a każdy z nich można ograniczyć do wybranych ścieżek plików (pole paths), żeby wczytywał się tylko wtedy, gdy agent pracuje z pasującymi plikami. Reguły to więc instrukcje, a nie osobny mechanizm: są tekstem dla modelu, który może go zignorować. Dokumentacja sama podpowiada, że jeśli akcja ma być zablokowana niezależnie od decyzji modelu, trzeba użyć hooka PreToolUse.
Szczegóły w: Czym są skille (Agent Skills) i jak napisać taki, który agent faktycznie odpali, AGENTS.md vs CLAUDE.md: jeden plik instrukcji dla agentów AI oraz o skillach spakowanych w plugin do Copilot CLI.
Subagent: po co osobna rozmowa?
Subagent to agent uruchamiany przez głównego agenta do konkretnego zadania. Ma własne okno kontekstu, własny prompt systemowy, ograniczony zestaw narzędzi i nie widzi historii Waszej rozmowy; widzi tylko polecenie, które dostał. Do głównej rozmowy wraca sam końcowy raport, bez całego przebiegu pracy.
Są dwa powody, żeby go użyć:
- Izolacja kontekstu. Dokumentacja Claude Code: subagenta warto użyć, gdy zadanie pobocznie zalałoby rozmowę wynikami wyszukiwania, logami albo zawartością plików, do których już nie wrócisz.
- Równoległość i ograniczenia. Kilka subagentów może pracować jednocześnie, a każdemu można odebrać narzędzia (na przykład tylko odczyt) albo przypisać tańszy model.
Subagent nie jest skillem. Skill działa w głównej rozmowie i dokłada do niej instrukcje. Subagent pracuje w izolacji. W Claude Code połączysz oba: skill z polem context: fork uruchamia się w subagencie, a jego treść staje się poleceniem dla niego.
Uwaga o nazewnictwie, bo narzędzia mówią o tym różnie (stan na 14 października 2026):
| Narzędzie | Jak nazywa subagenta i jak go definiujesz |
|---|---|
| Claude Code | subagent, plik Markdown z nagłówkiem YAML (nazwa, opis, narzędzia, model); subagent może wywołać kolejne, domyślnie do trzech poziomów pod główną rozmową |
| GitHub Copilot w VS Code | subagent wywoływany narzędziem runSubagent; może być własnym agentem z pliku .agent.md; każde wywołanie jest jednorazowe, nie można dopytać tego samego subagenta |
| Codex | subagent; własnych agentów definiujesz w plikach TOML w .codex/agents/ |
Dwa zastrzeżenia. Po pierwsze, w Claude Code subagenci zużywają ten sam limit użycia co główna rozmowa; osobne okno kontekstu nie oznacza darmowej pracy. Po drugie, osobne konteksty mogą wychwycić różne problemy, ale dokumentacja VS Code zaznacza, że nie gwarantują bezstronnych ani poprawnych wniosków.
Szczegóły w: Jak stworzyć własnego agenta GitHub Copilot w VS Code oraz panel, który pokazuje, co robią subagenci w Claude Code.
Hook: czym różni się od instrukcji dla modelu?
Hook to Twój kod, który program uruchamia w określonym momencie pracy agenta. Najczęstsze zdarzenia to start sesji, wysłanie promptu, tuż przed wywołaniem narzędzia, tuż po nim i koniec tury. Claude Code ma tych zdarzeń znacznie więcej (jest ich ponad dwadzieścia, także dla subagentów, kompaktowania kontekstu czy zmiany katalogu).
Różnica jest zasadnicza. Instrukcja („nigdy nie edytuj .env”) trafia do modelu, który zwykle ją zastosuje, ale nie musi. Hook działa w programie wokół modelu: zdarzenie zachodzi, skrypt się uruchamia, a jeśli to hook przed narzędziem, może wywołanie zablokować. Dokumentacja Claude Code opisuje to jako deterministyczną kontrolę: pewne rzeczy dzieją się zawsze, a nie wtedy, gdy model sam wybierze ich wykonanie.
Hooki w Claude Code mogą być poleceniem powłoki, żądaniem HTTP, wywołaniem narzędzia MCP, a także promptem lub agentem, czyli oceną wykonaną przez model. Te dwa ostatnie typy są użyteczne, gdy decyzja wymaga osądu, ale tracą to, co w hookach najcenniejsze: deterministyczność.
Skąd się biorą hooki, i jak to się ma do modów (stan na 14 października 2026):
- Hooki z ustawień (Claude Code): wpis
hooksw pliku.claude/settings.jsonlub ustawieniach użytkownika. Skrypt działa jako osobny proces. - Mody (Claude Code): wtyczka z kodem JavaScript lub TypeScript, wołanym wewnątrz procesu Claude Code. Mod oprócz reagowania na zdarzenia potrafi narysować własny interfejs i dodawać komendy, ale działa z Twoimi uprawnieniami i nie jest odizolowany od systemu. Oba opisuję w osobnych wpisach.
- Copilot w VS Code: hooki są w wersji Preview; konfiguracja w
.github/hooks/*.json. VS Code potrafi też czytać format hooków Claude Code, ale tylko po włączeniu ustawieniachat.useClaudeHooks, które domyślnie jest wyłączone. - Copilot CLI i Codex: obydwa mają hooki. W Codeksie konfiguracja leży w
hooks.jsonlub wconfig.toml, a hooki z projektu uruchamiają się dopiero po zaufaniu katalogowi.codex/.
Nazwy zdarzeń i ich zachowanie różnią się między narzędziami, więc skrypt napisany dla jednego trzeba sprawdzić w drugim.
Szczegóły w: Hooki w AI Assistants: automatyzacja obok GitHub Copilota i Mody w Claude Code: co potrafią, jak je zainstalować i czy im ufać.
Jedno zadanie, cztery sposoby
Załóżmy zadanie: agent ma przygotować changelog z wydania na podstawie zgłoszeń z trackera, w formacie przyjętym u Was, i nigdy nie ruszać pliku .env. Każde z czterech pojęć rozwiązuje inną część:
- MCP. Agent nie ma dostępu do trackera zgłoszeń. Podłączasz serwer MCP trackera, a agent dostaje narzędzia typu „znajdź zgłoszenia z wersji 2.4”. Bez tego musiałbyś wklejać zgłoszenia ręcznie.
- Skill. Agent już widzi zgłoszenia, ale nie wie, że u Was changelog dzieli się na „Dodano”, „Zmieniono”, „Naprawiono” i że wpisy piszecie w czasie przeszłym. Zapisujesz to w
SKILL.mdo nazwierelease-changelog. Wczyta się tylko wtedy, gdy ktoś poprosi o changelog. - Subagent. Wydanie ma 300 commitów, a ich przejrzenie zalałoby rozmowę. Główny agent zleca subagentowi: „przejrzyj historię od tagu 2.3 i zwróć listę zmian widocznych dla użytkownika”. Wraca jedna zwięzła lista.
- Hook. Zasadę o
.envmożesz zapisać w pliku instrukcji, ale to prośba, nie gwarancja. Hook przed narzędziem sprawdza ścieżkę i blokuje każdy zapis do.env.
Zwróć uwagę, że żadne z tych rozwiązań nie zastępuje pozostałych: usunięcie dowolnego zostawia dziurę innego rodzaju (brak danych, brak wiedzy, zapchany kontekst, brak gwarancji).
Jak wybrać?
Przejdź pytania po kolei i zatrzymaj się przy pierwszym „tak”:
- Czy zasada musi obowiązywać bez wyjątku (blokada, obowiązkowe formatowanie, zapis do logu audytowego)? Użyj hooka. Reguła w pliku instrukcji to tylko prośba.
- Czy agent nie ma dostępu do systemu, z którego potrzebuje danych albo w którym ma coś zmienić? Najpierw sprawdź, czy wystarczy mu terminal i znane polecenie (
gh,git). Jeśli nie, użyj serwera MCP. - Czy agent ma dostęp, ale nie wie, jak u Was coś się robi, i to nie dotyczy każdego zadania? Napisz skill.
- Czy ta wiedza dotyczy prawie każdego zadania w repozytorium (komendy budowania, konwencje, granice)? Wpisz ją do
AGENTS.mdlubCLAUDE.md. - Czy zadanie wygeneruje dużo materiału pośredniego, który nie jest Ci potrzebny w rozmowie (przeglądanie repozytorium, analiza logów, niezależne recenzje)? Zleć je subagentowi.
- Czy chcesz zmienić sam interfejs Claude Code albo reagować na zdarzenia czymś bardziej wyrafinowanym niż skrypt? Dopiero wtedy pomyśl o modzie.
Jeśli odpowiedź to „kilka naraz”, to normalne. Dojrzałe konfiguracje łączą wszystkie warstwy; zacznij od najtańszej, czyli pliku instrukcji.
Agent, chatbot, LLM, agentic AI i harness: słowniczek na jeden akapit
- LLM (duży model językowy) to sam model: przyjmuje tekst, zwraca tekst.
- Chatbot to aplikacja z oknem rozmowy wokół modelu. Odpowiada, ale sam nie działa w Twoich systemach.
- Agent to według Anthropic system, w którym model sam kieruje własnym procesem i wyborem narzędzi (w odróżnieniu od przepływów, gdzie ścieżkę z góry wyznacza kod). Chatbot z narzędziami, który działa w pętli aż do wykonania zadania, jest już agentem.
- Agentic AI to szersze określenie: Anthropic nazywa „systemami agentowymi” zarówno przepływy, jak i agentów. W praktyce znaczy tyle co „AI, które wykonuje zadania, a nie tylko odpowiada”.
- Harness to program wokół modelu: pętla pracy, narzędzia, uprawnienia, zarządzanie kontekstem i hooki. Claude Code, Codex i Copilot w VS Code to harnessy. Model jest „mózgiem”, harness jest całą resztą, i to harness uruchamia hooki.
- Wtyczka (plugin) to paczka, która może zawierać skille, agentów, hooki i konfigurację MCP. Mod to wtyczka specyficzna dla Claude Code, z kodem działającym wewnątrz programu.
Szczegóły w: Jak zacząć z AI Agents w swoim projekcie.
Najczęstsze pytania
Co to jest MCP w AI? MCP (Model Context Protocol) to otwarty standard, który pozwala programom AI łączyć się z zewnętrznymi systemami: bazami danych, przeglądarką, trackerami zgłoszeń. Serwer MCP opisuje swoje narzędzia, zasoby i prompty, a program AI przekazuje je modelowi.
Czym skill różni się od MCP? Skill to plik z instrukcjami, który uczy agenta procedury, ale nie daje mu nowych możliwości. MCP daje możliwości (narzędzia i dane), ale nie uczy procedur. Często używa się ich razem.
Czy hook to to samo co instrukcja w CLAUDE.md? Nie. Instrukcja to tekst dla modelu, który może ją zastosować albo pominąć. Hook to kod uruchamiany przez program w ustalonym momencie, więc działa zawsze, także wtedy, gdy model „zapomni”.
Kiedy warto użyć subagenta? Gdy zadanie wygeneruje dużo materiału pośredniego, którego nie potrzebujesz w głównej rozmowie, albo gdy chcesz równoległej pracy lub ograniczenia narzędzi. Do głównej rozmowy wraca sam końcowy raport.
Czy Claude Code, Copilot i Codex obsługują te same rzeczy? Tak, w dużej mierze: skille w formacie SKILL.md, subagentów i hooki mają Claude Code, Copilot (VS Code, a w CLI skille, własni agenci, hooki i MCP) oraz Codex. Różnią się jednak nazwy plików, katalogi i zdarzenia hooków, a w VS Code hooki mają status Preview (stan na 14 października 2026).
Czym jest reguła w Claude Code?
To plik Markdown w .claude/rules/, czyli część instrukcji dla modelu, którą można przypiąć do wybranych ścieżek plików. To nie mechanizm wymuszania: do wymuszania służy hook.
Co dalej
Jeśli zaczynasz od zera, przeczytaj najpierw Jak zacząć z AI Agents w swoim projekcie, potem napisz pierwszy skill według przewodnika po skillach. Praktyczny, uporządkowany krok po kroku przebieg dla Copilota znajdziesz w kursie GitHub Copilot.
Źródła
Wszystkie odczytane 14 października 2026.
- Model Context Protocol, wprowadzenie: https://modelcontextprotocol.io/docs/getting-started/intro
- Model Context Protocol, architektura (wersja specyfikacji 2026-07-28): https://modelcontextprotocol.io/docs/learn/architecture
- Claude Code, MCP: https://code.claude.com/docs/en/mcp
- Claude Code, skille: https://code.claude.com/docs/en/skills
- Claude Code, subagenci: https://code.claude.com/docs/en/sub-agents
- Claude Code, przewodnik po hookach: https://code.claude.com/docs/en/hooks-guide
- Claude Code, pamięć, CLAUDE.md i reguły: https://code.claude.com/docs/en/memory
- Agent Skills, opis standardu: https://agentskills.io/home
- Anthropic, „Building effective agents” (19 grudnia 2024): https://www.anthropic.com/engineering/building-effective-agents
- VS Code, przegląd personalizacji agentów: https://code.visualstudio.com/docs/copilot/customization/overview
- VS Code, hooki: https://code.visualstudio.com/docs/copilot/customization/hooks
- VS Code, subagenci: https://code.visualstudio.com/docs/copilot/agents/subagents
- GitHub, skille agentów: https://docs.github.com/en/copilot/concepts/agents/about-agent-skills
- GitHub, Copilot CLI: https://docs.github.com/en/copilot/concepts/agents/copilot-cli/about-copilot-cli
- Codex, hooki: https://learn.chatgpt.com/docs/hooks
- Codex, skille: https://learn.chatgpt.com/docs/build-skills
- Codex, subagenci: https://learn.chatgpt.com/docs/agent-configuration/subagents
Nowe materiały prosto na maila
Publikuję nowy artykuł albo lekcję kursu — dostajesz jednego maila. Nic poza tym.
Bez cyklu wydawniczego i newsów o każdej premierze modelu
Zapisy do newslettera otwieram partiami, żeby nie zamieniać go w kolejny kanał ze spamem i recyklingiem linków.
Jeśli chcesz dostać informację przy następnym otwarciu zapisów, napisz na [email protected].

O autorze
Marcin Szymański
Od kilkunastu lat buduję systemy w .NET i Azure — obecnie rozproszony monitoring PingView. Piszę tu o pracy człowiek + agenci AI na realnych workflow, nie na demach. Zawodowo prowadzę audyty, rescue projektów i wdrożenia AI-assisted delivery w zespołach.