Ta usługa udostępnia podstawowe operacje kalkulatora za pomocą Model Context Protocol (MCP) wykorzystując Spring Boot z transportem WebFlux. Została zaprojektowana jako prosty przykład dla początkujących uczących się implementacji MCP.
Więcej informacji znajdziesz w dokumentacji referencyjnej MCP Server Boot Starter.
Usługa prezentuje:
- Obsługę SSE (Server-Sent Events)
- Automatyczną rejestrację narzędzi za pomocą adnotacji
@Toolz Spring AI - Podstawowe funkcje kalkulatora:
- Dodawanie, odejmowanie, mnożenie, dzielenie
- Potęgowanie i pierwiastek kwadratowy
- Moduł (reszta z dzielenia) i wartość bezwzględna
- Funkcję pomocy opisującą operacje
Ta usługa kalkulatora oferuje następujące możliwości:
-
Podstawowe działania arytmetyczne:
- Dodawanie dwóch liczb
- Odejmowanie jednej liczby od drugiej
- Mnożenie dwóch liczb
- Dzielenie jednej liczby przez drugą (z kontrolą dzielenia przez zero)
-
Zaawansowane operacje:
- Potęgowanie (podnoszenie podstawy do wykładnika)
- Obliczanie pierwiastka kwadratowego (z kontrolą liczb ujemnych)
- Obliczanie reszty z dzielenia (moduł)
- Obliczanie wartości bezwzględnej
-
System pomocy:
- Wbudowana funkcja pomocy wyjaśniająca dostępne operacje
Usługa udostępnia następujące endpointy API przez protokół MCP:
add(a, b): Dodaj dwie liczbysubtract(a, b): Odejmij drugą liczbę od pierwszejmultiply(a, b): Pomnóż dwie liczbydivide(a, b): Podziel pierwszą liczbę przez drugą (z kontrolą dzielenia przez zero)power(base, exponent): Oblicz potęgę liczbysquareRoot(number): Oblicz pierwiastek kwadratowy (z kontrolą liczb ujemnych)modulus(a, b): Oblicz resztę z dzieleniaabsolute(number): Oblicz wartość bezwzględnąhelp(): Pobierz informacje o dostępnych operacjach
Prosty klient testowy znajduje się w pakiecie com.microsoft.mcp.sample.client. Klasa SampleCalculatorClient demonstruje dostępne operacje usługi kalkulatora.
Projekt zawiera przykład klienta LangChain4j w com.microsoft.mcp.sample.client.LangChain4jClient, który pokazuje, jak zintegrować usługę kalkulatora z LangChain4j i modelami GitHub:
-
Konfiguracja tokena GitHub:
Aby korzystać z modeli AI GitHub (np. phi-4), potrzebujesz osobistego tokena dostępu GitHub:
a. Przejdź do ustawień konta GitHub: https://github.com/settings/tokens
b. Kliknij "Generate new token" → "Generate new token (classic)"
c. Nadaj tokenowi opisową nazwę
d. Wybierz następujące zakresy:
repo(pełna kontrola nad prywatnymi repozytoriami)read:org(odczyt członkostwa w organizacjach i zespołach, odczyt projektów organizacji)gist(tworzenie gistów)user:email(dostęp do adresów e-mail użytkownika (tylko do odczytu))
e. Kliknij "Generate token" i skopiuj nowy token
f. Ustaw go jako zmienną środowiskową:
Na Windows:
set GITHUB_TOKEN=your-github-tokenNa macOS/Linux:
export GITHUB_TOKEN=your-github-tokeng. Aby ustawić na stałe, dodaj go do zmiennych środowiskowych w ustawieniach systemu
-
Dodaj zależność LangChain4j GitHub do projektu (już zawarta w pom.xml):
<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-github</artifactId> <version>${langchain4j.version}</version> </dependency>
-
Upewnij się, że serwer kalkulatora działa na
localhost:8080
Przykład demonstruje:
- Połączenie z serwerem MCP kalkulatora przez transport SSE
- Użycie LangChain4j do stworzenia chatbota korzystającego z operacji kalkulatora
- Integrację z modelami AI GitHub (obecnie model phi-4)
Klient wysyła następujące przykładowe zapytania, aby pokazać działanie:
- Obliczenie sumy dwóch liczb
- Znalezienie pierwiastka kwadratowego liczby
- Uzyskanie informacji pomocy o dostępnych operacjach kalkulatora
Uruchom przykład i sprawdź konsolę, aby zobaczyć, jak model AI wykorzystuje narzędzia kalkulatora do odpowiedzi na zapytania.
Klient LangChain4j jest skonfigurowany do użycia modelu phi-4 GitHub z następującymi ustawieniami:
ChatLanguageModel model = GitHubChatModel.builder()
.apiKey(System.getenv("GITHUB_TOKEN"))
.timeout(Duration.ofSeconds(60))
.modelName("phi-4")
.logRequests(true)
.logResponses(true)
.build();Aby użyć innych modeli GitHub, wystarczy zmienić parametr modelName na inny obsługiwany model (np. "claude-3-haiku-20240307", "llama-3-70b-8192" itd.).
Projekt wymaga następujących kluczowych zależności:
<!-- For MCP Server -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>
<!-- For LangChain4j integration -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-mcp</artifactId>
<version>${langchain4j.version}</version>
</dependency>
<!-- For GitHub models support -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-github</artifactId>
<version>${langchain4j.version}</version>
</dependency>Zbuduj projekt za pomocą Maven:
./mvnw clean install -DskipTestsjava -jar target/calculator-server-0.0.1-SNAPSHOT.jarMCP Inspector to przydatne narzędzie do interakcji z usługami MCP. Aby użyć go z tą usługą kalkulatora:
-
Zainstaluj i uruchom MCP Inspector w nowym oknie terminala:
npx @modelcontextprotocol/inspector
-
Otwórz interfejs webowy klikając w wyświetlony adres URL (zazwyczaj http://localhost:6274)
-
Skonfiguruj połączenie:
- Ustaw typ transportu na "SSE"
- Ustaw URL na endpoint SSE działającego serwera:
http://localhost:8080/sse - Kliknij "Connect"
-
Korzystaj z narzędzi:
- Kliknij "List Tools", aby zobaczyć dostępne operacje kalkulatora
- Wybierz narzędzie i kliknij "Run Tool", aby wykonać operację
Projekt zawiera Dockerfile do wdrożenia w kontenerze:
-
Zbuduj obraz Dockera:
docker build -t calculator-mcp-service . -
Uruchom kontener Dockera:
docker run -p 8080:8080 calculator-mcp-service
To spowoduje:
- Zbudowanie wieloetapowego obrazu Dockera z Maven 3.9.9 i Eclipse Temurin 24 JDK
- Utworzenie zoptymalizowanego obrazu kontenera
- Udostępnienie usługi na porcie 8080
- Uruchomienie usługi kalkulatora MCP wewnątrz kontenera
Po uruchomieniu kontenera możesz uzyskać dostęp do usługi pod adresem http://localhost:8080.
-
Problemy z uprawnieniami tokena: Jeśli otrzymujesz błąd 403 Forbidden, sprawdź, czy token ma odpowiednie uprawnienia zgodnie z wymaganiami.
-
Token nie znaleziony: Jeśli pojawia się błąd "No API key found", upewnij się, że zmienna środowiskowa GITHUB_TOKEN jest poprawnie ustawiona.
-
Ograniczenia limitów: API GitHub ma limity zapytań. Jeśli napotkasz błąd limitu (kod statusu 429), odczekaj kilka minut przed ponowną próbą.
-
Wygasanie tokena: Tokeny GitHub mogą wygasać. Jeśli po pewnym czasie pojawią się błędy uwierzytelniania, wygeneruj nowy token i zaktualizuj zmienną środowiskową.
Jeśli potrzebujesz dalszej pomocy, sprawdź dokumentację LangChain4j lub dokumentację API GitHub.
Zastrzeżenie:
Niniejszy dokument został przetłumaczony przy użyciu usługi tłumaczenia AI Co-op Translator. Mimo że dążymy do dokładności, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w języku źródłowym powinien być uznawany za źródło autorytatywne. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia.
