MCP-сервер - ИИ-агенты присылают уведомления и звонят вам
Подключите Claude Code, Codex, Cursor, ChatGPT и других ИИ-агентов к MCP-серверу Echobell, чтобы получать от них push-уведомления или звонки.
У Echobell есть официальный сервер Model Context Protocol (MCP). Подключите его к своему ИИ-агенту — Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude, ChatGPT или любому другому MCP-клиенту, — и у агента появится один инструмент, notify, который отправляет уведомление через один из ваших каналов Echobell.
Запустите долгий рефакторинг, прогон тестов или деплой, отойдите от компьютера и попросите агента сообщить, когда он закончит. Телефон завибрирует, когда работа будет готова, покажет срочное оповещение, когда агенту понадобитесь вы, или зазвонит, как при входящем вызове, если что-то пошло совсем не так.
Как это работает
- Это удалённый MCP-сервер по адресу
https://mcp.echobell.one/mcp, работающий через транспорт Streamable HTTP. Ничего устанавливать не нужно: ни npm-пакета, ниnpx, ни локального процесса. - Каждый MCP URL относится к одному каналу. Когда агент вызывает
notify, уведомление получают все подписчики этого канала — каждый с тем типом уведомлений, который выбрал сам. - Учётные данные — это токен триггера канала, тот же токен, которым заканчивается webhook URL канала. MCP-сервер работает так же, как вебхук канала, только в виде инструмента, который агент умеет вызывать.
Создайте отдельный канал для агентов, например «ИИ-агенты», и подпишитесь на него с типом «Звонок». Тогда агенты смогут выбирать любой уровень вплоть до звонка, а сам канал можно отдать коллегам, которым нужны те же оповещения.
Как получить MCP URL
В приложении
- Откройте приложение Echobell и нажмите на канал, который должен использовать агент.
- В сведениях о канале найдите раздел Подключить ИИ-агента.
- Скопируйте URL MCP-сервера или готовый фрагмент настройки для вашего агента.
Из webhook URL
MCP URL использует тот же токен, что и webhook URL канала. Возьмите токен из конца webhook URL и подставьте его после https://mcp.echobell.one/mcp/:
Webhook URL: https://hook.echobell.one/t/<channel-token>
MCP URL: https://mcp.echobell.one/mcp/<channel-token>
MCP URL содержит токен триггера вашего канала. Любой, у кого он есть, может отправлять уведомления подписчикам канала, поэтому храните его так же бережно, как пароль. См. раздел Безопасность.
Подключение агента
Во всех фрагментах ниже используется вариант с токеном в URL. Замените <channel-token> на токен триггера вашего канала или вставьте фрагмент из приложения — в нём токен уже подставлен.
Claude Code
claude mcp add --transport http echobell https://mcp.echobell.one/mcp/<channel-token>
Добавьте --scope user, чтобы сервер был доступен во всех проектах, а не только в текущем.
Codex
Добавьте в ~/.codex/config.toml:
[mcp_servers.echobell]
url = "https://mcp.echobell.one/mcp/<channel-token>"
Cursor
Добавьте в ~/.cursor/mcp.json или в .cursor/mcp.json внутри проекта:
{
"mcpServers": {
"echobell": {
"url": "https://mcp.echobell.one/mcp/<channel-token>"
}
}
}
VS Code (GitHub Copilot)
Добавьте в .vscode/mcp.json в рабочей области, а затем пользуйтесь инструментом в Copilot Chat в режиме агента:
{
"servers": {
"echobell": {
"type": "http",
"url": "https://mcp.echobell.one/mcp/<channel-token>"
}
}
}
Если .vscode/mcp.json хранится в репозитории, используйте вариант с заголовком и запросом ввода, чтобы токена не было в файле.
Windsurf
Добавьте в ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"echobell": {
"serverUrl": "https://mcp.echobell.one/mcp/<channel-token>"
}
}
}
Gemini CLI
Добавьте в ~/.gemini/settings.json:
{
"mcpServers": {
"echobell": {
"httpUrl": "https://mcp.echobell.one/mcp/<channel-token>"
}
}
}
Claude Desktop и claude.ai
- Откройте Settings → Connectors.
- Выберите Add custom connector.
- Введите имя
Echobellи URLhttps://mcp.echobell.one/mcp/<channel-token>, затем добавьте коннектор.
Коннектор доступен и в веб-версии Claude, и в настольном приложении.
ChatGPT
- Включите режим разработчика в настройках ChatGPT.
- Откройте Settings → Connectors и выберите Create.
- Введите URL
https://mcp.echobell.one/mcp/<channel-token>и выберите аутентификацию No authentication — учётными данными служит токен в URL.
Другие MCP-клиенты
Подойдёт любой клиент с поддержкой транспорта Streamable HTTP. Укажите ему URL https://mcp.echobell.one/mcp/<channel-token> или используйте вариант с заголовком ниже.
Вариант с заголовком
Вместо того чтобы помещать токен в URL, его можно передать в заголовке Authorization. Оба варианта равнозначны.
URL: https://mcp.echobell.one/mcp
Authorization: Bearer <channel-token>
В Claude Code:
claude mcp add --transport http echobell https://mcp.echobell.one/mcp \
--header "Authorization: Bearer <channel-token>"
В VS Code запрос ввода (input) не даёт токену попасть в .vscode/mcp.json, так что файл можно спокойно коммитить. VS Code спросит токен при первом запуске сервера и надёжно его сохранит:
{
"inputs": [
{
"type": "promptString",
"id": "echobell-token",
"description": "Echobell channel trigger token",
"password": true
}
],
"servers": {
"echobell": {
"type": "http",
"url": "https://mcp.echobell.one/mcp",
"headers": {
"Authorization": "Bearer ${input:echobell-token}"
}
}
}
}
Инструмент notify
Сервер предоставляет единственный инструмент — notify. Агент сам решает, как заполнить его по вашему запросу.
| Аргумент | Тип | Обязательный | Описание |
|---|---|---|---|
title | string | Да | Заголовок уведомления. |
body | string | Нет | Текст уведомления. |
link | string (URL) | Нет | Ссылка, которая открывается по нажатию на уведомление: пул-реквест, лог сборки или дашборд. |
urgency | string | Нет | normal, time-sensitive или calling. Если не указан, каждый подписчик получает свой уровень. См. раздел Срочность. |
Срочность
Каждый, кто подписывается на канал, выбирает для него в приложении тип уведомлений: «Обычное», «Срочное» или «Звонок». Этот выбор — наивысший уровень, на котором канал может до него достучаться.
- Если агент не передаёт
urgency, каждый подписчик получает выбранный им уровень. - Если агент передаёт
urgency, он может только понизить уровень подписчика, но никогда не повысить. Если вы подписаны с типом «Звонок»,"urgency": "normal"придёт как обычное уведомление. Если вы подписаны с типом «Обычное»,"urgency": "calling"всё равно придёт как обычное уведомление.
Так один канал покрывает всё. Подпишитесь с типом «Звонок» и попросите агента отправлять рутинные новости как normal, а calling использовать, только когда что-то сломалось.
В отличие от notificationType в запросах к вебхуку, urgency работает и в каналах с собственным шаблоном.
Для звонков нужен Echobell Premium
Уведомления-звонки — функция Echobell Premium. Если агент запрашивает calling, подписчик без Premium получает вместо звонка срочное уведомление — точно так же, как в приложении и с вебхуками.
Один звонок в минуту на канал
Канал звонит каждому подписчику не чаще одного раза в минуту. Если агент запросит ещё один звонок в течение этой минуты — например, потому что застрял на повторных попытках, — подписчик получит вместо звонка срочное уведомление, которое всё равно пробивается через режимы фокусирования. Вебхуки и email-триггеры подчиняются тому же правилу.
Агент узнаёт об обоих случаях. В результате инструмента перечислены все такие замены, поэтому агент знает, что телефон не зазвонил, и может прямо сказать об этом, а не считать, что вам позвонили.
Что получает агент в ответ
Каждый вызов notify возвращает агенту короткую текстовую сводку и структурированные данные:
{
"notificationTriggered": true,
"reason": null,
"requestedUrgency": "calling",
"recipients": 1,
"deliveredUrgency": { "normal": 0, "time-sensitive": 1, "calling": 0 },
"fallbacks": [
{
"from": "calling",
"to": "time-sensitive",
"reason": "premium-required",
"recipients": 1
}
]
}
| Поле | Значение |
|---|---|
notificationTriggered | true, если уведомление отправлено. |
reason | Почему ничего не отправлено: conditions-not-met (условия канала не выполнены) или no-subscribers (на канал никто не подписан). null, если уведомление отправлено. |
requestedUrgency | Значение urgency, которое запросил агент, или null, если он его не указал. |
recipients | Сколько подписчиков получили уведомление. |
deliveredUrgency | Сколько подписчиков получили каждый уровень. |
fallbacks | Подписчики, получившие более низкий уровень, чем запрошен, и причина: premium-required (для звонка нужен Premium), subscriber-setting (собственный уровень подписчика для этого канала ниже) или call-cooldown (канал уже звонил этому подписчику в течение последней минуты). |
Каналы с прямой передачей и с шаблоном
MCP-сервер работает с обоими видами каналов:
- Каналы с прямой передачей (по умолчанию) показывают
titleиbodyровно в том виде, в каком их отправил агент. - Каналы с шаблоном (когда в Дополнительных настройках включён Свой шаблон) собирают уведомление по вашим шаблонам. В шаблонах доступны переменные
title,body,link,externalLinkиurgency, а условия канала продолжают действовать. Если условия не выполнены, ничего не отправляется, а агент получаетreason: "conditions-not-met".
Примеры запросов
Когда сервер подключён, просите об уведомлениях обычными словами:
- «Прогони полный набор тестов и пришли уведомление в Echobell, когда закончишь».
- «Отрефактори платёжный модуль. Если понадобится моё решение, пришли срочное оповещение в Echobell».
- «Задеплой на staging. Если деплой упадёт — позвони мне, иначе пришли обычное уведомление с URL».
- «Когда миграция закончится, пришли уведомление с кратким итогом и ссылкой на пул-реквест».
Чтобы это вошло в привычку, добавьте в файл инструкций агента (CLAUDE.md, AGENTS.md, .cursorrules и т. п.) примерно такие строки:
When a task takes longer than a few minutes, call the Echobell notify tool when it finishes.
Use urgency "calling" only when something is broken and needs me right away.
Безопасность
- Токен — это учётные данные. Любой, у кого есть MCP URL (или токен), может отправлять уведомления подписчикам канала. Ничего прочитать или изменить в вашем аккаунте с ним нельзя — единственное, что он позволяет, это отправлять уведомления.
- Не кладите его в общие файлы. Не коммитьте конфигурацию с токеном в URL. Для настроек на уровне проекта используйте вариант с заголовком с запросом ввода или переменной окружения.
- Чтобы отозвать доступ, сбросьте токен триггера. Откройте канал в приложении и сбросьте его токен триггера. Старый MCP URL сразу перестаёт работать (запросы получают
401 Unauthorized), как и старый webhook URL. Обновите токен у агентов и у всех, кто вызывает вебхук.
Ограничения и ошибки
- Лимит запросов: каждый токен принимает до 120 MCP-запросов в минуту. У MCP-запросов свой лимит, отдельный от webhook-запросов канала.
- 401 Unauthorized: токен не передан, неверен или был сброшен.
См. также
- Вебхуки — запускайте тот же канал из скриптов, CI и других сервисов
- Типы уведомлений — чем отличаются «Обычное», «Срочное» и «Звонок»
- Шаблоны и условия — оформление и фильтрация уведомлений