Budowa minimalnego serwera MCP
Minimalny serwer udostępnia jedną wąską funkcję z przewidywalnymi argumentami i wynikami.
Czego się dowiesz
- Wyjaśnij: host, klient i serwer
- Zastosuj pomysł na przykładzie: Budowa minimalnego serwera MCP
- Rozpoznaj ograniczenia i zweryfikuj rezultaty ćwiczeń
Minimalny serwer udostępnia jedną wąską funkcję z przewidywalnymi argumentami i wynikami. Zacznij od fikcyjnych zasobów i nie pisz.
Jest to laboratorium koncepcyjne lub zewnętrzne. Nie zakłada się, że aplikacja udostępnia wszystkie opisane elementy sterujące.
Jak to działa, krok po kroku
Program obsługi demonstracji i testy
Poniższa procedura demonstracyjna wykorzystuje wyłącznie dane fikcyjne. W przypadku rzeczywistego serwera MCP zarejestruj go w wybranym zestawie SDK i transporcie, a następnie przetestuj wykrywanie i wywołania za pomocą kompatybilnego klienta. stdio odpowiada lokalnym podprocesom; Przesyłany strumieniowo protokół HTTP jest odpowiedni dla zdalnych punktów końcowych. Sprawdź wyraźnie zgodność ze starszymi wersjami SSE lub nowszymi wersjami.
const stock = new Map([['LX-240', 3], ['P-12', 5], ['A-7', 2]]);
function getProductStock(input) {
if (!input || typeof input.sku !== 'string' || !input.sku.trim())
throw new TypeError('A nonempty sku is required.');
const sku = input.sku.trim();
return stock.has(sku)
? { status: 'found', sku, quantity: stock.get(sku), synthetic: true }
: { status: 'not_found', sku, synthetic: true };
}
console.log(getProductStock({ sku: 'LX-240' }));
// { status: 'found', sku: 'LX-240', quantity: 3, synthetic: true }
Schemat objaśniający
Postępuj zgodnie ze strzałkami wskazującymi główny przepływ. Przerywane niebieskie strzałki przedstawiają dane lub kontekst; przerywane różowe strzałki pokazują opinie lub zwracane wyniki. Kolory i kształty wyróżniają modele, sklepy, decyzje i wyniki. Na małym ekranie przewijaj w poziomie, aby zobaczyć cały schemat.
Kompletny przykład
get_product_stock akceptuje ciąg znaków SKU. LX-240 zwraca ilość=3; nieznany SKU zwraca not_found zamiast zera. Prawdziwy serwer sprawdza również uprawnienia do katalogu.
{"name":"get_product_stock","description":"Read fictional stock; never reserve it","inputSchema":{"type":"object","properties":{"sku":{"type":"string","minLength":1}},"required":["sku"],"additionalProperties":false}}
Spróbuj sam
- Zaimplementuj kontrakt, korzystając z urządzenia i przetestuj brakujące, nieznane i prawidłowe dane wejściowe.
- Przed rozpoczęciem eksperymentu zapisz dane wejściowe, źródło i oczekiwany wynik. W przykładzie użyj wyłącznie fikcyjnych danych.
- Postępuj zgodnie z etapami diagramu. Na każdym etapie zapisuj, jakie informacje zostały otrzymane i wyprodukowane; nie myl produktu pośredniego z efektem końcowym.
- Powtórz po usunięciu niezbędnych informacji lub wprowadzeniu niejednoznaczności. Sprawdź, czy system wyjaśnia, zatrzymuje lub wymyśla odpowiedź.
- Porównaj z objaśnionym rozwiązaniem. Zachowaj konfigurację, datę, wynik i wyjaśnienie różnic. Zmień jedną rzecz i przetestuj ponownie.
Wyjaśnione rozwiązanie
W umowie rozróżnia się znalezione, nie znalezione i niepowodzenie, więc klienci nie muszą zgadywać. Pomyślne ćwiczenie pozwala pokazać związek między danymi wejściowymi, etapami i wynikiem. Gdy brakuje informacji, bardziej użyteczna jest ostrożna odpowiedź niż wymyślane szczegóły. Porównaj więcej niż styl: sprawdź także warunki, źródła i operacje.
Kiedy to podejście pomaga i jakie ma ograniczenia
Pin SDK i wersja protokołu; przykład umowy nie jest pełnym uściskiem dłoni. Wybierz to podejście, jeśli poprawia ono zmierzoną potrzebę. Zachowaj prostą linię bazową i porównaj wyniki, korzystając z identycznych danych wejściowych. Jeden udany przykład nie gwarantuje niezawodności w każdej sytuacji.
Sprawdź swoją wiedzę
Czy serwer z narzędziami automatycznie oferuje zasoby i podpowiedzi?
Nie. Możliwości są opcjonalne i należy je odkryć i sprawdzić.
Kto realizuje połączenie zaproponowane przez modelkę?
Aplikacja lub usługa hosta po sprawdzeniu poprawności. Model nie uzyskuje automatycznie nieograniczonego dostępu.
Jaki wynik powinno dać to ćwiczenie?
W umowie rozróżnia się znalezione, nie znalezione i niepowodzenie, więc klienci nie muszą zgadywać.
Pojęcia do zapamiętania
- Serwer MPK: Usługa udostępniająca możliwości poprzez protokół kontekstu modelu.
- Wywołanie narzędzia: Ustrukturyzowane żądanie użycia możliwości zewnętrznej.
- Autoryzacja / Autoryzacja: Sprawdzanie prawa dostępu do operacji lub zasobu.
Źródła i następny krok
- Model Context Protocol — specyfikacja
- LangGraph — Przepływy pracy i agenci
- OWASP — Wstrzykiwanie instrukcji
Aby przygotować: M03 — Bezpieczeństwo MCP i rozwiązywanie problemów