Ovaj servis pruža osnovne operacije kalkulatora putem Model Context Protocol (MCP) koristeći Spring Boot sa WebFlux transportom. Dizajniran je kao jednostavan primer za početnike koji uče o MCP implementacijama.
Za više informacija, pogledajte referentnu dokumentaciju MCP Server Boot Starter.
Servis prikazuje:
- Podršku za SSE (Server-Sent Events)
- Automatsku registraciju alata koristeći Spring AI
@Toolanotaciju - Osnovne funkcije kalkulatora:
- Sabiranje, oduzimanje, množenje, deljenje
- Izračunavanje stepena i kvadratnog korena
- Modulo (ostatak) i apsolutna vrednost
- Funkcija pomoći za opise operacija
Ovaj kalkulator servis nudi sledeće mogućnosti:
-
Osnovne aritmetičke operacije:
- Sabiranje dva broja
- Oduzimanje jednog broja od drugog
- Množenje dva broja
- Deljenje jednog broja drugim (sa proverom deljenja nulom)
-
Napredne operacije:
- Izračunavanje stepena (podizanje baze na eksponent)
- Izračunavanje kvadratnog korena (sa proverom negativnog broja)
- Izračunavanje modula (ostatka)
- Izračunavanje apsolutne vrednosti
-
Sistem pomoći:
- Ugrađena funkcija pomoći koja objašnjava sve dostupne operacije
Servis izlaže sledeće API krajnje tačke putem MCP protokola:
add(a, b): Saberi dva brojasubtract(a, b): Oduzmi drugi broj od prvogmultiply(a, b): Pomnoži dva brojadivide(a, b): Podeli prvi broj drugim (sa proverom nule)power(base, exponent): Izračunaj stepen brojasquareRoot(number): Izračunaj kvadratni koren (sa proverom negativnog broja)modulus(a, b): Izračunaj ostatak pri deljenjuabsolute(number): Izračunaj apsolutnu vrednosthelp(): Dobij informacije o dostupnim operacijama
Jednostavan test klijent je uključen u com.microsoft.mcp.sample.client paket. SampleCalculatorClient klasa demonstrira dostupne operacije kalkulator servisa.
Projekat uključuje LangChain4j primer klijenta u com.microsoft.mcp.sample.client.LangChain4jClient koji pokazuje kako integrisati kalkulator servis sa LangChain4j i GitHub modelima:
-
Postavljanje GitHub Tokena:
Da biste koristili GitHub-ove AI modele (kao što je phi-4), potrebno vam je GitHub personalni pristupni token:
a. Idite na podešavanja vašeg GitHub naloga: https://github.com/settings/tokens
b. Kliknite "Generate new token" → "Generate new token (classic)"
c. Dajte svom tokenu opisno ime
d. Izaberite sledeće opsege:
repo(Potpuna kontrola privatnih repozitorijuma)read:org(Čitanje članstva u organizaciji i timu, čitanje projekata organizacije)gist(Kreiranje gista)user:email(Pristup korisničkim email adresama (samo za čitanje))
e. Kliknite "Generate token" i kopirajte svoj novi token
f. Postavite ga kao promenljivu okruženja:
Na Windowsu:
set GITHUB_TOKEN=your-github-tokenNa macOS/Linuxu:
export GITHUB_TOKEN=your-github-tokeng. Za trajno postavljanje, dodajte ga u promenljive okruženja putem sistemskih podešavanja
-
Dodajte LangChain4j GitHub zavisnost u vaš projekat (već uključeno u pom.xml):
<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-github</artifactId> <version>${langchain4j.version}</version> </dependency>
-
Osigurajte da kalkulator server radi na
localhost:8080
Ovaj primer demonstrira:
- Povezivanje sa kalkulator MCP serverom putem SSE transporta
- Korišćenje LangChain4j za kreiranje chat bota koji koristi kalkulator operacije
- Integracija sa GitHub AI modelima (sada koristi phi-4 model)
Klijent šalje sledeće uzorke upita da demonstrira funkcionalnost:
- Izračunavanje zbira dva broja
- Pronalaženje kvadratnog korena broja
- Dobijanje informacija o dostupnim kalkulator operacijama
Pokrenite primer i proverite izlaz na konzoli da vidite kako AI model koristi kalkulator alate za odgovaranje na upite.
LangChain4j klijent je konfigurisan da koristi GitHub-ov phi-4 model sa sledećim podešavanjima:
ChatLanguageModel model = GitHubChatModel.builder()
.apiKey(System.getenv("GITHUB_TOKEN"))
.timeout(Duration.ofSeconds(60))
.modelName("phi-4")
.logRequests(true)
.logResponses(true)
.build();Da biste koristili različite GitHub modele, jednostavno promenite modelName parametar na drugi podržani model (npr. "claude-3-haiku-20240307", "llama-3-70b-8192", itd.).
Projekat zahteva sledeće ključne zavisnosti:
<!-- 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>Izgradite projekat koristeći Maven:
./mvnw clean install -DskipTestsjava -jar target/calculator-server-0.0.1-SNAPSHOT.jarMCP Inspector je koristan alat za interakciju sa MCP servisima. Da biste ga koristili sa ovim kalkulator servisom:
-
Instalirajte i pokrenite MCP Inspector u novom terminal prozoru:
npx @modelcontextprotocol/inspector
-
Pristupite web UI klikom na URL koji aplikacija prikazuje (obično http://localhost:6274)
-
Konfigurišite konekciju:
- Postavite tip transporta na "SSE"
- Postavite URL na SSE krajnju tačku vašeg servera:
http://localhost:8080/sse - Kliknite "Connect"
-
Koristite alate:
- Kliknite "List Tools" da vidite dostupne kalkulator operacije
- Izaberite alat i kliknite "Run Tool" da izvršite operaciju
Projekat uključuje Dockerfile za kontejnerizovano postavljanje:
-
Izgradite Docker sliku:
docker build -t calculator-mcp-service . -
Pokrenite Docker kontejner:
docker run -p 8080:8080 calculator-mcp-service
Ovo će:
- Izgraditi multi-stage Docker sliku sa Maven 3.9.9 i Eclipse Temurin 24 JDK
- Kreirati optimizovanu sliku kontejnera
- Izložiti servis na portu 8080
- Pokrenuti MCP kalkulator servis unutar kontejnera
Možete pristupiti servisu na http://localhost:8080 kada kontejner radi.
-
Problemi sa dozvolama tokena: Ako dobijete 403 Forbidden grešku, proverite da li vaš token ima ispravne dozvole kako je navedeno u preduslovima.
-
Token nije pronađen: Ako dobijete grešku "No API key found", osigurajte da je GITHUB_TOKEN promenljiva okruženja pravilno postavljena.
-
Ograničenje brzine: GitHub API ima ograničenja brzine. Ako naiđete na grešku ograničenja brzine (status kod 429), sačekajte nekoliko minuta pre nego što ponovo pokušate.
-
Istek tokena: GitHub tokeni mogu isteći. Ako dobijete greške autentikacije nakon nekog vremena, generišite novi token i ažurirajte svoju promenljivu okruženja.
Ako vam je potrebna dodatna pomoć, proverite LangChain4j dokumentaciju ili GitHub API dokumentaciju.
Одричање од одговорности:
Овај документ је преведен коришћењем услуге превођења вештачке интелигенције Co-op Translator. Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације, препоручује се професионални људски превод. Нисмо одговорни за било каква погрешна разумевања или тумачења која могу настати услед коришћења овог превода.
