این پروژه نشان میدهد چگونه یک کلاینت جاوا ایجاد کنیم که به سرور MCP (پروتکل زمینه مدل) متصل شده و با آن تعامل داشته باشد. در این مثال، به سرور ماشینحساب از فصل ۰۱ متصل میشویم و عملیات مختلف ریاضی را انجام میدهیم.
قبل از اجرای این کلاینت، باید:
-
سرور ماشینحساب فصل ۰۱ را راهاندازی کنید:
- به دایرکتوری سرور ماشینحساب بروید:
03-GettingStarted/01-first-server/solution/java/ - سرور ماشینحساب را بسازید و اجرا کنید:
cd ..\01-first-server\solution\java .\mvnw clean install -DskipTests java -jar target\calculator-server-0.0.1-SNAPSHOT.jar - سرور باید روی
http://localhost:8080
- به دایرکتوری سرور ماشینحساب بروید:
-
Java 21 or higher installed on your system
-
Maven (included via Maven Wrapper)
The `` در حال اجرا باشد
SDKClient یک برنامه جاوا است که نشان میدهد چگونه:
- به سرور MCP با استفاده از انتقال Server-Sent Events (SSE) متصل شویم
- ابزارهای موجود روی سرور را فهرست کنیم
- توابع مختلف ماشینحساب را از راه دور فراخوانی کنیم
- پاسخها را مدیریت کرده و نتایج را نمایش دهیم
کلاینت از چارچوب Spring AI MCP استفاده میکند تا:
- برقراری اتصال: ایجاد یک کلاینت انتقال WebFlux SSE برای اتصال به سرور ماشینحساب
- راهاندازی کلاینت: تنظیم کلاینت MCP و برقراری اتصال
- کشف ابزارها: فهرست کردن تمام عملیات موجود ماشینحساب
- اجرای عملیات: فراخوانی توابع ریاضی مختلف با دادههای نمونه
- نمایش نتایج: نمایش نتایج هر محاسبه
src/
└── main/
└── java/
└── com/
└── microsoft/
└── mcp/
└── sample/
└── client/
└── SDKClient.java # Main client implementation
این پروژه از وابستگیهای کلیدی زیر استفاده میکند:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>این وابستگی شامل موارد زیر است:
McpClient- The main client interfaceWebFluxSseClientTransport- انتقال SSE برای ارتباط مبتنی بر وب- طرحهای پروتکل MCP و انواع درخواست/پاسخ
پروژه را با استفاده از Maven wrapper بسازید:
.\mvnw clean installjava -jar .\target\calculator-client-0.0.1-SNAPSHOT.jarتوجه: مطمئن شوید سرور ماشینحساب روی 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در حال اجرا است
۲. فهرست ابزارها - نمایش تمام عملیات موجود ماشینحساب
۳. انجام محاسبات:- جمع: ۵ + ۳ = ۸
- تفریق: ۱۰ - ۴ = ۶
- ضرب: ۶ × ۷ = ۴۲
- تقسیم: ۲۰ ÷ ۴ = ۵
- توان: ۲^۸ = ۲۵۶
- جذر: √۱۶ = ۴
- قدر مطلق: |-۵.۵| = ۵.۵
- راهنما: نمایش عملیات موجود
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]
توجه: ممکن است در پایان هشدارهایی از Maven درباره رشتههای فعال باقیمانده ببینید - این موضوع برای برنامههای واکنشی طبیعی است و به معنای خطا نیست.
var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080"));این کد یک انتقال SSE (Server-Sent Events) ایجاد میکند که به سرور ماشینحساب متصل میشود.
var client = McpClient.sync(this.transport).build();
client.initialize();یک کلاینت MCP همگام ایجاد میکند و اتصال را راهاندازی میکند.
CallToolResult resultAdd = client.callTool(new CallToolRequest("add", Map.of("a", 5.0, "b", 3.0)));ابزار "add" را با پارامترهای a=5.0 و b=3.0 فراخوانی میکند.
اگر خطاهای اتصال دریافت کردید، مطمئن شوید سرور ماشینحساب فصل ۰۱ در حال اجرا است:
Error: Connection refused
راهحل: ابتدا سرور ماشینحساب را راهاندازی کنید.
اگر پورت ۸۰۸۰ در حال استفاده است:
Error: Address already in use
راهحل: برنامههای دیگر که از پورت ۸۰۸۰ استفاده میکنند را متوقف کنید یا سرور را برای استفاده از پورت دیگری تنظیم کنید.
اگر با خطاهای ساخت مواجه شدید:
.\mvnw clean install -DskipTestsسلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما برای دقت تلاش میکنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی اشتباهات یا نواقصی باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما مسئول هیچ گونه سوءتفاهم یا تفسیر نادرستی که ناشی از استفاده از این ترجمه باشد، نیستیم.