这是一个 MCP(模型上下文协议)服务器,当 Claude Code 完成任务时,它会向 Telegram 发送通知。该服务器使用 TypeScript 结合 Cloudflare Agents SDK 构建,可部署在 Cloudflare Workers 上。
send_telegram_message 工具用于发送通知。本服务器使用 Cloudflare 的 Agents SDK 实现了 MCP 规范:
https://api.telegram.org/bot/getUpdates
pnpm install
从示例文件创建 .dev.vars 文件:
cp .dev.vars.example .dev.vars
然后在 .dev.vars 文件中编辑你的机器人令牌和聊天 ID。此文件用于本地开发和部署。
对于生产部署,设置 Cloudflare 机密信息:
npx wrangler secret put BOT_TOKEN
npx wrangler secret put DEFAULT_CHAT_ID # 可选
注意:DEFAULT_CHAT_ID 是可选的。如果未设置,则在调用 send_telegram_message 工具时必须提供 chat_id 参数。
如果需要,更新 wrangler.toml 文件中的工作人员名称。
部署到 Cloudflare Workers:
使用 Wrangler 进行部署:
# 首先设置机密信息
npx wrangler secret put BOT_TOKEN
npx wrangler secret put DEFAULT_CHAT_ID # 可选
# 然后进行部署
pnpm run deploy
替代方案:持续部署 你也可以直接从 Cloudflare 仪表板设置持续部署。了解更多关于 Cloudflare 的 Git 集成。
通过 CLI 使用 SSE 传输将 MCP 服务器添加到 Claude Code:
# 用于生产部署(SSE)
claude mcp add telegram-notify https://your-worker-name.workers.dev/sse -t sse
# 用于本地开发
claude mcp add telegram-notify http://localhost:8787/sse -t sse
注意:此服务器支持 SSE(服务器发送事件)和可流式 HTTP 传输。虽然 SSE 运行良好,但可流式 HTTP 提供更好的可靠性,是较新的标准。
你可以使用以下命令验证配置:
claude mcp list
send_telegram_message:向 Telegram 发送通知消息
text(必需):要发送的消息文本。chat_id(可选):Telegram 聊天 ID(如果未提供,则使用 DEFAULT_CHAT_ID)。parse_mode(可选):消息格式化方式,可选 "Markdown" 或 "HTML"。disable_notification(可选):静默发送消息。示例用法:
// 使用环境中的 DEFAULT_CHAT_ID
await send_telegram_message({ text: "任务完成!" })
// 发送到特定聊天(覆盖 DEFAULT_CHAT_ID)
await send_telegram_message({ text: "你好!", chat_id: "123456789" })
// 使用 Markdown 格式发送
await send_telegram_message({
text: "*粗体* 和 _斜体_ 文本",
parse_mode: "Markdown"
})
Claude Code 在以下情况下发送通知:
# 你说:"部署到生产环境并在完成后通知我"
# 结果:🤖 Claude Code 通知
# 部署成功完成!应用现已上线。
# 你说:"运行所有测试并告知我结果"
# 结果:🤖 Claude Code 通知
# 所有测试通过!52/52 个测试成功。
# 你说:"处理此数据并在出现任何错误时通知我"
# 结果:🤖 Claude Code 通知
# 错误:处理第 451 行失败 - 日期格式无效
为了鼓励 Claude Code 有效使用 Telegram 通知,将以下内容添加到你的 CLAUDE.md 文件中:
# Telegram 通知
使用 mcp__telegram-notify__send_telegram_message 工具向 Telegram 发送通知。
- 以下情况始终发送 Telegram 通知:
- 任务完全完成时。
- 需要用户输入才能继续时。
- 出现需要用户关注的错误时。
- 用户明确要求通知时(例如,"通知我"、"给我发送消息"、"告知我")。
- 在通知中包含相关详细信息:
- 对于构建/测试:成功/失败状态和数量。
- 对于错误:具体错误消息和文件位置。
- 使用简洁、信息丰富的消息,例如:
- "✅ 构建成功完成(2 分 34 秒)"
- "❌ 测试失败:3/52 个测试在 auth.test.ts 中失败"
- "⚠️ 需要权限修改 /etc/hosts"
# 启动本地开发服务器
pnpm dev
对于本地开发,Wrangler 将自动从 .dev.vars 文件中加载环境变量。
pnpm build
此命令将执行以下操作:
pnpm format - 使用 Biome 格式化代码。pnpm lint:fix - 修复代码检查问题。pnpm cf-typegen - 生成 Cloudflare 类型。pnpm type-check - 检查 TypeScript 类型。# 测试 SSE 连接
curl http://localhost:8787/sse
# 测试健康端点
curl http://localhost:8787/
你可以直接测试 SSE 端点:
curl -N http://localhost:8787/sse
这应该返回一个以 endpoint 事件开头的事件流。
endpoint 事件:确保 SSE 头正确发送,并且流格式正确。BOT_TOKEN 和 DEFAULT_CHAT_ID 是否在工作人员环境中正确设置。本项目参考了以下指南:
本项目采用 MIT 许可证。