Mafunzo ya Kihesabu ya MCP kwa Waanzilishi
July 3, 2026 · View on GitHub
Jedwali la Yaliyomo
- Utakachojifunza
- Mahitaji ya Awali
- Kuelewa Muundo wa Mradi
- Vipengele Muhimu Vilivyoelezwa
- Kukimbiza Mifano
- Jinsi Yote Hufanya Kazi Pamoja
- Hatua Zinazofuata
Utakachojifunza
Mafunzo haya yanaeleza jinsi ya kujenga huduma ya kihesabu kwa kutumia Itifaki ya Muktadha wa Mfano (MCP). Utaelewa:
- Jinsi ya kuunda huduma ambayo AI inaweza kuitumia kama chombo
- Jinsi ya kuanzisha mawasiliano ya moja kwa moja na huduma za MCP
- Jinsi mifano ya AI inaweza kuchagua moja kwa moja ni zana gani za kutumia
- Tofauti kati ya miito ya itifaki ya moja kwa moja na mwingiliano unaosaidiwa na AI
Mahitaji ya Awali
Kabla ya kuanza, hakikisha una:
- Java 21 au zaidi imewekwa
- Maven kwa usimamizi wa utegemezi
- Uwekaji wa mfano wa Azure AI Foundry (utengeneze kwa
azd up— angalia Sura ya 2) - Azure CLI, umeingia kwa kutumia
az login(uthibitishaji bila funguo) - Uelewa wa msingi wa Java na Spring Boot
Kuelewa Muundo wa Mradi
Mradi wa kihesabu una faili kadhaa muhimu:
calculator/
├── src/main/java/com/microsoft/mcp/sample/server/
│ ├── McpServerApplication.java # Main Spring Boot app
│ └── service/CalculatorService.java # Calculator operations
└── src/test/java/com/microsoft/mcp/sample/client/
├── SDKClient.java # Direct MCP communication
├── LangChain4jClient.java # AI-powered client
└── Bot.java # Simple chat interface
Vipengele Muhimu Vilivyoelezwa
1. Programu Kuu
Faili: McpServerApplication.java
Hii ni sehemu ya kuingia ya huduma yetu ya kihesabu. Ni programu ya kawaida ya Spring Boot na ongezeko moja maalum:
@SpringBootApplication
public class McpServerApplication {
public static void main(String[] args) {
SpringApplication.run(McpServerApplication.class, args);
}
@Bean
public ToolCallbackProvider calculatorTools(CalculatorService calculator) {
return MethodToolCallbackProvider.builder().toolObjects(calculator).build();
}
}
Hii hufanya nini:
- Huanza seva ya mtandao ya Spring Boot kwenye bandari 8080
- Inaunda
ToolCallbackProviderinayofanya njia za kihesabu zetu zipatikane kama zana za MCP - Alama
@Beaninamwambia Spring kusimamia hii kama sehemu inayoweza kutumika na sehemu zingine
2. Huduma ya Kihesabu
Faili: CalculatorService.java
Hapa ndipo hesabu zote zinafanyika. Kila njia imesanifiwa na @Tool ili ifikike kupitia MCP:
@Service
public class CalculatorService {
@Tool(description = "Add two numbers together")
public String add(double a, double b) {
double result = a + b;
return formatResult(a, "+", b, result);
}
@Tool(description = "Subtract the second number from the first number")
public String subtract(double a, double b) {
double result = a - b;
return formatResult(a, "-", b, result);
}
// Operesheni zaidi za kalkuleta...
private String formatResult(double a, String operator, double b, double result) {
return String.format("%.2f %s %.2f = %.2f", a, operator, b, result);
}
}
Sifa Muhimu:
- Alama ya
@Tool: Hii inamwambia MCP kwamba njia hii inaweza kuitwa na wateja wa nje - Maelezo Wazi: Kila zana ina maelezo yanayosaidia mifano ya AI kuelewa lini ya kuitumia
- Mwonekano Thabiti wa Matokeo: Matendo yote hurudisha herufi zinazoweza kusomeka na binadamu kama "5.00 + 3.00 = 8.00"
- Ushughulikiaji wa Makosa: Mgawanyiko kwa sifuri na mizizi hasi hurudisha ujumbe wa makosa
Matendo Yanayopatikana:
add(a, b)- Kuongeza nambari mbilisubtract(a, b)- Kutoa ya pili kutoka ya kwanzamultiply(a, b)- Kuzidisha nambari mbilidivide(a, b)- Kugawanya ya kwanza kwa ya pili (kwa ukaguzi wa sifuri)power(base, exponent)- Kuweka msingi katika nguvu ya exponentsquareRoot(number)- Kukokotoa mzizi wa mraba (kwa ukaguzi wa hasi)modulus(a, b)- Kurudisha mabaki ya mgawanyikoabsolute(number)- Kurudisha thamani isiyo na alamahelp()- Kutoa taarifa kuhusu matendo yote
3. Mteja wa MCP Moja kwa Moja
Faili: SDKClient.java
Mteja huyu husema moja kwa moja na seva ya MCP bila kutumia AI. Anaita kwa mikono kazi maalum za kihesabu:
public class SDKClient {
public static void main(String[] args) {
McpClientTransport transport = WebFluxSseClientTransport.builder(
WebClient.builder().baseUrl("http://localhost:8080")
).build();
new SDKClient(transport).run();
}
public void run() {
var client = McpClient.sync(this.transport).build();
client.initialize();
// Orodha ya zana zilizopatikana
ListToolsResult toolsList = client.listTools();
System.out.println("Available Tools = " + toolsList);
// Piga simu kwa kazi maalum za kalkuleta
CallToolResult resultAdd = client.callTool(
new CallToolRequest("add", Map.of("a", 5.0, "b", 3.0))
);
System.out.println("Add Result = " + resultAdd);
CallToolResult resultSqrt = client.callTool(
new CallToolRequest("squareRoot", Map.of("number", 16.0))
);
System.out.println("Square Root Result = " + resultSqrt);
client.closeGracefully();
}
}
Hii hufanya nini:
- Inaunganisha na seva ya kihesabu kwenye
http://localhost:8080kwa kutumia muundo wa muundaji - Inaorodhesha zana zote zinazopatikana (kazi zetu za kihesabu)
- Huita kazi maalum kwa vigezo kamili
- Inachapisha matokeo moja kwa moja
Kumbuka: Mfano huu unatumia utegemezi wa Spring AI 1.1.0-SNAPSHOT, ulioleta muundo wa muundaji kwa WebFluxSseClientTransport. Ikiwa unatumia toleo la zamani thabiti, huenda ukahitaji kutumia mjenzi wa moja kwa moja badala yake.
Unapotumia: Unapojua haswa hesabu gani unayotaka kufanya na unataka kuiita kwa njia ya programu.
4. Mteja Anayezingatia AI
Faili: LangChain4jClient.java
Mteja huyu hutumia mfano wa AI (GPT-4o-mini) ambaye anaweza kuchagua moja kwa moja ni zana gani ya kihesabu kutumia:
public class LangChain4jClient {
public static void main(String[] args) throws Exception {
// Weka mfano wa AI (Azure AI Foundry, uthibitishaji bila funguo kupitia Microsoft Entra ID)
String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT");
String baseUrl = (endpoint.endsWith("/") ? endpoint : endpoint + "/") + "openai/v1";
String token = new DefaultAzureCredentialBuilder().build()
.getToken(new TokenRequestContext().addScopes("https://ai.azure.com/.default"))
.block().getToken();
ChatLanguageModel model = OpenAiOfficialChatModel.builder()
.baseUrl(baseUrl)
.apiKey(token)
.modelName("gpt-4o-mini")
.build();
// Unganisha na seva yetu ya kisanduku MCP
McpTransport transport = new HttpMcpTransport.Builder()
.sseUrl("http://localhost:8080/sse")
.logRequests(true) // Inaonyesha kile AI inachofanya
.logResponses(true)
.build();
McpClient mcpClient = new DefaultMcpClient.Builder()
.transport(transport)
.build();
// Toa AI ufikiaji kwa zana zetu za kisanduku
ToolProvider toolProvider = McpToolProvider.builder()
.mcpClients(List.of(mcpClient))
.build();
// Unda roboti ya AI inayoweza kutumia kisanduku chetu
Bot bot = AiServices.builder(Bot.class)
.chatLanguageModel(model)
.toolProvider(toolProvider)
.build();
// Sasa tunaweza kumwomba AI kufanya mahesabu kwa lugha ya asili
String response = bot.chat("Calculate the sum of 24.5 and 17.3 using the calculator service");
System.out.println(response);
response = bot.chat("What's the square root of 144?");
System.out.println(response);
}
}
Hii hufanya nini:
- Inaunda muunganisho wa mfano wa AI kwa kutumia uthibitishaji bila funguo (Microsoft Entra ID)
- Inaunganisha AI na seva yetu ya MCP ya kihesabu
- Inampa AI upatikanaji wa zana zote za kihesabu zetu
- Inaruhusu maombi ya lugha asilia kama "Hesabu jumla ya 24.5 na 17.3"
AI moja kwa moja:
- Huelewa unataka kuongeza nambari
- Huchagua zana ya
add - Huita
add(24.5, 17.3) - Hurudisha matokeo katika jibu la asili
Kukimbiza Mifano
Hatua ya 1: Anzisha Seva ya Kihesabu
Kwanza, ingia na weka anwani yako ya Azure AI Foundry (inahitajika kwa mteja wa AI — uthibitishaji bila funguo, bila ufunguo wa API):
Windows:
az login
set AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
Linux/macOS:
az login
export AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
Anzisha seva:
cd 04-PracticalSamples/calculator
mvn clean spring-boot:run
Seva itaanza kwenye http://localhost:8080. Utauona:
Started McpServerApplication in X.XXX seconds
Hatua ya 2: Jaribu na Mteja wa Moja kwa Moja
Katika terminal MPYA huku Seva ikiantia kazi, endesha mteja wa MCP wa moja kwa moja:
cd 04-PracticalSamples/calculator
mvn test-compile exec:java -Dexec.mainClass="com.microsoft.mcp.sample.client.SDKClient" -Dexec.classpathScope=test
Utaona matokeo kama:
Available Tools = [add, subtract, multiply, divide, power, squareRoot, modulus, absolute, help]
Add Result = 5.00 + 3.00 = 8.00
Square Root Result = √16.00 = 4.00
Hatua ya 3: Jaribu na Mteja wa AI
mvn test-compile exec:java -Dexec.mainClass="com.microsoft.mcp.sample.client.LangChain4jClient" -Dexec.classpathScope=test
Utaona AI ikitumia zana moja kwa moja:
The sum of 24.5 and 17.3 is 41.8.
The square root of 144 is 12.
Hatua ya 4: Funga Seva ya MCP
Ukimaliza kupima, unaweza kusitisha mteja wa AI kwa kubonyeza Ctrl+C kwenye terminal yake. Seva ya MCP itaendelea kuendesha hadi utakapotaka kuiacha.
Kusitisha seva, bonyeza Ctrl+C kwenye terminal inayoendesha.
Jinsi Yote Hufanya Kazi Pamoja
Hivi ndivyo mtiririko kamili unavyokuwa unapoambia AI "Ni 5 + 3?":
- Wewe unauliza AI kwa lugha ya asili
- AI inachambua ombi lako na kutambua unataka kuongeza
- AI inaita seva ya MCP:
add(5.0, 3.0) - Huduma ya Kihesabu inafanya:
5.0 + 3.0 = 8.0 - Huduma ya Kihesabu hurudisha:
"5.00 + 3.00 = 8.00" - AI inapokea matokeo na kuandaa jibu la asili
- Wewe unapata: "Jumla ya 5 na 3 ni 8"
Hatua Zinazofuata
Kwa mifano zaidi, angalia Sura ya 04: Sampuli za Vitendo
Kionyozo: Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI Co-op Translator. Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii.