Skip to main content
Glama

Ntfy MCP-сервер

Машинопись Модель контекстного протокола Версия Лицензия Статус GitHub

Сервер MCP (Model Context Protocol), разработанный для взаимодействия с сервисом push-уведомлений ntfy . Он позволяет LLM и агентам AI отправлять уведомления на ваши устройства с обширными возможностями настройки.

Оглавление

Related MCP server: ntfy-mcp

Обзор

Этот сервер реализует протокол Model Context Protocol (MCP), обеспечивая стандартизированную связь между LLM и внешними системами. В частности, он предоставляет интерфейс для службы push-уведомлений ntfy.

Ntfy — это простая служба уведомлений pub-sub на основе HTTP, которая позволяет отправлять уведомления на ваш телефон или рабочий стол с помощью простых HTTP-запросов. С этим MCP-сервером агенты LLM, такие как Клод, могут отправлять вам уведомления через ntfy без необходимости прямого HTTP-доступа.

┌───────────┐ ┌───────────┐ ┌───────────┐ ┌─────────┐ │ LLM Agent │ ────▶│ Ntfy MCP │ ────▶│ Ntfy │ ────▶│ Your │ │ (Claude) │ │ Server │ │ Service │ │ Devices │ └───────────┘ └───────────┘ └───────────┘ └─────────┘

Функции

  • Реализация сервера MCP: создана с использованием @modelcontextprotocol/sdk для бесшовной интеграции с агентами LLM.

  • Интеграция с Ntfy: предоставляет инструмент ( send_ntfy ) для отправки уведомлений с поддержкой:

    • Приоритезация сообщений (1-5 уровней)

    • Теги эмодзи

    • Действия и кнопки, активируемые нажатием

    • Прикрепленные файлы

    • Задержка доставки

    • Форматирование Markdown

  • Раскрытие ресурса: раскрывает настроенную по умолчанию тему ntfy как ресурс MCP.

  • TypeScript: современная, типобезопасная кодовая база с подробными определениями типов.

  • Структурированное ведение журналов: использует winston и winston-daily-rotate-file для подробных и ротируемых журналов.

  • Управление конфигурацией: использует dotenv для простой настройки на основе среды.

  • Скрипты утилит: включают скрипты для очистки артефактов сборки и создания документации по структуре каталогов.

  • Обработка ошибок и безопасность: реализует надежную обработку ошибок, очистку входных данных ( sanitize-html ) и фильтры безопасности ( xss-filters ).

Быстрый старт

  1. Предварительные условия:

    • Node.js (v16+)

    • нпм или пряжа

    • Клиент, совместимый с MCP (Claude Desktop, Cline и т. д.)

  2. Установить и запустить:

    # Option 1: Install via npm npm install -g ntfy-mcp-server # Option 2: Clone repository and build git clone https://github.com/cyanheads/ntfy-mcp-server.git cd ntfy-mcp-server npm install npm run build # Create .env file (optional but recommended) cp .env.example .env # Edit .env to set NTFY_DEFAULT_TOPIC # Start the server npm start
  3. Добавить в настройки клиента MCP: добавьте сервер в файл настроек клиента MCP (см. Конфигурация ).

  4. Использование инструмента: После подключения вы можете использовать инструмент send_ntfy для отправки уведомлений.

Установка

Вариант 1: Пакет NPM (рекомендуется)

  1. Установите пакет глобально:

    npm install -g ntfy-mcp-server

    Это установит сервер глобально и сделает его доступным как инструмент командной строки.

  2. Или установите локально в своем проекте:

    npm install ntfy-mcp-server

    При локальной установке вы можете запустить его через npx или из node.

Вариант 2: Из источника

  1. Клонируйте репозиторий:

    git clone https://github.com/cyanheads/ntfy-mcp-server.git cd ntfy-mcp-server
  2. Установите зависимости:

    npm install
  3. Создайте проект:

    npm run build

Конфигурация

Переменные среды

Создайте файл .env в корне проекта на основе .env.example :

# Ntfy Configuration NTFY_BASE_URL=https://ntfy.sh # Optional: Base URL of your ntfy instance NTFY_DEFAULT_TOPIC=your_default_topic # Optional: Default topic if none specified in requests # Application Configuration LOG_LEVEL=info # Optional: Logging level (debug, info, warn, error) NODE_ENV=development # Optional: Environment (development, production)

Настройки клиента MCP

Для расширения Cline VSCode

Добавьте следующую конфигурацию в файл настроек Cline MCP (обычно он находится по адресу ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json в macOS):

При глобальной установке:
{ "mcpServers": { "ntfy": { "command": "ntfy-mcp-server", "env": { "NTFY_BASE_URL": "https://ntfy.sh", "NTFY_DEFAULT_TOPIC": "your_default_topic", "LOG_LEVEL": "info", "NODE_ENV": "production" } } } }
Если установлено из источника:
{ "mcpServers": { "ntfy": { "command": "node", "args": ["/path/to/ntfy-mcp-server/dist/index.js"], "env": { "NTFY_BASE_URL": "https://ntfy.sh", "NTFY_DEFAULT_TOPIC": "your_default_topic", "LOG_LEVEL": "info", "NODE_ENV": "production" } } } }

Для приложения Claude Desktop

Добавьте следующую конфигурацию в файл конфигурации Claude Desktop (обычно он находится в ~/Library/Application Support/Claude/claude_desktop_config.json на macOS):

При глобальной установке:
{ "mcpServers": { "ntfy": { "command": "ntfy-mcp-server", "env": { "NTFY_BASE_URL": "https://ntfy.sh", "NTFY_DEFAULT_TOPIC": "your_default_topic", "LOG_LEVEL": "info", "NODE_ENV": "production" } } } }
Если установлено из источника:
{ "mcpServers": { "ntfy": { "command": "node", "args": ["/path/to/ntfy-mcp-server/dist/index.js"], "env": { "NTFY_BASE_URL": "https://ntfy.sh", "NTFY_DEFAULT_TOPIC": "your_default_topic", "LOG_LEVEL": "info", "NODE_ENV": "production" } } } }

Для установки исходного кода замените Отрегулируйте переменные

Настройка NTFy

  1. Установите приложение ntfy на свои устройства с ntfy.sh или из магазинов приложений.

  2. Подпишитесь на свою тему в приложении

  3. Используйте ту же тему в конфигурации вашего сервера MCP

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

. ├── .env.example # Example environment variables ├── .gitignore # Git ignore patterns ├── LICENSE # Project license (Apache-2.0) ├── package.json # Project metadata and dependencies ├── tsconfig.json # TypeScript compiler configuration ├── docs/ │ └── tree.md # Auto-generated directory structure ├── logs/ # Runtime logs (created automatically) ├── scripts/ # Utility scripts │ ├── clean.ts # Cleans build artifacts and logs │ └── tree.ts # Generates the docs/tree.md file └── src/ # Source code ├── index.ts # Main server entry point ├── config/ # Configuration loading ├── mcp-server/ # MCP server logic, tools, and resources │ ├── resources/ # MCP resource implementations │ ├── tools/ # MCP tool implementations │ └── utils/ # MCP-specific utilities ├── services/ # External service integrations (ntfy) ├── types-global/ # Global type definitions └── utils/ # General utility functions

Инструменты

send_ntfy

Отправляет уведомление через службу ntfy.

Основные аргументы:

Параметр

Тип

Необходимый

Описание

topic

нить

Да

Тема ntfy для публикации.

message

нить

Да

Основное содержание уведомления (макс. 4096 байт).

title

нить

Нет

Заголовок уведомления (макс. 250 байт).

tags

нить[]

Нет

Эмодзи или ключевые слова для категоризации (например,

["warning", "robot"]

). Макс. 5.

priority

целое число

Нет

Приоритет сообщения: 1=мин., 2=низкий, 3=по умолчанию, 4=высокий, 5=макс.

click

нить

Нет

URL-адрес, который будет открываться при нажатии на уведомление.

actions

множество

Нет

Кнопки действий (просмотр, http, трансляция). Макс. 3.

attachment

объект

Нет

URL и имя вложения.

email

нить

Нет

Адрес электронной почты для пересылки уведомления.

delay

нить

Нет

Задержка доставки (например,

30m

,

1h

,

tomorrow

).

cache

нить

Нет

Длительность кэширования (например,

10m

,

1h

,

1d

).

firebase

нить

Нет

Тема Firebase Cloud Messaging (FCM) для пересылки.

id

нить

Нет

Уникальный идентификатор сообщения.

expires

нить

Нет

Срок действия сообщения (например,

10m

,

1h

,

1d

).

markdown

булев

Нет

Установите значение

true

, чтобы включить форматирование markdown в сообщении.

baseUrl

нить

Нет

Переопределить URL-адрес сервера ntfy по умолчанию для этого запроса.

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

// Basic notification { "topic": "alerts", "message": "The task has completed successfully." } // Advanced notification { "topic": "alerts", "title": "System Alert", "message": "CPU usage has exceeded 90% for 5 minutes.", "tags": ["warning", "computer"], "priority": 4, "click": "https://server-dashboard.example.com", "actions": [ { "id": "view", "label": "View Details", "action": "view", "url": "https://server-dashboard.example.com/cpu" }, { "id": "restart", "label": "Restart Service", "action": "http", "url": "https://api.example.com/restart-service", "method": "POST", "headers": { "Authorization": "Bearer token123" } } ], "markdown": true }

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

{ "success": true, "id": "5ZFY362156Sa", "topic": "ATLAS", "time": 1743064235, "expires": 1743496235, "message": "This is a test message from the README verification process", "title": "README Testing" }

Ресурсы

Прямые Ресурсы

ntfy://default

  • Описание: Возвращает тему ntfy по умолчанию, настроенную в переменных среды сервера ( NTFY_DEFAULT_TOPIC ).

  • Использование: полезно для клиентов, желающих узнать основную тему без необходимости предварительной настройки.

  • Пример: агент LLM может получить доступ к этому ресурсу, чтобы автоматически использовать тему по умолчанию при отправке уведомлений.

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

    { "defaultTopic": "ATLAS", "timestamp": "2025-03-27T08:30:25.619Z", "requestUri": "ntfy://default", "requestId": "0da963d0-30e0-4dbc-bb77-4bf2dee14484" }

Шаблоны ресурсов

ntfy://{topic}

  • Описание: Возвращает информацию о конкретной теме ntfy.

  • Параметры: topic - Название темы ntfy.

  • Использование: Для запроса информации по темам, отличным от тем по умолчанию.

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

    { "topic": "ATLAS", "timestamp": "2025-03-27T08:30:30.038Z", "requestUri": "ntfy://ATLAS", "requestId": "31baf1df-278f-4fdb-860d-019f156a72b0" }

Варианты использования

  1. Уведомления о длительных задачах — получайте уведомления о завершении таких задач, как резервное копирование базы данных, генерация кода или обработка данных.

  2. Запланированные напоминания — установите отложенные уведомления для будущих событий или напоминаний.

  3. Системы оповещений — настройте критические оповещения для систем мониторинга или важных событий.

  4. Мобильные уведомления от LLM — разрешите LLM отправлять уведомления прямо на ваш телефон.

  5. Обновления многоэтапного процесса — получайте обновления по мере завершения различных этапов сложного процесса.

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

Базовое уведомление

<use_mcp_tool> <server_name>ntfy-mcp-server</server_name> <tool_name>send_ntfy</tool_name> <arguments> { "topic": "updates", "title": "Task Completed", "message": "Your requested data analysis has finished", "tags": ["check"] } </arguments> </use_mcp_tool>

Расширенное уведомление с действиями

<use_mcp_tool> <server_name>ntfy-mcp-server</server_name> <tool_name>send_ntfy</tool_name> <arguments> { "topic": "alerts", "title": "Critical Error Detected", "message": "The application has encountered a critical error.\n\n**Error Code**: E123\n\n**Details**: Database connection failed", "tags": ["warning", "skull"], "priority": 5, "actions": [ { "id": "view", "label": "View Logs", "action": "view", "url": "https://logs.example.com" }, { "id": "restart", "label": "Restart Service", "action": "http", "url": "https://api.example.com/restart", "method": "POST" } ], "markdown": true } </arguments> </use_mcp_tool>

Доступные сценарии

  • npm run build : компилирует исходный код TypeScript в JavaScript в каталоге dist/ .

  • npm run clean : удаляет каталог dist/ и очищает содержимое каталога logs/ .

  • npm run rebuild : выполняет clean , а затем build .

  • npm run tree : создает представление дерева каталогов в docs/tree.md .

  • npm start : запускает скомпилированный сервер из каталога dist/ с помощью Node.js.

  • npm run watch : отслеживает объединенный файл журнала ( logs/combined.log ) для мониторинга в реальном времени.

Внося вклад

Вклады приветствуются! Пожалуйста, не стесняйтесь отправлять запросы на включение изменений или открытые вопросы для улучшения проекта.

  1. Создайте форк репозитория.

  2. Создайте ветку функций ( git checkout -b feature/your-feature ).

  3. Зафиксируйте изменения ( git commit -m 'Add some feature' ).

  4. Отправьте изменения в ветку ( git push origin feature/your-feature ).

  5. Создайте новый запрос на извлечение.

Для сообщений об ошибках и запросов на новые функции, пожалуйста, создайте запрос в репозитории.

Лучшие практики разработки

  • Следуйте лучшим практикам TypeScript и поддерживайте строгую типизацию

  • Написание тестов для новых функций

  • Поддерживайте зависимости в актуальном состоянии

  • Следуйте существующему стилю и шаблонам кода.

Лицензия

Этот проект лицензирован по лицензии Apache-2.0. Подробности смотрите в файле LICENSE .

Благодарности

  • ntfy.sh для предоставления услуги уведомления

  • Протокол контекста модели для обеспечения соединений LLM с инструментом

  • Все участники и пользователи этого проекта


-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cyanheads/ntfy-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server