Skip to main content
Glama
notification-mcp

notification-mcp

Notification MCP

Уведомления из MCP-клиента — в выбранный вами канал. Агент сообщает, что работа готова, нужно решение или возникла ошибка. Сервер выбирает получателя и доставляет сообщение.

Сейчас доступны Telegram-бот и локальный файл для проверки без интернета. Инструменты notify и notification_status общие для всех каналов. Поддерживаются Streamable HTTP и stdio.

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

Рекомендуемый режим — stdio. Codex сам запускает локальный сервер при подключении и завершает его вместе с MCP-соединением. Отдельные start и stop не нужны.

1. Установить

Нужен uv — он установит подходящий Python и зависимости автоматически. Если uv ещё нет, выполните один раз:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

После публикации релиза установите зафиксированную версию из GitHub:

uv tool install --python 3.11 "git+https://github.com/IndyukovAnton/notification-mcp.git@v0.4.0"
uv tool update-shell

Откройте новый терминал. Для установки по Git URL требуется Git. Без него скачайте wheel со страницы GitHub Release и выполните:

uv tool install --python 3.11 .\notification_mcp_relay-0.4.0-py3-none-any.whl

В GitHub нажмите Code → Download ZIP, распакуйте архив и откройте терминал в этой папке. На Windows:

powershell -ExecutionPolicy Bypass -File .\install.ps1

На Linux и macOS:

uv tool install --python 3.11 .
uv tool update-shell

2. Настроить Telegram и подключить Codex

Создайте бота через @BotFather, затем выполните одну команду:

notification-mcp connect codex --token-env

Команда скрыто запросит токен и сохранит его как пару TELEGRAM_BOT_TOKEN = значение непосредственно в локальной записи MCP-сервера. Системная переменная ОС и отдельный config.toml не создаются.

Перезапустите Codex и проверьте /mcp: сервер notifications должен быть активен. Затем откройте личный чат со своим ботом, отправьте /start и дождитесь ответа «Чат подключён. Новые уведомления будут приходить сюда».

Первый пользователь с /start становится владельцем привязки — выполните этот шаг сами. После перезапуска токен и чат вводить заново не нужно.

Уже пользовались предыдущей версией? Сначала прочитайте как перенести существующие настройки и очередь.

Универсальная ручная настройка

Любой локальный MCP-клиент должен запускать один и тот же executable без аргументов и передавать токен в собственном объекте env. Для JSON-конфигураций:

{
  "mcpServers": {
    "notifications": {
      "command": "notification-mcp",
      "env": {
        "TELEGRAM_BOT_TOKEN": "ТОКЕН_ОТ_BOTFATHER"
      }
    }
  }
}

Эквивалент для Codex:

[mcp_servers.notifications]
command = "notification-mcp"

[mcp_servers.notifications.env]
TELEGRAM_BOT_TOKEN = "ТОКЕН_ОТ_BOTFATHER"

Если приложение не видит notification-mcp через PATH, укажите полный путь к установленному launcher. Сервер принимает те же поля command, args и env, что и обычные stdio MCP-серверы. Готовый JSON с безопасным placeholder выдаёт notification-mcp client-config json --token-env. Для нескольких каналов и собственной маршрутизации остаётся расширенный режим с config.toml.

3. Проверить и использовать

Напишите агенту в Codex:

Вызови notify сервера notifications: сообщение «Проверка подключения», событие info. Затем проверь доставку через notification_status.

Ожидаются уведомление в Telegram и состояние sent. В дальнейших задачах достаточно поручения:

По завершении работы отправь через notifications уведомление с событием review_requested. Кратко напиши, что сделано и что мне проверить.

MCP-клиент должен сам вызвать инструмент: сервер не следит за ходом работы агента. Постоянное правило для Codex приведено в инструкции подключения.

Related MCP server: notify-hub

Фоновый HTTP-режим

Используйте его, если один сервер должен одновременно обслуживать несколько MCP-клиентов:

notification-mcp setup
notification-mcp start
notification-mcp connect codex --transport http
notification-mcp test

В HTTP-режиме терминал можно закрыть, но после перезагрузки компьютера нужно снова выполнить notification-mcp start. Для другого клиента используйте http://127.0.0.1:8765/mcp или готовый JSON из notification-mcp client-config.

Команда

Действие

notification-mcp start

Запустить фоновый HTTP-сервер

notification-mcp stop

Завершить текущую попытку отправки и остановить сервер

notification-mcp restart

Перезапустить и применить изменённые настройки

notification-mcp status

Показать состояние фонового сервера, адрес и пути файлов

notification-mcp logs

Показать последние сообщения сервера

notification-mcp test

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

start/stop/status не управляют stdio-процессом: его жизненным циклом управляет MCP-клиент.

Где хранятся настройки

ОС

Конфигурация по умолчанию

Windows

%LOCALAPPDATA%\notification-mcp\config.toml

Linux

$XDG_CONFIG_HOME/notification-mcp/config.toml или ~/.config/notification-mcp/config.toml

macOS

~/Library/Application Support/notification-mcp/config.toml

Рядом сохраняются очередь и привязка Telegram; фоновый HTTP-режим также сохраняет журнал. В рекомендуемом stdio-режиме токен хранится в локальной настройке самого MCP-клиента в поле env; отдельная системная переменная и сервисный TOML не нужны. Как и у других локальных MCP-серверов, этот секрет хранится открытым текстом в конфигурации выбранного клиента.

Для обновления закройте Codex, остановите HTTP-сервер, если он используется, и установите новый тег с --force. Например:

notification-mcp stop
uv tool install --python 3.11 --force "git+https://github.com/IndyukovAnton/notification-mcp.git@v0.4.0"

setup повторять не нужно. Для удаления закройте Codex и выполните:

codex mcp remove notifications
notification-mcp stop
uv tool uninstall notification-mcp-relay

Личные настройки и история при удалении программы сохраняются.

Как работает доставка

  • notify сохраняет сообщение в SQLite и возвращает ID. queued означает принятие в очередь.

  • Временные ошибки соединения повторяются с увеличением задержки; очередь переживает перезапуск.

  • notification_status показывает queued, sending, sent или failed.

  • sent означает подтверждение канала доставки, а не прочтение человеком.

  • Получатель фиксируется при постановке в очередь. Смена чата влияет на новые уведомления.

  • После исчерпания попыток сообщение получает failed. При неоднозначном сетевом сбое возможен дубль.

MCP-клиент должен сам вызвать инструмент: сервер не следит за ходом работы агента. Локальный адрес доступен приложениям на этом компьютере. Для удалённого облачного клиента потребуется отдельное развёртывание с защищённым доступом; текущий HTTP-сервер слушает только localhost.

Подробнее

Используются официальный Python MCP SDK и Telegram Bot API. Подход к MCP взят из того же SDK, что и у chigwell/telegram-mcp; его исходники не копировались, Telethon и пользовательские Telegram-сессии не используются.

Лицензия

MIT License. Бесплатное использование, изменение и распространение разрешены при сохранении copyright-уведомления и текста лицензии. Автор: Anton Indyukov.

Available Tools

2 tools
notification_statusNotification statusA
Read-onlyIdempotent

Read queued/sending/sent/failed status. 'sent' does not confirm the user read it.

Inputs: notification_id (required). Returns: id, event, status, channel, +7 more

notifySend notificationB

Queue a notification. Delivery channel and recipient are chosen by server settings.

event: info, action_required (needs a decision), review_requested (ready to inspect), or error. source identifies the project/task. url optionally links to the result. idempotency_key prevents duplicate queue entries for an identical logical event.

Inputs: message (required), url, event, title, +2 more. Returns: deduplicated, notification

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 2 tools

    Disambiguation5/5

    The two tools are clearly distinct: notify creates/queues a notification, while notification_status reads its delivery state. There is no overlap in purpose or ambiguity about which to call.

    Naming Consistency3/5

    The names are readable and individually clear, but they follow different conventions: 'notify' is a bare verb while 'notification_status' is a noun phrase without an action prefix. This is a minor inconsistency rather than chaotic naming.

    Tool Count3/5

    Two tools is on the thin side for a notification server, but the pair covers the essential send-and-check workflow without unnecessary bloat. It feels slightly under-scoped but not unusably so.

    Completeness4/5

    The basic lifecycle of queueing and checking delivery status is covered, and the details around idempotency and state are thoughtfully described. Missing capabilities like canceling a queued notification or confirming read receipt are notable but not fatal gaps.

    Maintenance

    ActivitySlowing
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables sending messages and scheduling reminders through multiple platforms including Telegram and Feishu. Supports real-time messaging and cron-based scheduled notifications with comprehensive logging and error handling.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Unified notification MCP server with 36 tools to send messages across 23 channels — Email, SMS, Slack, Telegram, Discord, Teams, WhatsApp, Firebase Push, and more.
      5
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI coding agents to send structured Telegram notifications for events like questions, plan_ready, final, attention_needed, and error.
      MIT
    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables agents to send structured notifications to recipients via configurable channels (initial SMTP provider) without exposing delivery addresses or credentials, with tools for listing recipients, listing channels, and sending notifications.
      -