Skip to content

Latest commit

 

History

History
179 lines (139 loc) · 8.23 KB

File metadata and controls

179 lines (139 loc) · 8.23 KB

MCP Java Client - نمونه ماشین‌حساب

این پروژه نشان می‌دهد چگونه یک کلاینت جاوا ایجاد کنیم که به سرور MCP (پروتکل زمینه مدل) متصل شده و با آن تعامل داشته باشد. در این مثال، به سرور ماشین‌حساب از فصل ۰۱ متصل می‌شویم و عملیات مختلف ریاضی را انجام می‌دهیم.

پیش‌نیازها

قبل از اجرای این کلاینت، باید:

  1. سرور ماشین‌حساب فصل ۰۱ را راه‌اندازی کنید:

    • به دایرکتوری سرور ماشین‌حساب بروید: 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
  2. Java 21 or higher installed on your system

  3. Maven (included via Maven Wrapper)

What is the SDKClient?

The `` در حال اجرا باشد

SDKClient یک برنامه جاوا است که نشان می‌دهد چگونه:

  • به سرور MCP با استفاده از انتقال Server-Sent Events (SSE) متصل شویم
  • ابزارهای موجود روی سرور را فهرست کنیم
  • توابع مختلف ماشین‌حساب را از راه دور فراخوانی کنیم
  • پاسخ‌ها را مدیریت کرده و نتایج را نمایش دهیم

نحوه عملکرد

کلاینت از چارچوب Spring AI MCP استفاده می‌کند تا:

  1. برقراری اتصال: ایجاد یک کلاینت انتقال WebFlux SSE برای اتصال به سرور ماشین‌حساب
  2. راه‌اندازی کلاینت: تنظیم کلاینت MCP و برقراری اتصال
  3. کشف ابزارها: فهرست کردن تمام عملیات موجود ماشین‌حساب
  4. اجرای عملیات: فراخوانی توابع ریاضی مختلف با داده‌های نمونه
  5. نمایش نتایج: نمایش نتایج هر محاسبه

ساختار پروژه

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 interface
  • WebFluxSseClientTransport - انتقال SSE برای ارتباط مبتنی بر وب
  • طرح‌های پروتکل MCP و انواع درخواست/پاسخ

ساخت پروژه

پروژه را با استفاده از Maven wrapper بسازید:

.\mvnw clean install

اجرای کلاینت

java -jar .\target\calculator-client-0.0.1-SNAPSHOT.jar

توجه: مطمئن شوید سرور ماشین‌حساب روی http://localhost:8080 before executing any of these commands.

What the Client Does

When you run the client, it will:

  1. 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 ترجمه شده است. در حالی که ما برای دقت تلاش می‌کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است حاوی اشتباهات یا نواقصی باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما مسئول هیچ گونه سوءتفاهم یا تفسیر نادرستی که ناشی از استفاده از این ترجمه باشد، نیستیم.