Skip to content

jenjd228/simple-mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple MCP (Model Context Protocol)

Приложение на 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

Установка и запуск

1. Клонирование репозитория

git clone <repository-url>
cd simple-mcp

2. Настройка OpenAI API

Откройте файл src/main/resources/application.yml и добавьте ваш API ключ:

spring:
  ai:
    openai:
      api-key: "ваш-openai-api-ключ"

3. Сборка и запуск

# Сборка проекта
mvn clean compile

# Запуск приложения
mvn spring-boot:run

Приложение будет доступно по адресу: http://localhost:8080

API Документация

После запуска приложения вы можете получить доступ к интерактивной документации Swagger UI:

  • Swagger UI: http://localhost:8080/swagger-ui.html
  • OpenAPI JSON: http://localhost:8080/api-docs

Доступные эндпоинты

AI Controller (/ai)

  • POST /ai/tools - Обработка сообщений с помощью искусственного интеллекта

MCP Controller (/mcp)

  • POST /mcp/advice - Получение советов на основе вопросов и контекста
  • POST /mcp/decision - Создание новых решений

Функции документации

  • Интерактивное тестирование - попробуйте API прямо в браузере
  • Автоматическая валидация - проверка запросов и ответов
  • Подробные описания - для всех параметров и моделей данных
  • Примеры запросов - готовые примеры для каждого эндпоинта

Основные функции

1. Получение советов

Отправьте вопрос и контекст, чтобы получить персонализированный совет от ИИ.

Endpoint: POST /mcp/advice

Пример запроса:

{
  "question": "Как улучшить производительность приложения?",
  "context": "Приложение написано на Java с использованием Spring Boot"
}

Пример ответа:

{
  "advice": "Рекомендую использовать кэширование и оптимизировать запросы к базе данных",
  "patterns": {
    "performance": 3,
    "optimization": 2
  }
}

2. Создание решений

Запишите решение, которое вы приняли, с указанием вариантов и обоснования.

Endpoint: POST /mcp/decision

Пример запроса:

{
  "question": "Менять ли работу?",
  "options": ["Остаться", "Уйти"],
  "chosenOption": "Уйти",
  "reasoning": "Предлагают лучшие условия и зарплату",
  "emotionalState": "Взволнованно, но оптимистично"
}

3. Обработка сообщений AI

Отправьте текстовое сообщение для обработки искусственным интеллектом.

Endpoint: POST /ai/tools

Пример запроса:

{
  "text": "Помоги мне принять решение о смене работы"
}

Пример ответа:

{
  "text": "Рассмотрите следующие факторы при принятии решения о смене работы..."
}

4. Отражение решений

Добавьте результат принятого решения и оцените, было ли оно правильным.

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  # Построитель промптов для ИИ

Как это работает?

  1. Получение советов: Приложение отправляет ваш вопрос и контекст в OpenAI API, где ИИ анализирует ситуацию и возвращает персонализированный совет с выявленными паттернами.

  2. Управление решениями: Вы можете записывать свои решения, указывая вопрос, варианты, выбранный ответ и эмоциональное состояние. Все решения сохраняются в памяти приложения.

  3. Анализ паттернов: Система может анализировать ваши прошлые решения для выявления поведенческих паттернов и ценностей.

Примеры использования

Сценарий 1: Карьерный совет

curl -X POST http://localhost:8080/mcp/advice \
  -H "Content-Type: application/json" \
  -d '{
    "question": "Стоит ли переходить на удаленную работу?",
    "context": "Сейчас работаю в офисе, есть семья с маленькими детьми"
  }'

Сценарий 2: Запись решения

curl -X POST http://localhost:8080/mcp/decision \
  -H "Content-Type: application/json" \
  -d '{
    "question": "Купить ли новую машину?",
    "options": ["Купить", "Не покупать", "Подождать"],
    "chosenOption": "Подождать",
    "reasoning": "Текущая машина еще в хорошем состоянии",
    "emotionalState": "Спокойно"
  }'

Сценарий 3: Обработка AI сообщения

curl -X POST http://localhost:8080/ai/tools \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Помоги мне принять решение о смене работы"
  }'

Сценарий 4: Оценка результата

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 ограничено тарифным планом

Разработка

Добавление новых функций

  1. Создайте новую модель данных в domain/
  2. Добавьте бизнес-логику в service/
  3. Создайте эндпоинт в соответствующем контроллере (api/)
  4. Добавьте Swagger аннотации для документации:
    • @Tag для контроллеров
    • @Operation и @ApiResponses для эндпоинтов
    • @Schema для моделей данных
  5. Обновите README при необходимости

Работа с Swagger документацией

  • Все эндпоинты автоматически документируются через 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

Поддержка

Если у вас возникли вопросы или проблемы:

  1. Проверьте настройки в application.yml
  2. Убедитесь, что API ключ OpenAI действителен
  3. Проверьте логи приложения на наличие ошибок

Результаты работы

Пример 1: Анализ сожаления об увольнении

Запрос пользователя: "Я принял решение и бросил работу и теперь думаю об этом и сожалею"

Ответ модели:

{
  "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)

Пример 2: Совет о новой работе с учетом паттернов

Запрос пользователя: "Я нашел новую работу и хочу ее бросить как думаешь нужно ли мне это делать ? Думаю буду ли я сожалеть об этом"

Ответ модели:

{
  "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)]

Ключевые особенности продемонстрированной работы:

  1. Контекстуальная память: Система запоминает предыдущие решения пользователя (увольнение с сожалением)
  2. Анализ паттернов: При формировании совета учитывается история решений и эмоциональных состояний
  3. Персонализированные рекомендации: Ответы адаптируются под индивидуальный опыт пользователя
  4. Эмоциональный интеллект: Система анализирует и учитывает эмоциональное состояние при принятии решений

Лицензия

Этот проект предназначен для образовательных целей.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages