Приложение на Spring Boot, которое предоставляет интеллектуальную систему для принятия решений и получения советов с использованием искусственного интеллекта.
Simple MCP - это веб-приложение, которое помогает пользователям:
- Получать персонализированные советы на основе вопросов и контекста
- Записывать и анализировать принятые решения
- Отслеживать результаты и эмоциональное состояние при принятии решений
- Получать анализ паттернов в поведении
- Java 21 - основной язык программирования
- Spring Boot 4.0.2 - фреймворк для создания веб-приложений
- Spring AI 2.0.0-M2 - интеграция с моделями искусственного интеллекта
- OpenAI API - используется для генерации советов и анализа
- SpringDoc OpenAPI 3 - автоматическая генерация документации API
- Swagger UI - интерактивная документация API
- Maven - система сборки
- Lombok - для сокращения шаблонного кода
- Java 21 или выше
- Maven 3.6+
- API ключ OpenAI (настроить в
application.yml) - Интернет-соединение для работы с OpenAI API
git clone <repository-url>
cd simple-mcpОткройте файл src/main/resources/application.yml и добавьте ваш API ключ:
spring:
ai:
openai:
api-key: "ваш-openai-api-ключ"# Сборка проекта
mvn clean compile
# Запуск приложения
mvn spring-boot:runПриложение будет доступно по адресу: http://localhost:8080
После запуска приложения вы можете получить доступ к интерактивной документации Swagger UI:
- Swagger UI:
http://localhost:8080/swagger-ui.html - OpenAPI JSON:
http://localhost:8080/api-docs
POST /ai/tools- Обработка сообщений с помощью искусственного интеллекта
POST /mcp/advice- Получение советов на основе вопросов и контекстаPOST /mcp/decision- Создание новых решений
- Интерактивное тестирование - попробуйте API прямо в браузере
- Автоматическая валидация - проверка запросов и ответов
- Подробные описания - для всех параметров и моделей данных
- Примеры запросов - готовые примеры для каждого эндпоинта
Отправьте вопрос и контекст, чтобы получить персонализированный совет от ИИ.
Endpoint: POST /mcp/advice
Пример запроса:
{
"question": "Как улучшить производительность приложения?",
"context": "Приложение написано на Java с использованием Spring Boot"
}Пример ответа:
{
"advice": "Рекомендую использовать кэширование и оптимизировать запросы к базе данных",
"patterns": {
"performance": 3,
"optimization": 2
}
}Запишите решение, которое вы приняли, с указанием вариантов и обоснования.
Endpoint: POST /mcp/decision
Пример запроса:
{
"question": "Менять ли работу?",
"options": ["Остаться", "Уйти"],
"chosenOption": "Уйти",
"reasoning": "Предлагают лучшие условия и зарплату",
"emotionalState": "Взволнованно, но оптимистично"
}Отправьте текстовое сообщение для обработки искусственным интеллектом.
Endpoint: POST /ai/tools
Пример запроса:
{
"text": "Помоги мне принять решение о смене работы"
}Пример ответа:
{
"text": "Рассмотрите следующие факторы при принятии решения о смене работы..."
}Добавьте результат принятого решения и оцените, было ли оно правильным.
Endpoint: POST /mcp/decision/{id}/reflect
Пример запроса:
{
"outcome": "Смена работы оказалась удачной",
"regret": false
}src/main/java/com/ai/simple_mcp/
├── api/ # Контроллеры REST API
│ ├── AiController.java # Контроллер для обработки AI сообщений
│ └── McpController.java # Основной контроллер MCP эндпоинтов
├── config/ # Конфигурация приложения
│ ├── AiConfig.java # Настройка Spring AI и ChatClient
│ └── SwaggerConfig.java # Конфигурация Swagger/OpenAPI документации
├── domain/ # Модели данных
│ ├── AdviceRequest.java # Запрос на совет
│ ├── AdviceResponse.java # Ответ с советом
│ ├── CreateDecisionRequest.java # Запрос на создание решения
│ ├── Decision.java # Сущность решения
│ ├── MessageDto.java # Сообщение для AI обработки
│ ├── ReflectDecisionRequest.java # Запрос на отражение решения
│ └── UserProfile.java # Профиль пользователя с паттернами
├── repository/ # Слой доступа к данным
│ └── DecisionRepository.java # Хранилище решений (in-memory)
├── service/ # Бизнес-логика
│ ├── AdviceService.java # Сервис получения советов
│ ├── DecisionService.java # Сервис управления решениями
│ └── PatternAnalysisService.java # Сервис анализа паттернов
└── ai/ # Интеграция с ИИ
├── DecisionAdvisor.java # Советчик по решениям
└── PromptBuilder.java # Построитель промптов для ИИ
-
Получение советов: Приложение отправляет ваш вопрос и контекст в OpenAI API, где ИИ анализирует ситуацию и возвращает персонализированный совет с выявленными паттернами.
-
Управление решениями: Вы можете записывать свои решения, указывая вопрос, варианты, выбранный ответ и эмоциональное состояние. Все решения сохраняются в памяти приложения.
-
Анализ паттернов: Система может анализировать ваши прошлые решения для выявления поведенческих паттернов и ценностей.
curl -X POST http://localhost:8080/mcp/advice \
-H "Content-Type: application/json" \
-d '{
"question": "Стоит ли переходить на удаленную работу?",
"context": "Сейчас работаю в офисе, есть семья с маленькими детьми"
}'curl -X POST http://localhost:8080/mcp/decision \
-H "Content-Type: application/json" \
-d '{
"question": "Купить ли новую машину?",
"options": ["Купить", "Не покупать", "Подождать"],
"chosenOption": "Подождать",
"reasoning": "Текущая машина еще в хорошем состоянии",
"emotionalState": "Спокойно"
}'curl -X POST http://localhost:8080/ai/tools \
-H "Content-Type: application/json" \
-d '{
"text": "Помоги мне принять решение о смене работы"
}'curl -X POST http://localhost:8080/mcp/decision/{decision-id}/reflect \
-H "Content-Type: application/json" \
-d '{
"outcome": "Через 6 месяцев старая машина потребовала ремонта",
"regret": true
}'- Решения хранятся в памяти приложения и будут потеряны при перезапуске
- Требуется действующий API ключ OpenAI
- Количество запросов к OpenAI API ограничено тарифным планом
- Создайте новую модель данных в
domain/ - Добавьте бизнес-логику в
service/ - Создайте эндпоинт в соответствующем контроллере (
api/) - Добавьте Swagger аннотации для документации:
@Tagдля контроллеров@Operationи@ApiResponsesдля эндпоинтов@Schemaдля моделей данных
- Обновите README при необходимости
- Все эндпоинты автоматически документируются через SpringDoc OpenAPI
- Используйте аннотации
@io.swagger.v3.oas.annotations.*для детализации - Доступ к интерактивной документации:
http://localhost:8080/swagger-ui.html - Конфигурация Swagger находится в
config/SwaggerConfig.java
# Запуск тестов
mvn test
# Запуск с тестовым профилем
mvn spring-boot:run -Dspring-boot.run.profiles=testЕсли у вас возникли вопросы или проблемы:
- Проверьте настройки в
application.yml - Убедитесь, что API ключ OpenAI действителен
- Проверьте логи приложения на наличие ошибок
Запрос пользователя: "Я принял решение и бросил работу и теперь думаю об этом и сожалею"
Ответ модели:
{
"text": "Я зафиксировал ваше решение бросить работу и ваше сожаление об этом. Если хотите, могу помочь вам проанализировать ситуацию или предложить варианты, как справиться с этим чувством. Что бы вы хотели сделать дальше?"
}Логи системы:
2026-01-31T23:17:59.234+03:00 INFO 11740 --- [simple-mcp] [nio-8080-exec-1] com.ai.simple_mcp.ai.DecisionAdvisor : processUserMessage Я принял решение и бросил работу и теперь думаю об этом и сожалею
2026-01-31T23:18:02.155+03:00 INFO 11740 --- [simple-mcp] [nio-8080-exec-1] c.ai.simple_mcp.service.DecisionService : create: CreateDecisionRequest(question=Стоило ли мне бросать работу?, option=бросил работу, reasoning=Я принял решение бросить работу, но теперь сожалею об этом., emotionalState=сожаление, regret=true)
Запрос пользователя: "Я нашел новую работу и хочу ее бросить как думаешь нужно ли мне это делать ? Думаю буду ли я сожалеть об этом"
Ответ модели:
{
"text": "Судя по твоей истории и ценностям, резкое решение бросить новую работу может привести к сожалениям и нестабильности. У тебя уже были случаи, когда смена работы сопровождалась сомнениями и негативными эмоциями. Рекомендую не торопиться с увольнением, а сначала тщательно проанализировать, что именно тебя не устраивает, и попробовать найти способы улучшить ситуацию на текущем месте. Если хочешь, могу помочь составить критерии для оценки работы или план действий на случай, если решишь уйти. Как ты хочешь поступить?"
}Логи системы:
2026-01-31T23:18:25.976+03:00 INFO 11740 --- [simple-mcp] [nio-8080-exec-3] com.ai.simple_mcp.ai.DecisionAdvisor : processUserMessage Я нашел новую работу и хочу ее бросить как думаешь нужно ли мне это делать ? Думаю буду ли я сожалеть об этом
2026-01-31T23:18:27.378+03:00 INFO 11740 --- [simple-mcp] [nio-8080-exec-3] c.ai.simple_mcp.service.AdviceService : Получение совета: AdviceRequest(question=Стоит ли бросать новую работу? Будет ли сожаление об этом?, context=Пользователь нашел новую работу и думает, стоит ли ее бросить.)
2026-01-31T23:18:27.379+03:00 INFO 11740 --- [simple-mcp] [nio-8080-exec-3] c.a.s.service.PatternAnalysisService : buildProfile [Decision(timestamp=2026-01-31T20:18:02.157537300Z, situation=Стоило ли мне бросать работу?, option=бросил работу, reasoning=Я принял решение бросить работу, но теперь сожалею об этом., emotionalState=сожаление, outcome=null, regret=true)]
- Контекстуальная память: Система запоминает предыдущие решения пользователя (увольнение с сожалением)
- Анализ паттернов: При формировании совета учитывается история решений и эмоциональных состояний
- Персонализированные рекомендации: Ответы адаптируются под индивидуальный опыт пользователя
- Эмоциональный интеллект: Система анализирует и учитывает эмоциональное состояние при принятии решений
Этот проект предназначен для образовательных целей.