VOOZH about

URL: https://glama.ai/mcp/servers/cyanheads/ntfy-mcp-server?locale=ru-RU

⇱ NTFY MCP-сервер by cyanheads | Glama


Ntfy MCP-сервер

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

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

Оглавление

Related MCP server: ntfy-me-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"
 }
 }
 }
}

Для установки исходного кода замените /path/to/ntfy-mcp-server/dist/index.js на фактический абсолютный путь к файлу построенного сервера. Отрегулируйте переменные env по мере необходимости для вашей настройки.

Настройка 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 с инструментом

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


A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
2wRelease cycle
2Releases (12mo)
Commit activity

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