Czym jest serwer MCP? Narzędzia, zasoby i prompty wyjaśnione | We.Inc
Serwer MCP to program, który udostępnia aplikacjom AI narzędzia, zasoby i prompty przez Model Context Protocol. Zobacz prawdziwe komunikaty JSON krok po kroku.
Czym jest serwer MCP?
Serwer MCP to program, który daje aplikacjom AI materiał do pracy przez Model Context Protocol: narzędzia, które mogą wywołać, zasoby, które mogą odczytać, i prompty, które mogą wybrać użytkownicy. Aplikacja łączy się przez klienta MCP, a obie strony wymieniają komunikaty JSON-RPC 2.0 przez stdio lokalnie lub Streamable HTTP zdalnie.
Trzy rzeczy, które może oferować serwer
Prymityw
Czym jest
Kto decyduje o użyciu
Główne metody
Narzędzia
Funkcje wykonujące akcję, z JSON Schema dla danych wejściowych
Model
tools/list, tools/call
Zasoby
Dane tylko do odczytu adresowane przez URI, na przykład plik lub schemat
Aplikacja
resources/list, resources/read
Prompty
Szablony instrukcji wielokrotnego użytku z argumentami
Użytkownik
prompts/list, prompts/get
Przejdź poniżej przez prawdziwą wymianę komunikatów. Każdy krok pokazuje JSON wysyłany przez klienta i odpowiedź serwera, w kształtach komunikatów z aktualnej specyfikacji (wersja 2026-07-28). Czytanie surowych komunikatów to najszybszy sposób, by przestać traktować serwer jak magię.
Wybierz krok: wykrywanie, listowanie narzędzi, wywołanie narzędzia lub odbiór powiadomienia o zmianie.
Przeczytaj żądanie po lewej i odpowiedź po prawej.
Sprawdź notatkę pod parą, aby poznać pole, które w danym kroku liczy się najbardziej.
Skopiuj dowolny komunikat, aby porównać go z tym, co wysyła Twój serwer lub klient.
Nazywaj narzędzia z wyraźnym prefiksem, na przykład weather_current zamiast get. Host może ładować narzędzia z wielu serwerów naraz, a niejasne nazwy się zderzają.
Pisz opis każdego narzędzia dla modelu, a nie dla człowieka przeglądającego listę. Powiedz, co narzędzie robi i kiedy należy je wybrać.
Udostępniaj kontekst tylko do odczytu jako zasoby zamiast narzędzi. Zasoby pozwalają aplikacji decydować, co dołączyć, co powstrzymuje model przed pobieraniem niepotrzebnych danych.
Traktuj każde narzędzie, które coś zmienia, jako ryzykowne. Protokół zostawia zatwierdzanie hostowi, więc projektuj narzędzia, które można bezpiecznie potwierdzać po jednym wywołaniu.
Najczęściej zadawane pytania
Czy serwer MCP to to samo co API?
Zwykle je opakowuje. Typowy serwer wywołuje istniejące API lub bazę danych i opisuje te operacje w standardowy sposób, dzięki czemu każda aplikacja obsługująca MCP może je wykryć i wywołać bez własnego kodu integracji.
Czy serwer MCP działa na moim komputerze, czy w chmurze?
Jedno i drugie jest możliwe. Lokalny serwer jest uruchamiany przez aplikację i komunikuje się przez standardowe wejście i wyjście. Zdalny serwer działa gdzie indziej i jest osiągalny przez Streamable HTTP, gdzie może obsługiwać wielu klientów.
Czy serwer MCP zawiera model językowy?
Nie. Serwer oferuje tylko narzędzia, zasoby i prompty. Model należy do aplikacji hosta, która decyduje, co mu wysłać. Specyfikacja oznacza sampling zlecany przez serwer jako przestarzały od wersji 2026-07-28.
Co zmieniło się w wersji protokołu 2026-07-28?
Protokół stał się bezstanowy: każde żądanie przenosi wersję protokołu i możliwości w polu _meta, a serwery odpowiadają na obowiązkowe żądanie server/discover. Powiadomienia o zmianach są teraz opcjonalne i włącza się je przez strumień subscriptions/listen.
Kto zatwierdza wywołanie narzędzia?
Host. Dokumentacja protokołu proponuje okna zatwierdzania, ustawienia uprawnień i dzienniki aktywności, ale ich egzekwowanie to zadanie aplikacji, więc serwer nigdy nie powinien zakładać, że człowiek sprawdził wywołanie.
Host, klient i serwer
W każdej konfiguracji występują trzy role. Host to aplikacja AI, z której korzysta człowiek. Dla każdego serwera, z którym się łączy, host tworzy jednego klienta, a każdy klient utrzymuje dedykowane połączenie z dokładnie jednym serwerem.
Host połączony z serwerem plików i serwerem bazy danych ma więc dwóch klientów. Serwer to po prostu program, który odpowiada, gdziekolwiek działa.
Dwie warstwy: dane i transport
Warstwa danych definiuje komunikaty: żądania, odpowiedzi i powiadomienia JSON-RPC 2.0 do wykrywania, narzędzi, zasobów i promptów. Warstwa transportu przenosi te komunikaty oraz obsługuje nawiązywanie połączenia i autoryzację.
Istnieją dwa standardowe transporty. Stdio przesyła komunikaty przez standardowe wejście i wyjście między procesami na jednej maszynie. Streamable HTTP używa HTTP POST od klienta do serwera, z opcjonalnymi Server-Sent Events do strumieniowania, i obsługuje tokeny bearer, klucze API i OAuth.
Co klient może zaoferować w zamian
Serwery mogą też prosić klienta o różne rzeczy. Elicitation pozwala serwerowi poprosić użytkownika o dodatkowe informacje lub potwierdzenie przez metodę elicitation/create.
Sampling, w którym serwer prosi hosta o odpowiedź modelu, oraz logowanie na poziomie protokołu są przestarzałe od wersji 2026-07-28. Nowe serwery powinny logować do stderr przy stdio lub używać OpenTelemetry.
Stdio czy Streamable HTTP?
Wybór transportu
Stdio
Streamable HTTP
Gdzie działa serwer
Na tej samej maszynie, uruchamiany przez hosta
W dowolnym miejscu dostępnym przez sieć
Jak przesyłane są komunikaty
Strumienie standardowego wejścia i wyjścia
HTTP POST, opcjonalnie Server-Sent Events
Typowa liczba klientów na serwer
Jeden
Wielu
Uwierzytelnianie
Niepotrzebne, to lokalny proces
Tokeny bearer, klucze API, własne nagłówki; zalecany OAuth
Gdzie logować
stderr (stdout przenosi komunikaty protokołu)
Zwykłe logi Twojego serwera
Jak wygląda szablon zasobu
Szablon zasobu z parametrem URI
Klienci znajdują szablony przez resources/templates/list, uzupełniają nawiasy klamrowe i odczytują wynik przez resources/read.
1. Wykrywanie
server/discover jest opcjonalne dla klienta, ale każdy serwer musi na nie odpowiadać. Obiekt capabilities mówi, które prymitywy istnieją; listChanged oznacza, że serwer może powiadamiać o zmianach narzędzi.
2. Lista narzędzi
Każde narzędzie ma nazwę, opis i inputSchema zapisany w JSON Schema. Host przekazuje je modelowi, aby wiedział, co może wywołać.
3. Wywołanie narzędzia
Nazwa musi dokładnie odpowiadać narzędziu z listy, a argumenty muszą pasować do jego inputSchema. Wyniki wracają jako tablica content, tutaj z jednym elementem tekstowym.
4. Powiadomienie o zmianie
Powiadomienia nie mają id, więc nic na nie nie odpowiada. Klient otrzymuje to powiadomienie tylko dlatego, że otworzył strumień subscriptions/listen z prośbą o toolsListChanged.