Token导航 LogoToken导航TokenDH.com
MCP Power Server logo
AI代理未说明官方级别未说明来源级核验

MCP Power Server

MCP Server

一个集成了AI代理的任务管理和天气信息查询的服务器,支持智能通知和自动化任务调度。

工具数

14

提示词数

0

GitHub Stars

0

资源数

0
Kotlin位置天气AI代理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Vpharaon

提供方

Vpharaon

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Weather & Tasks MCP Server with AI Agent

MCP (Model Context Protocol) сервер для получения данных о погоде и управления задачами с интеллектуальными уведомлениями и AI-агентом.

Описание

Этот сервер реализует протокол MCP и предоставляет инструменты для:

Погода:

  • Текущей погоды для указанного города
  • 5-дневного прогноза погоды
  • Текущего времени, даты и часового пояса города

Управление задачами (Tasks):

  • Создание задач с автогенерацией заголовка из описания
  • Управление задачами: просмотр, фильтрация, удаление
  • Повторяющиеся задачи (DAILY, WEEKLY, MONTHLY)
  • Уровни важности (LOW, MEDIUM, HIGH, URGENT)
  • SQLite база данных для хранения
  • Фильтрация по дате и важности
  • Автоматические сводки по задачам

Интеллектуальные уведомления:

  • Автоматическая проверка задач каждую минуту
  • Извлечение города из текста задачи
  • Обогащение уведомлений данными о погоде и времени
  • Отправка в Telegram с красиво форматированным сообщением
  • Поддержка повторяющихся задач

AI Агент (DeepSeek):

  • Анализ задачи и извлечение контекстной информации
  • Интеграция с MCP tools (погода, время)
  • Формирование персонализированных уведомлений
  • Отправка через Telegram

Возможности

  • Реализация MCP протокола (JSON-RPC 2.0)
  • Интеграция с OpenWeatherMap API
  • Поддержка различных единиц измерения (metric, imperial, standard)
  • AI агент с моделью DeepSeek для обработки задач
  • Scheduler для автоматической проверки задач (каждую минуту)
  • Повторяющиеся задачи с автоматическим перепланированием
  • Контейнеризация с Docker
  • Health check endpoints
  • Автоматическое логирование

Технологии

  • Kotlin
  • Ktor (Web Framework)
  • kotlinx.serialization (JSON сериализация)
  • kotlinx.coroutines (асинхронность)
  • Exposed ORM + SQLite (база данных)
  • Docker & Docker Compose
  • OpenWeatherMap API (погода и координаты)
  • WorldTimeAPI (время и часовые пояса)
  • DeepSeek API (AI агент с function calling)

Предварительные требования

  1. JDK 17 или выше (для локальной разработки)
  2. Docker и Docker Compose (для контейнерного развертывания)
  3. API ключ от OpenWeatherMap (получить на https://openweathermap.org/api)
  4. API ключ от DeepSeek (опционально, для AI агента - получить на https://platform.deepseek.com/)

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

Локальный запуск

  1. Клонируйте репозиторий
  2. Создайте файл .env на основе .env.example:
   cp .env.example .env
  1. Добавьте ваши API ключи в .env:
   OPENWEATHER_API_KEY=ваш_api_ключ
   TELEGRAM_ENABLED=true
   TELEGRAM_BOT_TOKEN=ваш_telegram_токен
   TELEGRAM_CHAT_ID=ваш_chat_id
  1. Запустите сервер:
   export OPENWEATHER_API_KEY=ваш_api_ключ
   ./gradlew run

Запуск через Docker

  1. Создайте файл .env:
   cp .env.example .env
  1. Добавьте ваши API ключи в .env
  1. Соберите и запустите контейнер:
   docker-compose up -d
  1. Проверьте статус:
   docker-compose ps
  1. Просмотр логов:
   docker-compose logs -f

Обновление и повторное развертывание в Docker

При обновлении кода сервера база данных с задачами автоматически сохраняется благодаря Docker volumes.

Обновление сервера с сохранением данных

# 1. Получите последние изменения кода
git pull

# 2. Остановите контейнер (данные в volume сохранятся!)
docker-compose down

# 3. Пересоберите образ с новым кодом
docker-compose build --no-cache

# 4. Запустите обновленный контейнер
docker-compose up -d

# 5. Проверьте логи для подтверждения успешного запуска
docker-compose logs -f

Важно: Сохранность данных

  • База данных хранится в Docker volume task-data
  • При выполнении docker-compose down контейнер удаляется, но volume остается
  • Все задачи и настройки сохраняются между перезапусками
  • База автоматически создается при первом запуске

API Endpoints

Health Check

GET /health

Возвращает статус сервера и информацию о включенных модулях:

{
  "status": "healthy",
  "tasks": "enabled"
}

MCP Endpoint

POST /mcp
Content-Type: application/json

MCP Tools

Погодные инструменты

1. get_current_weather

Получить текущую погоду для города.

Параметры:

  • city (обязательный): Название города (например, "London", "Moscow", "Москва")
  • units (опциональный): Единицы измерения - "metric" (по умолчанию), "imperial", "standard"

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

{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "tools/call",
  "params": {
    "name": "get_current_weather",
    "arguments": {
      "city": "Moscow",
      "units": "metric"
    }
  }
}

2. get_weather_forecast

Получить 5-дневный прогноз погоды.

Параметры:

  • city (обязательный): Название города
  • units (опциональный): Единицы измерения

3. get_city_time

Получить текущее время, дату и информацию о часовом поясе для города.

Параметры:

  • city (обязательный): Название города

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

🕐 Time in Tokyo, JP

Current time: 15:30:45
Current date: 2024-12-17
Day of week: Tuesday

Timezone: Asia/Tokyo
UTC offset: +09:00
DST active: No

Unix timestamp: 1702814445

Инструменты для управления задачами

4. add_task

Создать новую задачу. Если заголовок не указан, он будет автоматически сгенерирован из описания.

Параметры:

  • title (опциональный): Краткое название задачи (если не указан, генерируется из description)
  • description (обязательный): Детальное описание задачи
  • reminder_time (обязательный): Время напоминания в ISO формате (2024-12-17T15:30:00) - время сервера
  • recurrence (опциональный): Повторение - DAILY, WEEKLY, MONTHLY
  • importance (опциональный): Важность - LOW, MEDIUM, HIGH, URGENT (по умолчанию MEDIUM)

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

{
  "jsonrpc": "2.0",
  "id": "4",
  "method": "tools/call",
  "params": {
    "name": "add_task",
    "arguments": {
      "title": "Встреча в Москве",
      "description": "Обсудить результаты квартала и планы на следующий",
      "reminder_time": "2024-12-20T14:00:00",
      "recurrence": "WEEKLY",
      "importance": "HIGH"
    }
  }
}

Пример с автогенерацией заголовка:

{
  "jsonrpc": "2.0",
  "id": "5",
  "method": "tools/call",
  "params": {
    "name": "add_task",
    "arguments": {
      "description": "Проверить погоду в Санкт-Петербурге и взять зонт если нужно",
      "reminder_time": "2024-12-18T08:00:00",
      "importance": "MEDIUM"
    }
  }
}

5. list_tasks

Получить список всех задач или отфильтровать по статусу.

Параметры:

  • status (опциональный): Фильтр по статусу - ACTIVE, COMPLETED

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

{
  "jsonrpc": "2.0",
  "id": "6",
  "method": "tools/call",
  "params": {
    "name": "list_tasks",
    "arguments": {
      "status": "ACTIVE"
    }
  }
}

6. get_task

Получить детальную информацию о конкретной задаче.

Параметры:

  • id (обязательный): ID задачи

7. complete_task

Пометить задачу как выполненную.

Параметры:

  • id (обязательный): ID задачи

8. delete_task

Удалить задачу.

Параметры:

  • id (обязательный): ID задачи

9. get_tasks_for_date

Получить все задачи на конкретную дату.

Параметры:

  • date (обязательный): Дата в ISO формате (2024-12-17)

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

{
  "jsonrpc": "2.0",
  "id": "9",
  "method": "tools/call",
  "params": {
    "name": "get_tasks_for_date",
    "arguments": {
      "date": "2024-12-20"
    }
  }
}

10. get_tasks_by_importance

Получить задачи отфильтрованные по уровню важности.

Параметры:

  • importance (обязательный): Уровень важности - LOW, MEDIUM, HIGH, URGENT

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

{
  "jsonrpc": "2.0",
  "id": "10",
  "method": "tools/call",
  "params": {
    "name": "get_tasks_by_importance",
    "arguments": {
      "importance": "HIGH"
    }
  }
}

11. get_tasks_summary

Получить сводку по всем задачам (статистика, просроченные, приоритетные, предстоящие).

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

{
  "jsonrpc": "2.0",
  "id": "11",
  "method": "tools/call",
  "params": {
    "name": "get_tasks_summary",
    "arguments": {}
  }
}

12. set_notification_schedule

Настроить автоматические периодические уведомления со сводкой по задачам.

Параметры:

  • interval_minutes (обязательный): Интервал в минутах (60 = каждый час, 1440 = раз в день)
  • enabled (опциональный): Включить/выключить уведомления (по умолчанию true)

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

{
  "jsonrpc": "2.0",
  "id": "12",
  "method": "tools/call",
  "params": {
    "name": "set_notification_schedule",
    "arguments": {
      "interval_minutes": 1440,
      "enabled": true
    }
  }
}

13. get_notification_schedule

Получить текущие настройки расписания уведомлений.

14. send_test_notification

Отправить тестовое уведомление немедленно для проверки конфигурации.

Работа системы интеллектуальных уведомлений

Как работает система

  1. Scheduler проверяет базу данных каждую минуту
  2. Находит задачи с наступившим временем (reminderDateTime /getUpdates

- Найдите ваш chat.id в ответе

  1. Настройте переменные в .env:
TELEGRAM_ENABLED=true
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_CHAT_ID=your_chat_id

DeepSeek AI Agent

  1. Получите API ключ от DeepSeek:

- Зарегистрируйтесь на https://platform.deepseek.com/ - Создайте API ключ в разделе API Keys - Скопируйте ключ

  1. Настройте переменные в .env:
AGENT_ENABLED=true
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1  # опционально
  1. Убедитесь, что задачи включены (требуется для работы):
TASKS_ENABLED=true

Использование 24/7

Для работы сервера 24/7 с автоматическими уведомлениями:

  1. Разверните сервер на VPS (через Docker)
  2. Настройте Telegram уведомления
  3. Создайте задачи через MCP инструменты
  4. Система автоматически будет проверять задачи каждую минуту и отправлять уведомления!

Тестирование

# Проверка здоровья сервера
curl http://localhost:8080/health

# Тест MCP initialize
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "initialize"
  }'

# Тест создания задачи
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "2",
    "method": "tools/call",
    "params": {
      "name": "add_task",
      "arguments": {
        "title": "Тестовая задача",
        "description": "Проверка работы системы в Москве",
        "reminder_time": "2024-12-20T15:00:00",
        "importance": "HIGH"
      }
    }
  }'

# Тест получения погоды
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "3",
    "method": "tools/call",
    "params": {
      "name": "get_current_weather",
      "arguments": {
        "city": "Moscow",
        "units": "metric"
      }
    }
  }'

Разработка

Сборка проекта

./gradlew build

Запуск тестов

./gradlew test

Сборка Fat JAR

./gradlew buildFatJar

Сборка Docker образа

docker build -t mcp-weather-server:latest .

Структура проекта

src/
├── main/
│   ├── kotlin/
│   │   └── com/bazik/
│   │       ├── mcp/
│   │       │   ├── models/      # MCP модели данных
│   │       │   └── McpService.kt # MCP бизнес-логика
│   │       ├── weather/
│   │       │   ├── models/      # OpenWeatherMap модели
│   │       │   └── WeatherService.kt # Работа с Weather API
│   │       ├── time/
│   │       │   ├── models/      # TimeZone модели
│   │       │   └── TimeService.kt # Работа со временем
│   │       ├── reminder/
│   │       │   ├── models/      # Модели задач
│   │       │   ├── TaskRepository.kt    # Работа с БД
│   │       │   ├── TaskService.kt       # Бизнес-логика задач
│   │       │   ├── SchedulerService.kt  # Планировщик
│   │       │   └── NotificationService.kt # Уведомления
│   │       ├── agent/
│   │       │   ├── models/      # Модели агента
│   │       │   ├── AgentService.kt      # DeepSeek интеграция
│   │       │   └── AgentIntegrationService.kt # Обработка задач
│   │       ├── Application.kt   # Точка входа
│   │       ├── Routing.kt       # Маршруты и инициализация
│   │       └── Serialization.kt # Настройка сериализации
│   └── resources/
│       └── application.conf     # Конфигурация

Архитектура

User creates Task
       ↓
   TaskRepository (SQLite)
       ↓
SchedulerService (каждую минуту)
       ↓
AgentIntegrationService.processTaskNotification()
       ↓
   ┌─────────────────┐
   │ Извлечь город   │
   │ из текста       │
   └────────┬────────┘
            ↓
    ┌──────┴──────┐
    │             │
Город найден   Город не найден
    │             │
    ↓             ↓
Погода/время   Погода для 3 городов
для города     (Москва, СПб, Казань)
    │             │
    └──────┬──────┘
           ↓
  Формирование сообщения
           ↓
    Telegram отправка
           ↓
    markTaskAsProcessed()
           ↓
    ┌──────┴──────┐
    │             │
recurrence?    recurrence?
   да            нет
    │             │
    ↓             ↓
Следующая дата  isCompleted = true

Troubleshooting

Ошибка "API key is not configured"

Убедитесь, что переменная окружения OPENWEATHER_API_KEY установлена.

Контейнер не запускается

Проверьте логи:

docker-compose logs

Порт 8080 занят

Измените порт в docker-compose.yml или .env:

ports:
  - "8081:8080"  # Используем 8081 вместо 8080

Telegram уведомления не приходят

  1. Проверьте токен бота и chat ID
  2. Убедитесь, что бот имеет доступ к chat
  3. Проверьте логи:
docker-compose logs -f | grep -i telegram

Задачи не обрабатываются

  1. Убедитесь что AGENT_ENABLED=true и TASKS_ENABLED=true
  2. Проверьте что время задачи наступило
  3. Проверьте логи scheduler:
docker-compose logs -f | grep -i scheduler

Лицензия

MIT

目录标签

目录标签

Kotlin位置天气AI代理本地部署任务管理天气查询智能通知自动化调度

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

api-key

工具数量(toolCount,工具数)

14

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明api-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP