Claude Code „z pudełka” potrafi już czytać lokalne pliki, wykonywać komendy w terminalu oraz edytować kod źródłowy projektu. Jednak w rzeczywistych zadaniach deweloperskich często okazuje się to niewystarczające: pojawia się potrzeba pozyskania danych z bazy PostgreSQL, sprawdzenia otwartych Pull Requestów na GitHubie, pobrania aktualnej dokumentacji z chmury czy wysłania zapytania do wewnętrznego API korporacyjnego.
Właśnie aby rozwiązać ten problem, powstał Model Context Protocol (MCP) – otwarty standard, który przekształca Claude Code ze zwykłego lokalnego asystenta w pełnoprawne centrum orkiestracji zewnętrznych systemów i usług.
W tym praktycznym poradniku omówimy architekturę MCP, nauczymy się podłączać oficjalne gotowe serwery, przeanalizujemy tworzenie własnego serwera w TypeScript oraz utrwalimy umiejętności na przykładzie realnych zadań praktycznych.
1. Czym jest serwer MCP
Model Context Protocol (MCP) to otwarty protokół komunikacyjny opracowany przez firmę Anthropic, standaryzujący interakcję między modelami językowymi (LLM) a zewnętrznymi narzędziami lub źródłami danych.
Zamiast pisać osobne, unikalne pluginy dla każdej usługi, MCP wprowadza jednolity interfejs klient-serwer.
Każdy serwer MCP udostępnia modelowi trzy podstawowe prymitywy:
- Tools (Narzędzia) – funkcje wykonywalne z typowaną schemą JSON parametrów, które Claude Code może samodzielnie wywoływać podczas rozwiązywania zadania (np.
create_issue,execute_query). - Resources (Zasoby) – pasywne dane lub schematy, które asystent może odczytywać jako kontekst wejściowy (pliki, schematy DB, logi).
- Prompts (Szablony promptów) – gotowe scenariusze kontekstowe, upraszczające wykonanie typowych, powtarzalnych zadań.
Porównanie możliwości Claude Code
| Scenariusz pracy | Bez MCP (bazowy Claude Code) | Z podłączonymi serwerami MCP |
|---|---|---|
| Praca z plikami | Tylko wewnątrz bieżącego katalogu projektu | Dostęp do dowolnych zatwierdzonych katalogów i notatek |
| Dane repozytorium | Lokalne pliki przez git diff / git log | Odczyt issues, PR, code review oraz API GitHub |
| Bazy danych | Tylko jeśli zainstalowano lokalny klient CLI | Bezpośredni odczyt schemy, tabel i wykonanie SQL |
| Wyszukiwanie informacji | Lokalny grep / ripgrep w plikach | Aktualne wyszukiwanie w sieci w czasie rzeczywistym przez Brave/Tavily |
| Usługi wewnętrzne | Niedostępne bez pisania skomplikowanych skryptów bash | Wywoływanie funkcji wewnętrznych API przez typowany SDK |
2. Architektura i zasada działania MCP
Architektura interakcji opiera się na standardowym protokole JSON-RPC 2.0. W większości scenariuszy lokalnych komunikacja odbywa się przez standardowe strumienie wejścia/wyjścia (stdio), a dla zdalnych serwerów – przez Server-Sent Events (SSE) lub HTTP.
Krok po kroku: cykl życia zapytania
- Inicjalizacja i Handshake: Przy uruchomieniu sesji Claude Code odczytuje plik konfiguracyjny, startuje wskazane procesy serwerów i żąda listy obsługiwanych narzędzi (
tools/list). - Publikacja możliwości: Każdy serwer MCP zwraca listę swoich metod wraz ze schemami JSON parametrów oraz szczegółowym opisem przeznaczenia.
- Ocena intencji: Gdy stawiasz zadanie w języku naturalnym, Claude porównuje Twoje zapytanie z dostępnymi narzędziami.
- Wywołanie narzędzia: Jeśli zadanie wymaga danych zewnętrznych, model wysyła ustrukturyzowane zapytanie
tools/calldo serwera z walidowanymi argumentami. - Wykonanie po stronie serwera: Serwer łączy się z zewnętrznym API, bazą danych lub dyskiem i zwraca wynik do klienta.
- Generowanie odpowiedzi: Po otrzymaniu surowych danych Claude interpretuje je i dostarcza Ci finalną, ustrukturyzowaną odpowiedź.
Interakcja jest przejrzysta dla developera: nie musisz pamiętać nazw funkcji ani składni API. Claude samodzielnie wybiera najbardziej odpowiednie narzędzie na podstawie kontekstu zadania.
3. Jak podłączyć serwer MCP do Claude Code
Podłączanie serwerów odbywa się przez konfigurację JSON w bloku mcpServers. Claude Code obsługuje dwa poziomy konfiguracji:
- Konfiguracja projektu (
.claude/settings.json) – dotyczy wyłącznie bieżącego katalogu i może być zapisana w repozytorium dla całego zespołu. - Konfiguracja globalna (
~/.claude/settings.json) – dostępna dla wszystkich projektów bieżącego użytkownika na komputerze.
json{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@anthropic-ai/mcp-filesystem", "./docs" ] } } }
Struktura parametrów konfiguracyjnych
Każdy wpis serwera w sekcji mcpServers składa się z trzech kluczowych pól:
| Parametr | Typ | Obowiązkowy | Opis i przeznaczenie | Przykłady wartości |
|---|---|---|---|---|
command | string | Tak | Komenda uruchamiająca proces serwera | "npx", "node", "uvx", "docker" |
args | string[] | Tak | Tablica argumentów uruchomienia (nazwa pakietu, ścieżki, parametry) | ["-y", "@anthropic-ai/mcp-filesystem", "/path"] |
env | object | Nie | Słownik zmiennych środowiskowych do autoryzacji i kluczy API | {"GITHUB_TOKEN": "ghp_...", "DEBUG": "1"} |
Jeśli używasz narzędzi w Pythonie, zamiast npx możesz wykorzystać uvx (z menedżera pakietów uv), np.: "command": "uvx", "args": ["mcp-server-git"].
4. Katalog gotowych serwerów MCP
Anthropic oraz społeczność open-source stworzyły gotowe serwery dla najpopularniejszych narzędzi. Nie musisz pisać kodu od zera – wystarczy podłączyć odpowiedni pakiet npm lub python.
| Serwer | Oficjalny pakiet | Dostęp / Autentyfikacja | Główne możliwości |
|---|---|---|---|
| Filesystem | @anthropic-ai/mcp-filesystem | Ścieżki do zatwierdzonych folderów lokalnych | Odczyt, zapis i wyszukiwanie w katalogach zewnętrznych |
| GitHub | @anthropic-ai/mcp-github | Personal Access Token (GITHUB_TOKEN) | Wyszukiwanie w repozytoriach, analiza issues, tworzenie PR |
| PostgreSQL | @anthropic-ai/mcp-postgres | String połączenia (connectionString) | Inspekcja schem, odczyt tabel, wykonywanie zapytań SQL |
| Brave Search | @anthropic-ai/mcp-brave-search | Klucz API wyszukiwania (BRAVE_API_KEY) | Dostęp do aktualnych informacji z internetu bez halucynacji |
1. Serwer Filesystem
Udostępnia Claude Code dostęp do katalogów poza bieżącym repozytorium (np. do globalnego folderu z dokumentacją lub notatkami Obsidian).
2. Serwer GitHub
Pozwala asystentowi bezpośrednio pracować z repozytoriami organizacji: czytać issues, zostawiać komentarze do PR i sprawdzać status pipeline’ów.
3. Serwer PostgreSQL
Daje możliwość wykonywania przez Claude zapytań analitycznych lub diagnostycznych bezpośrednio do Twojej lokalnej lub zdalnej bazy danych.
4. Serwer Brave Search
Integruje silnik wyszukiwania webowego, pozwalając asystentowi znajdować świeżą dokumentację, rozwiązania niedawno zgłoszonych bugów lub zmiany w bibliotekach.
5. Jak Claude Code wykorzystuje MCP w dialogu
Po dodaniu serwera do konfiguracji nie musisz wpisywać specjalnych komend ani prefiksów. Claude Code analizuje Twoje zapytanie w języku naturalnym i samodzielnie decyduje, kiedy sięgnąć po narzędzie.
Przykład scenariusza: praca z GitHub
Zapytanie użytkownika:
„Sprawdź, jakie otwarte issues są przypisane do mnie w repozytorium acme/platform i wypisz krótką listę najważniejszych.”
Wewnętrzny proces Claude Code:
- Model rozpoznaje, że lokalne pliki nie wystarczą do udzielenia odpowiedzi.
- Formułuje wywołanie
mcp__github__search_issuesz filtramirepo:acme/platform state:open assignee:@me. - Otrzymuje ustrukturyzowaną odpowiedź JSON od serwera GitHub.
- Formatuje odpowiedź w przystępnej formie.
6. Tworzenie własnego serwera MCP w TypeScript
Jeśli gotowe rozwiązania nie wystarczają i potrzebujesz specyficznego narzędzia pod logikę biznesową lub wewnętrzne mikrousługi, serwer MCP można napisać samodzielnie w kilka minut przy użyciu oficjalnego SDK @modelcontextprotocol/sdk.
Krok 1. Inicjalizacja i instalacja zależności
Utwórz osobny katalog i zainstaluj biblioteki:
Krok 2. Implementacja serwera (server.ts)
Stwórz plik server.ts z definicją serwera i niestandardowego narzędzia:
Krok 3. Podłączenie serwera do Claude Code
Dodaj utworzony serwer do .claude/settings.json swojego projektu:
Użycie utility tsx pozwala uruchamiać pliki TypeScript bezpośrednio, bez konieczności wcześniejszego kompilowania przez tsc.
7. Bezpieczeństwo i izolacja przy pracy z MCP
MCP znacząco zwiększa autonomię Claude Code, ale daje kodowi możliwość interakcji z Twoim systemem operacyjnym i usługami zewnętrznymi. Aby zachować bezpieczeństwo środowiska pracy, przestrzegaj następujących zasad:
1. Serwer działa z Twoimi uprawnieniami systemowymi
Serwer MCP działa w kontekście bieżącego użytkownika systemu operacyjnego. Jeśli serwer zawiera błędy lub złośliwy kod, może odczytać pliki, do których ma dostęp Twój użytkownik.
2. Ochrona sekretów i kluczy API
Nigdy nie przechowuj produkcyjnych kluczy w repozytorium. Używaj globalnej konfiguracji ~/.claude/settings.json dla wrażliwych tokenów lub przekazuj zmienne środowiskowe przez pliki .env uwzględnione w .gitignore.
3. Audyt zewnętrznych pakietów przed podłączeniem
Zawsze audytuj repozytorium lub pakiet npm zewnętrznego serwera MCP przed dodaniem go do konfiguracji:
- Upewnij się, że kod źródłowy jest otwarty.
- Sprawdź liczbę pobrań i aktywność repozytorium.
- Zwracaj uwagę na zapytania sieciowe, które serwer wykonuje przy starcie.
4. Rozdzielenie poziomów konfiguracji
Unikaj podłączania serwerów z prawami zapisu do baz danych produkcyjnych (Production DB) w trybie deweloperskim. Do testów używaj oddzielnych replik Read-Only lub lokalnych kontenerów Docker.
8. Praktyczny warsztat: krok po kroku
Wykonaj dwa praktyczne zadania, aby utrwalić materiał i zweryfikować poprawność podłączenia serwerów.
Zadanie 1. Podłączenie serwera MCP GitHub
- Utwórz nowy Personal Access Token (classic lub fine-grained) na GitHubie w sekcji
Settings→Developer settingsz uprawnieniamirepoorazread:org. - Otwórz lub utwórz plik konfiguracyjny
~/.claude/settings.json:
- Uruchom nową sesję Claude Code i wykonaj weryfikacyjny prompt:
Prompt do testów:
„Pokaż moje 5 ostatnio aktualizowanych repozytoriów na GitHubie i ich status.”
- Claude Code pomyślnie wywołał narzędzie GitHub bez błędów autentykacji.
- Otrzymano aktualną listę repozytoriów.
Zadanie 2. Podłączenie serwera Filesystem dla zewnętrznych notatek
Udostępnij Claude dostęp do zewnętrznego folderu z dokumentacją lub notatkami architektonicznymi:
- Dodaj serwer
filesystemdo.claude/settings.json:
- Zweryfikuj działanie zapytaniem do Claude:
Prompt do testów:
„Znajdź w folderze external-docs wszystkie pliki markdown opisujące architekturę API i stwórz ich krótki przegląd.”
- Claude odczytał pliki spoza roboczego katalogu projektu.
- Uogólnił znalezione informacje bez utraty kontekstu.
9. Szybka samoocena wiedzy
Sprawdź, jak dobrze przyswoiłeś fundamentalne zasady architektury Model Context Protocol.
Pytanie 1. Jaka jest podstawowa rola serwera MCP?
- A. Chmurowa maszyna wirtualna do hostingu modeli Claude
- B. Program adapter, który zapewnia modelowi językowemu standaryzowany dostęp do zewnętrznych narzędzi i danych
- C. Biblioteka do automatycznej kompresji wektorowych embeddingów
- D. Serwer webowy do publikacji skompilowanego kodu projektu
Poprawna odpowiedź: B.
Serwer MCP to lokalny lub zdalny proces działający jako most między modelem a usługami zewnętrznymi, udostępniający modelowi standaryzowane Tools, Resources oraz Prompts.
Pytanie 2. W którym pliku przechowywana jest konfiguracja serwerów przeznaczona tylko dla konkretnego repozytorium?
- A.
~/.claude/settings.json - B.
package.json - C.
.claude/settings.jsonw korzeniu projektu - D.
CLAUDE.md
Poprawna odpowiedź: C.
Dla konfiguracji na poziomie pojedynczego projektu służy .claude/settings.json. Plik w katalogu domowym ~/.claude/settings.json odpowiada za globalne narzędzia developera.
Pytanie 3. Skąd Claude Code wie, którego narzędzia użyć do odpowiedzi na pytanie?
- A. Użytkownik musi jawnie wskazać flagę
--tool=nameprzed każdym zapytaniem - B. Trzeba wcześniej wywołać komendę
/mcp select - C. Model analizuje semantykę zapytania oraz opisy schem JSON narzędzi, wybierając trafne samodzielnie
- D. Wywoływane są wszystkie narzędzia jednocześnie, a zbędne wyniki są odrzucane
Poprawna odpowiedź: C.
Dzięki standaryzowanym opisom i schemom parametrów Claude ocenia intencję użytkownika i autonomicznie wywołuje potrzebne narzędzie, przekazując walidowane argumenty.
10. Podsumowania i checklist architektury
Model Context Protocol czyni Claude Code elastycznym środowiskiem agentowym. Zamiast ręcznie kopiować zawartość plików czy schemy baz danych do dialogu, ustawiasz stałe kanały komunikacji raz.
Checklist gotowości Twojego środowiska
- Poziomy konfiguracji: Usługi globalne (GitHub, Web Search) wyniesiono do
~/.claude/settings.json, a specyficzne dla projektu (DB, dokumentacja) do.claude/settings.json. - Bezpieczeństwo: Tokeny i hasła nie są commitowane do publicznego repozytorium; bazy danych podłączono z minimalnymi wymaganymi uprawnieniami (Read-Only do analizy).
- Testowanie narzędzi: Działanie serwerów zweryfikowano celowymi zapytaniami po uruchomieniu sesji.
- Rozszerzalność: Dla specyficznych zadań wewnętrznych utworzono szablon własnego serwera w TypeScript przez
@modelcontextprotocol/sdk.