Skip to main content
Spis treści poradnika
Średniozaawansowany12 min

Serwery MCP i Claude Code: praktyczny przewodnik po integracji i tworzeniu

Jak rozszerzyć możliwości Claude Code za pomocą Model Context Protocol: integracja z systemem plików, GitHub, PostgreSQL, Brave Search oraz tworzenie własnego serwera w TypeScript.

Opublikowano:
DLA AGENTA AIChatGPTClaude

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.

text
┌─────────────────────────────────────────────────────────────┐ │ Claude Code (Klient) │ └──────────────────────────────┬──────────────────────────────┘ │ JSON-RPC 2.0 (stdio / SSE) ▼ ┌─────────────────────────────────────────────────────────────┐ │ Serwer MCP (Adapter) │ └──────┬───────────────────────┼───────────────────────┬──────┘ │ │ │ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ System │ │ GitHub API │ │ Baza danych │ │ plików │ │ i Issues │ │ PostgreSQL │ └─────────────┘ └─────────────┘ └─────────────┘

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 pracyBez MCP (bazowy Claude Code)Z podłączonymi serwerami MCP
Praca z plikamiTylko wewnątrz bieżącego katalogu projektuDostęp do dowolnych zatwierdzonych katalogów i notatek
Dane repozytoriumLokalne pliki przez git diff / git logOdczyt issues, PR, code review oraz API GitHub
Bazy danychTylko jeśli zainstalowano lokalny klient CLIBezpośredni odczyt schemy, tabel i wykonanie SQL
Wyszukiwanie informacjiLokalny grep / ripgrep w plikachAktualne wyszukiwanie w sieci w czasie rzeczywistym przez Brave/Tavily
Usługi wewnętrzneNiedostępne bez pisania skomplikowanych skryptów bashWywoł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

  1. 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).
  2. Publikacja możliwości: Każdy serwer MCP zwraca listę swoich metod wraz ze schemami JSON parametrów oraz szczegółowym opisem przeznaczenia.
  3. Ocena intencji: Gdy stawiasz zadanie w języku naturalnym, Claude porównuje Twoje zapytanie z dostępnymi narzędziami.
  4. Wywołanie narzędzia: Jeśli zadanie wymaga danych zewnętrznych, model wysyła ustrukturyzowane zapytanie tools/call do serwera z walidowanymi argumentami.
  5. Wykonanie po stronie serwera: Serwer łączy się z zewnętrznym API, bazą danych lub dyskiem i zwraca wynik do klienta.
  6. Generowanie odpowiedzi: Po otrzymaniu surowych danych Claude interpretuje je i dostarcza Ci finalną, ustrukturyzowaną odpowiedź.
Uwaga

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:

  1. Konfiguracja projektu (.claude/settings.json) – dotyczy wyłącznie bieżącego katalogu i może być zapisana w repozytorium dla całego zespołu.
  2. 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:

ParametrTypObowiązkowyOpis i przeznaczeniePrzykłady wartości
commandstringTakKomenda uruchamiająca proces serwera"npx", "node", "uvx", "docker"
argsstring[]TakTablica argumentów uruchomienia (nazwa pakietu, ścieżki, parametry)["-y", "@anthropic-ai/mcp-filesystem", "/path"]
envobjectNieSłownik zmiennych środowiskowych do autoryzacji i kluczy API{"GITHUB_TOKEN": "ghp_...", "DEBUG": "1"}
Wskazówka

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.

SerwerOficjalny pakietDostęp / AutentyfikacjaGłówne możliwości
Filesystem@anthropic-ai/mcp-filesystemŚcieżki do zatwierdzonych folderów lokalnychOdczyt, zapis i wyszukiwanie w katalogach zewnętrznych
GitHub@anthropic-ai/mcp-githubPersonal Access Token (GITHUB_TOKEN)Wyszukiwanie w repozytoriach, analiza issues, tworzenie PR
PostgreSQL@anthropic-ai/mcp-postgresString połączenia (connectionString)Inspekcja schem, odczyt tabel, wykonywanie zapytań SQL
Brave Search@anthropic-ai/mcp-brave-searchKlucz 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).

json
{ "mcpServers": { "docs": { "command": "npx", "args": [ "-y", "@anthropic-ai/mcp-filesystem", "/Users/username/Developer/knowledge-base" ] } } }

2. Serwer GitHub

Pozwala asystentowi bezpośrednio pracować z repozytoriami organizacji: czytać issues, zostawiać komentarze do PR i sprawdzać status pipeline’ów.

json
{ "mcpServers": { "github": { "command": "npx", "args": [ "-y", "@anthropic-ai/mcp-github" ], "env": { "GITHUB_TOKEN": "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" } } } }

3. Serwer PostgreSQL

Daje możliwość wykonywania przez Claude zapytań analitycznych lub diagnostycznych bezpośrednio do Twojej lokalnej lub zdalnej bazy danych.

json
{ "mcpServers": { "postgres": { "command": "npx", "args": [ "-y", "@anthropic-ai/mcp-postgres", "postgresql://postgres:password@localhost:5432/my_app_db" ] } } }

Integruje silnik wyszukiwania webowego, pozwalając asystentowi znajdować świeżą dokumentację, rozwiązania niedawno zgłoszonych bugów lub zmiany w bibliotekach.

json
{ "mcpServers": { "brave-search": { "command": "npx", "args": [ "-y", "@anthropic-ai/mcp-brave-search" ], "env": { "BRAVE_API_KEY": "BSAu_your_brave_search_api_key" } } } }

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:

  1. Model rozpoznaje, że lokalne pliki nie wystarczą do udzielenia odpowiedzi.
  2. Formułuje wywołanie mcp__github__search_issues z filtrami repo:acme/platform state:open assignee:@me.
  3. Otrzymuje ustrukturyzowaną odpowiedź JSON od serwera GitHub.
  4. Formatuje odpowiedź w przystępnej formie.
markdown
Znaleziono 3 otwarte zadania przypisane do Ciebie: 1. **#42 — Fix login redirect loop** (Priorytet: Wysoki, Utworzono: 2 dni temu) 2. **#38 — Add rate limiting to auth API** (Priorytet: Średni, Utworzono: 5 dni temu) 3. **#35 — Update user profile settings page** (Priorytet: Niski, Utworzono: 1 tydzień temu) Czy chcesz szczegółowo przeanalizować kod w celu naprawy błędu w zadaniu #42?

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:

bash
mkdir my-mcp-server && cd my-mcp-server npm init -y npm install @modelcontextprotocol/sdk zod npm install -D typescript @types/node tsx

Krok 2. Implementacja serwera (server.ts)

Stwórz plik server.ts z definicją serwera i niestandardowego narzędzia:

typescript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; // 1. Ініціалізуємо сервер з метаданими const server = new McpServer({ name: "internal-crm-server", version: "1.0.0", }); // 2. Реєструємо інструмент пошуку користувача server.tool( "lookup-user", "Отримати профіль клієнта за його адресою електронної пошти", { email: z.string().email().describe("Email адреса зареєстрованого користувача"), }, async ({ email }) => { // Тут може бути реальний запит до CRM, Redis чи внутрішнього API const mockUser = { id: "usr_99812", email, name: "Олександр Коваленко", plan: "Enterprise", status: "active", createdAt: "2024-03-15T10:00:00Z", }; return { content: [ { type: "text", text: JSON.stringify(mockUser, null, 2), }, ], }; } ); // 3. Запускаємо сервер через стандартний stdio транспорт async function run() { const transport = new StdioServerTransport(); await server.connect(transport); console.error("Internal CRM MCP server started on stdio"); } run().catch((error) => { console.error("Server startup error:", error); process.exit(1); });

Krok 3. Podłączenie serwera do Claude Code

Dodaj utworzony serwer do .claude/settings.json swojego projektu:

json
{ "mcpServers": { "crm": { "command": "npx", "args": [ "tsx", "/Users/username/Developer/my-mcp-server/server.ts" ] } } }
Wskazówka

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

text
┌─────────────────────────────────────────────────────────────┐ │ ~/.claude/settings.json │ │ Narzędzia globalne: GitHub, Wyszukiwarka internetowa, Przeglądarka │ └──────────────────────────────┬──────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ .claude/settings.json │ │ Narzędzia lokalne: Dev PostgreSQL, specyficzne skrypty │ └─────────────────────────────────────────────────────────────┘
Ostrzeżenie

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

  1. Utwórz nowy Personal Access Token (classic lub fine-grained) na GitHubie w sekcji Settings → Developer settings z uprawnieniami repo oraz read:org.
  2. Otwórz lub utwórz plik konfiguracyjny ~/.claude/settings.json:
json
{ "mcpServers": { "github": { "command": "npx", "args": [ "-y", "@anthropic-ai/mcp-github" ], "env": { "GITHUB_TOKEN": "ghp_ваш_токен_тут" } } } }
  1. Uruchom nową sesję Claude Code i wykonaj weryfikacyjny prompt:
bash
claude

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:

  1. Dodaj serwer filesystem do .claude/settings.json:
json
{ "mcpServers": { "external-docs": { "command": "npx", "args": [ "-y", "@anthropic-ai/mcp-filesystem", "/шлях/до/вашої/папки/з_документами" ] } } }
  1. 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
Wskazówka

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.json w korzeniu projektu
  • D. CLAUDE.md
Wskazówka

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=name przed 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
Wskazówka

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.
Ten poradnik jest całkowicie darmowy. Jeśli oszczędził Ci wieczór, możesz wesprzeć rozwój projektu.
Wesprzyj autora