MCP 服务器 - 让 AI 智能体给您发通知或打电话

将 Claude Code、Codex、Cursor、VS Code、ChatGPT 等 AI 智能体连接到 Echobell 官方 MCP 服务器,让它们向您发送推送通知或来电提醒。


Echobell 提供官方的 Model Context Protocol(MCP)服务器。把它连接到您的 AI 智能体——Claude Code、Codex、Cursor、VS Code、Windsurf、Gemini CLI、Claude、ChatGPT 或其他任何 MCP 客户端——智能体就会获得一个工具 notify,可以通过您的某个 Echobell 频道发送通知。

开始一次大型重构、一轮测试或一次部署,然后放心离开,让智能体在完成时告诉您。工作结束时手机会响起提醒;智能体需要您时会收到时效性通知;出现严重问题时,手机会像来电一样响铃。

工作原理

  • 这是一个位于 https://mcp.echobell.one/mcp 的远程 MCP 服务器,使用 Streamable HTTP 传输。无需安装任何东西:没有 npm 包,没有 npx,也没有本地进程。
  • 每个 MCP URL 对应一个频道。智能体调用 notify 时,订阅该频道的每个人都会收到通知,并按各自选择的通知类型送达。
  • 凭据是频道的触发令牌——也就是频道 webhook URL 末尾的那个令牌。MCP 服务器的作用和频道的 webhook 一样,只是换成了智能体懂得如何调用的工具。

建议为智能体单独创建一个频道,例如“AI Agents”,并以来电类型订阅。这样智能体可以选择最高到来电的任意级别,您也可以把频道分享给想收到同样提醒的队友。

获取 MCP URL

从 App 获取

  1. 打开 Echobell App,点击您想让智能体使用的频道。
  2. 在频道详情中找到 连接 AI 智能体部分。
  3. 复制 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> 替换为频道的触发令牌,或者直接粘贴 App 提供的片段,里面已经填好了令牌。

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 的智能体(agent)模式中使用该工具:

{
  "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 桌面版和 claude.ai

  1. 打开 Settings → Connectors。
  2. 选择 Add custom connector。
  3. 名称填写 Echobell,URL 填写 https://mcp.echobell.one/mcp/<channel-token>,然后添加。

该连接器在网页版 Claude 和桌面 App 中都可以使用。

ChatGPT

  1. 在 ChatGPT 设置中开启开发者模式(developer mode)。
  2. 打开 Settings → Connectors,选择 Create。
  3. 填入 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 中,使用输入提示可以让令牌不出现在 .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。智能体会根据您的提示词决定如何填写参数。

参数类型必填说明
titlestring是通知标题。
bodystring否通知正文。
linkstring (URL)否点击通知时打开的链接,例如拉取请求、构建日志或仪表盘。
urgencystring否normal、time-sensitive 或 calling。省略时使用每位订阅者自己的级别。参见紧急程度。

紧急程度

每位订阅频道的人都会在 App 中为它选择一种通知类型:普通、时效性或来电。这个选择是频道能提醒他的最高级别。

  • 智能体省略 urgency 时,每位订阅者按自己选择的级别接收通知。
  • 智能体发送 urgency 时,只能降低订阅者的级别,不能提高。如果您以来电类型订阅,"urgency": "normal" 会以普通通知送达;如果您以普通类型订阅,"urgency": "calling" 仍然以普通通知送达。

这样一个频道就能覆盖所有情况。以来电类型订阅,然后告诉智能体:日常进展用 normal 发送,只有出问题时才用 calling。

与 webhook 请求中的 notificationType 不同,urgency 在开启了自定义模板的频道上同样有效。

来电需要 Echobell 高级版

来电通知是 Echobell 高级版的功能。智能体请求 calling 时,没有高级版的订阅者会改为收到时效性通知——与 App 和 webhook 的行为相同。

每个频道每分钟最多来电一次

一个频道每分钟最多给每位订阅者打一次电话。如果智能体在这一分钟内再次请求来电(例如因为卡在不断重试中),订阅者会改为收到时效性通知,它仍然可以突破专注模式。Webhook 和电子邮件触发器也遵循同样的规则。

这两种情况智能体都会知道。工具结果会列出每一次降级,因此智能体知道手机并没有响铃,可以如实告诉您,而不是以为已经给您打过电话。

智能体收到的结果

每次调用 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(来电需要高级版)、subscriber-setting(订阅者自己为频道设置的级别更低)或 call-cooldown(该频道在过去一分钟内已经给这位订阅者打过电话)。

直通频道和模板频道

MCP 服务器支持两种频道:

  • 直通频道(默认)按智能体发送的原样显示 title 和 body。
  • 模板频道(在高级设置中开启了自定义模板)根据您的模板生成通知。title、body、link、externalLink 和 urgency 都可以作为模板变量使用,频道的条件也照常生效。条件不满足时不会发送通知,智能体会收到 reason: "conditions-not-met"。

提示词示例

连接服务器后,用日常语言提出通知要求即可:

  • “运行完整的测试套件,完成后用 Echobell 通知我。”
  • “重构支付模块。如果需要我做决定,就给我发一条 Echobell 时效性提醒。”
  • “部署到预发布环境。部署失败就给我打电话,否则发一条带 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 形式的配置文件。项目级配置请使用带输入提示或环境变量的请求头形式。
  • 重置触发令牌即可撤销访问。 在 App 中打开频道并重置它的触发令牌。旧的 MCP URL 会立即失效(请求返回 401 Unauthorized),旧的 webhook URL 也一样。之后请用新令牌更新您的智能体和 webhook 调用方。

限制与错误

  • 频率限制:每个令牌每分钟最多接受 120 个 MCP 请求。MCP 请求有独立的额度,与频道的 webhook 请求分开计算。
  • 401 Unauthorized:令牌缺失、错误或已被重置。

相关内容

  • Webhook——从脚本、CI 和其他服务触发同一个频道
  • 通知类型——普通、时效性和来电有什么不同
  • 模板和条件——定制和筛选通知