Цей сервіс надає базові операції калькулятора через Model Context Protocol (MCP) з використанням Spring Boot та WebFlux як транспортного шару. Він створений як простий приклад для початківців, які вивчають реалізації MCP.
Для детальнішої інформації дивіться MCP Server Boot Starter у довідковій документації.
Сервіс демонструє:
- Підтримку SSE (Server-Sent Events)
- Автоматичну реєстрацію інструментів за допомогою анотації
@Toolз Spring AI - Базові функції калькулятора:
- Додавання, віднімання, множення, ділення
- Обчислення степеня та квадратного кореня
- Обчислення модуля (залишку) та абсолютного значення
- Функція допомоги з описом операцій
Цей сервіс калькулятора пропонує такі можливості:
-
Базові арифметичні операції:
- Додавання двох чисел
- Віднімання одного числа від іншого
- Множення двох чисел
- Ділення одного числа на інше (з перевіркою на ділення на нуль)
-
Розширені операції:
- Обчислення степеня (піднесення основи до степеня)
- Обчислення квадратного кореня (з перевіркою на від’ємне число)
- Обчислення модуля (залишку від ділення)
- Обчислення абсолютного значення
-
Система допомоги:
- Вбудована функція допомоги, що пояснює всі доступні операції
Сервіс надає такі API-ендпоінти через протокол MCP:
add(a, b): Додати два числаsubtract(a, b): Відняти друге число від першогоmultiply(a, b): Помножити два числаdivide(a, b): Поділити перше число на друге (з перевіркою на нуль)power(base, exponent): Обчислити степінь числаsquareRoot(number): Обчислити квадратний корінь (з перевіркою на від’ємне число)modulus(a, b): Обчислити залишок від діленняabsolute(number): Обчислити абсолютне значенняhelp(): Отримати інформацію про доступні операції
Простий тестовий клієнт включений у пакет com.microsoft.mcp.sample.client. Клас SampleCalculatorClient демонструє доступні операції сервісу калькулятора.
Проєкт містить приклад клієнта LangChain4j у com.microsoft.mcp.sample.client.LangChain4jClient, який показує, як інтегрувати сервіс калькулятора з LangChain4j та моделями GitHub:
-
Налаштування GitHub Token:
Для використання AI-моделей GitHub (наприклад, phi-4) потрібен персональний токен доступу GitHub:
a. Перейдіть у налаштування свого облікового запису GitHub: https://github.com/settings/tokens
b. Натисніть "Generate new token" → "Generate new token (classic)"
c. Дайте токену описову назву
d. Виберіть такі області доступу:
repo(Повний контроль приватних репозиторіїв)read:org(Читання організацій та членства в командах, читання проєктів організації)gist(Створення gist)user:email(Доступ до електронних адрес користувача (тільки для читання))
e. Натисніть "Generate token" і скопіюйте новий токен
f. Встановіть його як змінну середовища:
На Windows:
set GITHUB_TOKEN=your-github-tokenНа macOS/Linux:
export GITHUB_TOKEN=your-github-tokeng. Для постійного налаштування додайте його у змінні середовища через системні налаштування
-
Додайте залежність LangChain4j GitHub у свій проєкт (вже включено у pom.xml):
<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-github</artifactId> <version>${langchain4j.version}</version> </dependency>
-
Переконайтеся, що сервер калькулятора запущений на
localhost:8080
Цей приклад демонструє:
- Підключення до MCP-сервера калькулятора через SSE транспорт
- Використання LangChain4j для створення чат-бота, який використовує операції калькулятора
- Інтеграцію з AI-моделями GitHub (тепер з моделлю phi-4)
Клієнт надсилає такі приклади запитів для демонстрації функціоналу:
- Обчислення суми двох чисел
- Знаходження квадратного кореня числа
- Отримання інформації про доступні операції калькулятора
Запустіть приклад і перевірте вивід у консолі, щоб побачити, як AI-модель використовує інструменти калькулятора для відповіді на запити.
Клієнт LangChain4j налаштований на використання моделі phi-4 GitHub з такими параметрами:
ChatLanguageModel model = GitHubChatModel.builder()
.apiKey(System.getenv("GITHUB_TOKEN"))
.timeout(Duration.ofSeconds(60))
.modelName("phi-4")
.logRequests(true)
.logResponses(true)
.build();Щоб використовувати інші моделі GitHub, просто змініть параметр modelName на іншу підтримувану модель (наприклад, "claude-3-haiku-20240307", "llama-3-70b-8192" тощо).
Проєкт потребує таких ключових залежностей:
<!-- For MCP Server -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>
<!-- For LangChain4j integration -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-mcp</artifactId>
<version>${langchain4j.version}</version>
</dependency>
<!-- For GitHub models support -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-github</artifactId>
<version>${langchain4j.version}</version>
</dependency>Зберіть проєкт за допомогою Maven:
./mvnw clean install -DskipTestsjava -jar target/calculator-server-0.0.1-SNAPSHOT.jarMCP Inspector — корисний інструмент для взаємодії з MCP сервісами. Щоб використовувати його з цим сервісом калькулятора:
-
Встановіть і запустіть MCP Inspector у новому вікні терміналу:
npx @modelcontextprotocol/inspector
-
Відкрийте веб-інтерфейс, натиснувши на URL, який відобразить додаток (зазвичай http://localhost:6274)
-
Налаштуйте підключення:
- Встановіть тип транспорту "SSE"
- Вкажіть URL SSE-ендпоінта вашого сервера:
http://localhost:8080/sse - Натисніть "Connect"
-
Використовуйте інструменти:
- Натисніть "List Tools", щоб побачити доступні операції калькулятора
- Виберіть інструмент і натисніть "Run Tool" для виконання операції
Проєкт містить Dockerfile для контейнеризованого розгортання:
-
Зберіть Docker-образ:
docker build -t calculator-mcp-service . -
Запустіть Docker-контейнер:
docker run -p 8080:8080 calculator-mcp-service
Це:
- Збере багатоступеневий Docker-образ з Maven 3.9.9 та Eclipse Temurin 24 JDK
- Створить оптимізований образ контейнера
- Відкриє порт 8080 для сервісу
- Запустить MCP калькулятор всередині контейнера
Після запуску контейнера ви зможете отримати доступ до сервісу за адресою http://localhost:8080.
-
Проблеми з дозволами токена: Якщо ви отримуєте помилку 403 Forbidden, перевірте, чи має ваш токен правильні дозволи, як описано у вимогах.
-
Токен не знайдено: Якщо з’являється помилка "No API key found", переконайтеся, що змінна середовища GITHUB_TOKEN встановлена правильно.
-
Обмеження швидкості (Rate Limiting): GitHub API має обмеження на кількість запитів. Якщо ви отримали помилку з кодом 429, зачекайте кілька хвилин і спробуйте знову.
-
Термін дії токена минув: Токени GitHub можуть мати термін дії. Якщо після деякого часу виникають помилки автентифікації, створіть новий токен і оновіть змінну середовища.
Якщо потрібна додаткова допомога, звертайтеся до документації LangChain4j або документації GitHub API.
Відмова від відповідальності:
Цей документ було перекладено за допомогою сервісу автоматичного перекладу Co-op Translator. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується звертатися до професійного людського перекладу. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
