Mradi huu unaonyesha jinsi ya kuunda mteja wa Java unaounganisha na kuwasiliana na seva ya MCP (Model Context Protocol). Katika mfano huu, tutajiunga na seva ya calculator kutoka Sura ya 01 na kufanya shughuli mbalimbali za kihisabati.
Kabla ya kuendesha mteja huyu, unahitaji:
-
Anzisha Seva ya Calculator kutoka Sura ya 01:
- Nenda kwenye saraka ya seva ya calculator:
03-GettingStarted/01-first-server/solution/java/ - Jenga na endesha seva ya calculator:
cd ..\01-first-server\solution\java .\mvnw clean install -DskipTests java -jar target\calculator-server-0.0.1-SNAPSHOT.jar - Seva inapaswa kuwa inafanya kazi kwenye
http://localhost:8080
- Nenda kwenye saraka ya seva ya calculator:
-
Java 21 or higher installed on your system
-
Maven (included via Maven Wrapper)
The SDKClient ni programu ya Java inayonyesha jinsi ya:
- Kuungana na seva ya MCP kwa kutumia Server-Sent Events (SSE) kama usafirishaji
- Orodhesha zana zinazopatikana kutoka kwenye seva
- Piga simu kwa kazi mbalimbali za calculator kwa mbali
- Shughulikia majibu na onyesha matokeo
Mteja hutumia mfumo wa Spring AI MCP kufanya:
- Kuanzisha Muunganisho: Huunda mteja wa WebFlux SSE kama usafirishaji kuungana na seva ya calculator
- Kuanzisha Mteja: Huandaa mteja wa MCP na kuanzisha muunganisho
- Kubaini Zana: Orodhesha shughuli zote zinazopatikana za calculator
- Kutekeleza Shughuli: Piga simu kwa kazi mbalimbali za kihisabati kwa data ya mfano
- Onyesha Matokeo: Onyesha matokeo ya kila hesabu
src/
└── main/
└── java/
└── com/
└── microsoft/
└── mcp/
└── sample/
└── client/
└── SDKClient.java # Main client implementation
Mradi hutumia mategemeo yafuatayo muhimu:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>Mategemeo haya yanatoa:
McpClient- The main client interfaceWebFluxSseClientTransport- usafirishaji wa SSE kwa mawasiliano ya mtandao- Mipangilio ya itifaki ya MCP na aina za maombi/jawabu
Jenga mradi kwa kutumia Maven wrapper:
.\mvnw clean installjava -jar .\target\calculator-client-0.0.1-SNAPSHOT.jarNote: Hakikisha seva ya calculator inafanya kazi kwenye http://localhost:8080 before executing any of these commands.
When you run the client, it will:
- Connect to the calculator server at
http://localhost:8080 - Orodhesha Zana - Onyesha shughuli zote zinazopatikana za calculator
- Fanya Hesabu:
- Jumlisha: 5 + 3 = 8
- Toa: 10 - 4 = 6
- Zidisha: 6 × 7 = 42
- Gawanya: 20 ÷ 4 = 5
- Nguvu: 2^8 = 256
- Mzizi wa Mraba: √16 = 4
- Thamani Kamili: |-5.5| = 5.5
- Msaada: Onyesha shughuli zinazopatikana
Available Tools = ListToolsResult[tools=[Tool[name=add, description=Add two numbers together, ...], ...]]
Add Result = CallToolResult[content=[TextContent[text="5,00 + 3,00 = 8,00"]], isError=false]
Subtract Result = CallToolResult[content=[TextContent[text="10,00 - 4,00 = 6,00"]], isError=false]
Multiply Result = CallToolResult[content=[TextContent[text="6,00 * 7,00 = 42,00"]], isError=false]
Divide Result = CallToolResult[content=[TextContent[text="20,00 / 4,00 = 5,00"]], isError=false]
Power Result = CallToolResult[content=[TextContent[text="2,00 ^ 8,00 = 256,00"]], isError=false]
Square Root Result = CallToolResult[content=[TextContent[text="√16,00 = 4,00"]], isError=false]
Absolute Result = CallToolResult[content=[TextContent[text="|-5,50| = 5,50"]], isError=false]
Help = CallToolResult[content=[TextContent[text="Basic Calculator MCP Service\n\nAvailable operations:\n1. add(a, b) - Adds two numbers\n2. subtract(a, b) - Subtracts the second number from the first\n..."]], isError=false]
Note: Unaweza kuona onyo za Maven kuhusu thread zinazobaki mwishoni - hili ni kawaida kwa programu zinazotumia reactive na halimaanishi hitilafu.
var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080"));Hii huunda usafirishaji wa SSE (Server-Sent Events) unaounganisha na seva ya calculator.
var client = McpClient.sync(this.transport).build();
client.initialize();Huunda mteja wa MCP wa synchronous na kuanzisha muunganisho.
CallToolResult resultAdd = client.callTool(new CallToolRequest("add", Map.of("a", 5.0, "b", 3.0)));Inapiga simu kwa zana ya "add" kwa vigezo a=5.0 na b=3.0.
Kama unapata makosa ya muunganisho, hakikisha seva ya calculator kutoka Sura ya 01 inafanya kazi:
Error: Connection refused
Solution: Anzisha seva ya calculator kwanza.
Kama bandari 8080 inatumika:
Error: Address already in use
Solution: Zima programu nyingine zinazotumia bandari 8080 au badilisha seva itumie bandari tofauti.
Kama unakutana na makosa ya kujenga:
.\mvnw clean install -DskipTestsKiarifu:
Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI Co-op Translator. Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kwamba tafsiri za moja kwa moja zinaweza kuwa na makosa au upungufu wa usahihi. Hati asili katika lugha yake ya asili inapaswa kuzingatiwa kama chanzo cha kuaminika. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na watu inashauriwa. Hatuna dhamana kwa maelezo potofu au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.