Discord Notification Mcp

Discord Notification Mcp

🚀 Discord通知MCP服务器

这是一个MCP(模型上下文协议)服务器,当Claude Code完成任务时,它会向Discord发送通知。该服务器使用TypeScript和Cloudflare Agents SDK构建,可部署在Cloudflare Workers上。

🚀 快速开始

本服务器可在Claude Code完成任务时向Discord发送通知。以下是使用该服务器的快速步骤:

  1. 完成前置准备(创建Discord Webhook、注册Cloudflare账户)
  2. 安装依赖
  3. 配置环境变量和Cloudflare密钥
  4. 部署到Cloudflare Workers
  5. 配置Claude Code以使用该服务器

✨ 主要特性

  • 🤖 MCP工具:提供send_discord_message工具用于发送通知。
  • 🚀 Cloudflare Workers:无服务器运行,具备全球分发能力。
  • 🔐 安全可靠:使用Cloudflare密钥存储凭证。
  • 🌐 双传输协议:支持SSE和可流式HTTP,以实现最大兼容性。
  • 💾 持久对象:提供McpAgent所需的状态管理。
  • 💬 丰富格式:支持嵌入内容、TTS消息和提及控制。

📦 安装指南

前置要求

  1. Discord Webhook:在Discord频道中创建一个Webhook:
    • 右键点击频道 → 编辑频道 → 集成 → Webhook
    • 点击“新建Webhook”并复制Webhook URL
  2. Cloudflare账户:在cloudflare.com注册账户。

安装步骤

  1. 克隆此仓库。
  2. 安装依赖:
pnpm install

配置

  1. 从示例文件创建.dev.vars文件:
cp .dev.vars.example .dev.vars

然后在.dev.vars中编辑你的Webhook URL。此文件用于本地开发和部署。

  1. 对于生产部署,设置Cloudflare密钥:
npx wrangler secret put WEBHOOK_URL
  1. 如有需要,在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

此命令将执行以下操作:

  1. pnpm format - 使用Biome格式化代码。
  2. pnpm lint:fix - 修复 linting 问题。
  3. pnpm cf-typegen - 生成Cloudflare类型。
  4. pnpm type-check - 检查TypeScript类型。

测试服务器

# 测试SSE连接
curl http://localhost:8787/sse

# 测试健康端点
curl http://localhost:8787/

调试

测试SSE连接

你可以直接测试SSE端点:

curl -N http://localhost:8787/sse

这应该返回一个以endpoint事件开头的事件流。

常见问题

  1. 连接立即关闭:检查你的工作器是否正在运行,并可通过指定的URL访问。
  2. 未收到endpoint事件:确保SSE头正确发送,并且流格式正确。
  3. Discord通知未发送:验证你的WEBHOOK_URL是否在工作器环境中正确设置。

🔧 技术细节

属性 详情
语言 TypeScript(ES2021目标)
运行时 支持Node.js兼容性的Cloudflare Workers
协议 MCP(模型上下文协议)
传输方式 SSE和可流式HTTP
状态管理 持久对象(McpAgent所需)
可观测性 启用监控

参考资料

本项目根据以下指南构建:

相关项目

📄 许可证

本项目采用MIT许可证。

  • 0 关注
  • 0 收藏,24 浏览
  • system 提出于 2025-10-03 14:24

相似服务问题

相关AI产品