Projek ini menunjukkan cara untuk mencipta klien Java yang berhubung dan berinteraksi dengan pelayan MCP (Model Context Protocol). Dalam contoh ini, kita akan berhubung dengan pelayan kalkulator dari Bab 01 dan melakukan pelbagai operasi matematik.
Sebelum menjalankan klien ini, anda perlu:
-
Mulakan Pelayan Kalkulator dari Bab 01:
- Pergi ke direktori pelayan kalkulator:
03-GettingStarted/01-first-server/solution/java/ - Bina dan jalankan pelayan kalkulator:
cd ..\01-first-server\solution\java .\mvnw clean install -DskipTests java -jar target\calculator-server-0.0.1-SNAPSHOT.jar - Pelayan sepatutnya berjalan di
http://localhost:8080
- Pergi ke direktori pelayan kalkulator:
-
Java 21 atau lebih tinggi dipasang pada sistem anda
-
Maven (termasuk melalui Maven Wrapper)
SDKClient adalah aplikasi Java yang menunjukkan cara untuk:
- Berhubung dengan pelayan MCP menggunakan pengangkutan Server-Sent Events (SSE)
- Senaraikan alat yang tersedia dari pelayan
- Panggil pelbagai fungsi kalkulator secara jauh
- Mengendalikan respons dan memaparkan keputusan
Klien menggunakan rangka kerja Spring AI MCP untuk:
- Mewujudkan Sambungan: Mencipta pengangkutan WebFlux SSE untuk berhubung dengan pelayan kalkulator
- Inisialisasi Klien: Menyediakan klien MCP dan mewujudkan sambungan
- Mengesan Alat: Menyenaraikan semua operasi kalkulator yang tersedia
- Melaksanakan Operasi: Memanggil pelbagai fungsi matematik dengan data contoh
- Memaparkan Keputusan: Menunjukkan hasil setiap pengiraan
src/
└── main/
└── java/
└── com/
└── microsoft/
└── mcp/
└── sample/
└── client/
└── SDKClient.java # Main client implementation
Projek ini menggunakan kebergantungan utama berikut:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>Kebergantungan ini menyediakan:
McpClient- Antara muka klien utamaWebFluxSseClientTransport- Pengangkutan SSE untuk komunikasi berasaskan web- Skema protokol MCP dan jenis permintaan/respons
Bina projek menggunakan Maven wrapper:
.\mvnw clean installjava -jar .\target\calculator-client-0.0.1-SNAPSHOT.jarNota: Pastikan pelayan kalkulator berjalan di http://localhost:8080 sebelum menjalankan mana-mana arahan ini.
Apabila anda menjalankan klien, ia akan:
- Berhubung dengan pelayan kalkulator di
http://localhost:8080 - Senaraikan Alat - Memaparkan semua operasi kalkulator yang tersedia
- Lakukan Pengiraan:
- Penambahan: 5 + 3 = 8
- Penolakan: 10 - 4 = 6
- Pendaraban: 6 × 7 = 42
- Pembahagian: 20 ÷ 4 = 5
- Kuasa: 2^8 = 256
- Punca Kuasa Dua: √16 = 4
- Nilai Mutlak: |-5.5| = 5.5
- Bantuan: Memaparkan operasi yang tersedia
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]
Nota: Anda mungkin melihat amaran Maven tentang thread yang masih berjalan pada akhir - ini adalah normal untuk aplikasi reaktif dan tidak menunjukkan ralat.
var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080"));Ini mencipta pengangkutan SSE (Server-Sent Events) yang berhubung dengan pelayan kalkulator.
var client = McpClient.sync(this.transport).build();
client.initialize();Mencipta klien MCP secara segerak dan memulakan sambungan.
CallToolResult resultAdd = client.callTool(new CallToolRequest("add", Map.of("a", 5.0, "b", 3.0)));Memanggil alat "add" dengan parameter a=5.0 dan b=3.0.
Jika anda mendapat ralat sambungan, pastikan pelayan kalkulator dari Bab 01 sedang berjalan:
Error: Connection refused
Penyelesaian: Mulakan pelayan kalkulator terlebih dahulu.
Jika port 8080 sedang digunakan:
Error: Address already in use
Penyelesaian: Hentikan aplikasi lain yang menggunakan port 8080 atau ubah pelayan untuk menggunakan port lain.
Jika anda menghadapi ralat semasa membina:
.\mvnw clean install -DskipTestsPenafian:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co-op Translator. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan profesional oleh manusia adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.