README
🚀 Discord通知MCP服务器
这是一个MCP(模型上下文协议)服务器,当Claude Code完成任务时,它会向Discord发送通知。该服务器使用TypeScript和Cloudflare Agents SDK构建,可部署在Cloudflare Workers上。
🚀 快速开始
本服务器可在Claude Code完成任务时向Discord发送通知。以下是使用该服务器的快速步骤:
- 完成前置准备(创建Discord Webhook、注册Cloudflare账户)
- 安装依赖
- 配置环境变量和Cloudflare密钥
- 部署到Cloudflare Workers
- 配置Claude Code以使用该服务器
✨ 主要特性
- 🤖 MCP工具:提供
send_discord_message工具用于发送通知。 - 🚀 Cloudflare Workers:无服务器运行,具备全球分发能力。
- 🔐 安全可靠:使用Cloudflare密钥存储凭证。
- 🌐 双传输协议:支持SSE和可流式HTTP,以实现最大兼容性。
- 💾 持久对象:提供McpAgent所需的状态管理。
- 💬 丰富格式:支持嵌入内容、TTS消息和提及控制。
📦 安装指南
前置要求
- Discord Webhook:在Discord频道中创建一个Webhook:
- 右键点击频道 → 编辑频道 → 集成 → Webhook
- 点击“新建Webhook”并复制Webhook URL
- Cloudflare账户:在cloudflare.com注册账户。
安装步骤
- 克隆此仓库。
- 安装依赖:
pnpm install
配置
- 从示例文件创建
.dev.vars文件:
cp .dev.vars.example .dev.vars
然后在.dev.vars中编辑你的Webhook URL。此文件用于本地开发和部署。
- 对于生产部署,设置Cloudflare密钥:
npx wrangler secret put WEBHOOK_URL
- 如有需要,在
wrangler.toml中更新你的工作器名称。
部署
部署到Cloudflare Workers:
# 首先设置密钥
npx wrangler secret put WEBHOOK_URL
# 然后部署
pnpm run deploy
替代方案:持续部署 你也可以直接从Cloudflare控制台设置持续部署。了解更多关于Cloudflare的Git集成。
Claude Code配置
使用CLI通过SSE传输将MCP服务器添加到Claude Code:
# 对于生产部署(SSE)
claude mcp add discord-notify https://your-worker-name.workers.dev/sse -t sse
# 对于本地开发
claude mcp add discord-notify http://localhost:8787/sse -t sse
注意:此服务器支持SSE(服务器发送事件)和可流式HTTP传输。虽然SSE运行良好,但可流式HTTP提供更好的可靠性,是较新的标准。
你可以使用以下命令验证配置:
claude mcp list
💻 使用示例
基础用法
一旦配置完成,Claude Code可以在你需要时向Discord发送通知。
send_discord_message工具
该工具用于向Discord发送通知消息,参数如下:
content(必需):要发送的消息内容。tts(可选):是否以文本转语音消息发送。embeds(可选):用于丰富格式的嵌入对象数组。allowed_mentions(可选):控制解析哪些提及。
示例代码:
// 简单消息
await send_discord_message({ content: "任务完成!" })
// 丰富嵌入消息
await send_discord_message({
content: "状态更新",
embeds: [{
title: "构建结果",
description: "所有测试通过",
color: 5025616, // 绿色
fields: [
{ name: "测试", value: "52/52", inline: true },
{ name: "时长", value: "2分34秒", inline: true }
]
}]
})
高级用法
触发通知的场景
Claude Code在以下情况下发送通知:
- 你明确要求:“完成后通知我”或“在Discord上告知我”。
- 执行过程中出现错误。
- 达到重要里程碑。
- 需要用户输入或干预。
示例场景
# 你说:“部署到生产环境并在完成后通知我”
# 结果:🤖 Claude Code通知
# 部署成功完成!应用现已上线。
# 你说:“运行所有测试并告知我结果”
# 结果:🤖 Claude Code通知
# 所有测试通过!52/52个测试成功。
# 你说:“处理此数据并在有任何错误时通知我”
# 结果:🤖 Claude Code通知
# 错误:处理第451行失败 - 无效的日期格式
CLAUDE.md示例
为了鼓励Claude Code有效使用Discord通知,将以下内容添加到你的CLAUDE.md中:
# Discord通知
使用mcp__discord-notify__send_discord_message工具向Discord发送通知。
- 以下情况始终发送Discord通知:
- 任务完全完成
- 需要用户输入才能继续
- 出现需要用户关注的错误
- 用户明确要求通知(例如,“通知我”、“给我发消息”、“告知我”)
- 在通知中包含相关详细信息:
- 对于构建/测试:成功/失败状态和数量
- 对于错误:具体错误消息和文件位置
- 使用简洁、信息丰富的消息,例如:
- "✅ 构建成功完成(2分34秒)"
- "❌ 测试失败:3/52个测试在auth.test.ts中失败"
- "⚠️ 需要权限修改 /etc/hosts"
📚 详细文档
开发
本地运行
# 启动本地开发服务器
pnpm dev
对于本地开发,Wrangler将自动从你的.dev.vars文件加载环境变量。
部署前检查
pnpm build
此命令将执行以下操作:
pnpm format- 使用Biome格式化代码。pnpm lint:fix- 修复 linting 问题。pnpm cf-typegen- 生成Cloudflare类型。pnpm type-check- 检查TypeScript类型。
测试服务器
# 测试SSE连接
curl http://localhost:8787/sse
# 测试健康端点
curl http://localhost:8787/
调试
测试SSE连接
你可以直接测试SSE端点:
curl -N http://localhost:8787/sse
这应该返回一个以endpoint事件开头的事件流。
常见问题
- 连接立即关闭:检查你的工作器是否正在运行,并可通过指定的URL访问。
- 未收到
endpoint事件:确保SSE头正确发送,并且流格式正确。 - Discord通知未发送:验证你的
WEBHOOK_URL是否在工作器环境中正确设置。
🔧 技术细节
| 属性 | 详情 | |------|------| | 语言 | TypeScript(ES2021目标) | | 运行时 | 支持Node.js兼容性的Cloudflare Workers | | 协议 | MCP(模型上下文协议) | | 传输方式 | SSE和可流式HTTP | | 状态管理 | 持久对象(McpAgent所需) | | 可观测性 | 启用监控 |
参考资料
本项目根据以下指南构建:
- 构建远程MCP服务器 - Cloudflare Agents
- 模型上下文协议(MCP) - Cloudflare Agents
- MCP传输方法 - Cloudflare Agents
- Cloudflare MCP模板(remote-mcp-authless)
相关项目
- Telegram Notification MCP - 向Telegram而不是Discord发送通知
📄 许可证
本项目采用MIT许可证。
Scan to join WeChat group