Ntfy MCP-сервер
Сервер 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-доступа.
Функции
Реализация сервера MCP: создана с использованием
@modelcontextprotocol/sdkдля бесшовной интеграции с агентами LLM.Интеграция с Ntfy: предоставляет инструмент (
send_ntfy) для отправки уведомлений с поддержкой:Приоритезация сообщений (1-5 уровней)
Теги эмодзи
Действия и кнопки, активируемые нажатием
Прикрепленные файлы
Задержка доставки
Форматирование Markdown
Раскрытие ресурса: раскрывает настроенную по умолчанию тему ntfy как ресурс MCP.
TypeScript: современная, типобезопасная кодовая база с подробными определениями типов.
Структурированное ведение журналов: использует
winstonиwinston-daily-rotate-fileдля подробных и ротируемых журналов.Управление конфигурацией: использует
dotenvдля простой настройки на основе среды.Скрипты утилит: включают скрипты для очистки артефактов сборки и создания документации по структуре каталогов.
Обработка ошибок и безопасность: реализует надежную обработку ошибок, очистку входных данных (
sanitize-html) и фильтры безопасности (xss-filters).
Быстрый старт
Предварительные условия:
Node.js (v16+)
нпм или пряжа
Клиент, совместимый с MCP (Claude Desktop, Cline и т. д.)
Установить и запустить:
# 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Добавить в настройки клиента MCP: добавьте сервер в файл настроек клиента MCP (см. Конфигурация ).
Использование инструмента: После подключения вы можете использовать инструмент
send_ntfyдля отправки уведомлений.
Установка
Вариант 1: Пакет NPM (рекомендуется)
Установите пакет глобально:
npm install -g ntfy-mcp-serverЭто установит сервер глобально и сделает его доступным как инструмент командной строки.
Или установите локально в своем проекте:
npm install ntfy-mcp-serverПри локальной установке вы можете запустить его через npx или из node.
Вариант 2: Из источника
Клонируйте репозиторий:
git clone https://github.com/cyanheads/ntfy-mcp-server.git cd ntfy-mcp-serverУстановите зависимости:
npm installСоздайте проект:
npm run build
Конфигурация
Переменные среды
Создайте файл .env в корне проекта на основе .env.example :
Настройки клиента MCP
Для расширения Cline VSCode
Добавьте следующую конфигурацию в файл настроек Cline MCP (обычно он находится по адресу ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json в macOS):
При глобальной установке:
Если установлено из источника:
Для приложения Claude Desktop
Добавьте следующую конфигурацию в файл конфигурации Claude Desktop (обычно он находится в ~/Library/Application Support/Claude/claude_desktop_config.json на macOS):
При глобальной установке:
Если установлено из источника:
Для установки исходного кода замените Отрегулируйте переменные
Настройка NTFy
Установите приложение ntfy на свои устройства с ntfy.sh или из магазинов приложений.
Подпишитесь на свою тему в приложении
Используйте ту же тему в конфигурации вашего сервера MCP
Структура проекта
Инструменты
send_ntfy
Отправляет уведомление через службу ntfy.
Основные аргументы:
Параметр | Тип | Необходимый | Описание |
| нить | Да | Тема ntfy для публикации. |
| нить | Да | Основное содержание уведомления (макс. 4096 байт). |
| нить | Нет | Заголовок уведомления (макс. 250 байт). |
| нить[] | Нет | Эмодзи или ключевые слова для категоризации (например,
). Макс. 5. |
| целое число | Нет | Приоритет сообщения: 1=мин., 2=низкий, 3=по умолчанию, 4=высокий, 5=макс. |
| нить | Нет | URL-адрес, который будет открываться при нажатии на уведомление. |
| множество | Нет | Кнопки действий (просмотр, http, трансляция). Макс. 3. |
| объект | Нет | URL и имя вложения. |
| нить | Нет | Адрес электронной почты для пересылки уведомления. |
| нить | Нет | Задержка доставки (например,
,
,
). |
| нить | Нет | Длительность кэширования (например,
,
,
). |
| нить | Нет | Тема Firebase Cloud Messaging (FCM) для пересылки. |
| нить | Нет | Уникальный идентификатор сообщения. |
| нить | Нет | Срок действия сообщения (например,
,
,
). |
| булев | Нет | Установите значение
, чтобы включить форматирование markdown в сообщении. |
| нить | Нет | Переопределить URL-адрес сервера ntfy по умолчанию для этого запроса. |
Пример использования:
Пример ответа:
Ресурсы
Прямые Ресурсы
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" }
Варианты использования
Уведомления о длительных задачах — получайте уведомления о завершении таких задач, как резервное копирование базы данных, генерация кода или обработка данных.
Запланированные напоминания — установите отложенные уведомления для будущих событий или напоминаний.
Системы оповещений — настройте критические оповещения для систем мониторинга или важных событий.
Мобильные уведомления от LLM — разрешите LLM отправлять уведомления прямо на ваш телефон.
Обновления многоэтапного процесса — получайте обновления по мере завершения различных этапов сложного процесса.
Примеры использования
Базовое уведомление
Расширенное уведомление с действиями
Доступные сценарии
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) для мониторинга в реальном времени.
Внося вклад
Вклады приветствуются! Пожалуйста, не стесняйтесь отправлять запросы на включение изменений или открытые вопросы для улучшения проекта.
Создайте форк репозитория.
Создайте ветку функций (
git checkout -b feature/your-feature).Зафиксируйте изменения (
git commit -m 'Add some feature').Отправьте изменения в ветку (
git push origin feature/your-feature).Создайте новый запрос на извлечение.
Для сообщений об ошибках и запросов на новые функции, пожалуйста, создайте запрос в репозитории.
Лучшие практики разработки
Следуйте лучшим практикам TypeScript и поддерживайте строгую типизацию
Написание тестов для новых функций
Поддерживайте зависимости в актуальном состоянии
Следуйте существующему стилю и шаблонам кода.
Лицензия
Этот проект лицензирован по лицензии Apache-2.0. Подробности смотрите в файле LICENSE .
Благодарности
ntfy.sh для предоставления услуги уведомления
Протокол контекста модели для обеспечения соединений LLM с инструментом
Все участники и пользователи этого проекта