Discord Notification MCP Server について
Discord Notification MCP Server は、Claude Code のタスク完了、エラー発生、入力待ちを Discord に通知します。TypeScript と Cloudflare Agents SDK で構築され、SSE と Streamable HTTP に対応しています。
主な機能
- 01`send_discord_message` によるメッセージ送信
- 02埋め込み、TTS、メンション制御
- 03SSE と Streamable HTTP のトランスポート
- 04Webhook 認証情報を Cloudflare secrets で管理
- 05Cloudflare Workers へのデプロイ
活用シーン
- 01Claude Code のタスク完了を Discord に通知
- 02実行エラーを Discord に報告
- 03Discord 通知でユーザー入力を依頼
- 04書式付きのビルド結果や状況を送信
MCP 対応
MCP サーバーは Discord 通知を送る `send_discord_message` ツールを公開します。MCP クライアントは SSE または Streamable HTTP で接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Discord 通知 MCP サーバー
Claude Code がタスクを完了したときに Discord へ通知を送る MCP(Model Context Protocol)サーバーです。Cloudflare Agents SDK を使用して TypeScript で構築されており、Cloudflare Workers にデプロイできます。
特長
- 🤖 MCP ツール:通知を送信する
send_discord_messageツールを提供します - 🚀 Cloudflare Workers:グローバルに分散されたサーバーレス環境で実行されます
- 🔐 セキュア:認証情報には Cloudflare のシークレットを使用します
- 🌐 デュアルトランスポート:互換性を最大限に高めるため、SSE と Streamable HTTP の両方をサポートします
- 💾 Durable Objects:McpAgent が必要とする状態管理を行います
- 💬 リッチフォーマット:埋め込み、TTS メッセージ、メンション制御をサポートします
アーキテクチャ
このサーバーは、Cloudflare Agents SDK を使用して MCP 仕様を実装しています。
- GET /sse:MCP 通信用の SSE エンドポイント
- POST /mcp:MCP 通信用の Streamable HTTP エンドポイント
- TypeScript、MCP SDK、Cloudflare Agents SDK で構築
- 適切な JSON-RPC 2.0 エラー処理
- ステートフル接続用の Durable Objects(McpAgent が必要とします)
- Node.js 互換モードを有効化
セットアップ
前提条件
- 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の Worker 名を変更します
デプロイ
Cloudflare Workers にデプロイします。
# First set secrets
npx wrangler secret put WEBHOOK_URL
# Then deploy
pnpm run deploy
代替方法:継続的デプロイ
Cloudflare ダッシュボードから直接、継続的デプロイを設定することもできます。 Cloudflare との Git 連携をご覧ください。
Claude Code の設定
SSE トランスポートを使用し、CLI から MCP サーバーを Claude Code に追加します。
# For production deployment (SSE)
claude mcp add discord-notify https://your-worker-name.workers.dev/sse -t sse
# For local development
claude mcp add discord-notify http://localhost:8787/sse -t sse
注:このサーバーは、SSE(Server-Sent Events)と Streamable HTTP の両方のトランスポートをサポートしています。SSE も問題なく動作しますが、Streamable HTTP のほうが信頼性が高く、新しい標準です。
次のコマンドで設定を確認できます。
claude mcp list
使い方
設定が完了すると、必要に応じて Claude Code から Discord に通知を送信できます。
利用可能なツール
send_discord_message:Discord に通知メッセージを送信します
content(必須):送信するメッセージの内容tts(任意):テキスト読み上げメッセージとして送信しますembeds(任意):リッチフォーマット用の埋め込みオブジェクトの配列allowed_mentions(任意):解析するメンションを制御します
使用例:
// Simple message
await send_discord_message({ content: "Task completed!" })
// Rich embed message
await send_discord_message({
content: "Status Update",
embeds: [{
title: "Build Results",
description: "All tests passed",
color: 5025616, // Green
fields: [
{ name: "Tests", value: "52/52", inline: true },
{ name: "Duration", value: "2m 34s", inline: true }
]
}]
})
通知が届くタイミング
Claude Code は次の場合に通知を送信します。
- 「終わったら通知して」や「Discord で知らせて」と明示的に依頼したとき
- 実行中にエラーが発生したとき
- 重要なマイルストーンに到達したとき
- ユーザーの入力や対応が必要なとき
使用シナリオの例
# You say: "Deploy to production and notify me when done"
# Result: 🤖 Claude Code Notification
# Deployment completed successfully! The app is now live.
# You say: "Run all tests and let me know the results"
# Result: 🤖 Claude Code Notification
# All tests passed! 52/52 tests successful.
# You say: "Process this data and notify me if there are any errors"
# Result: 🤖 Claude Code Notification
# Error: Failed to process row 451 - invalid date format
通知の例
Claude Code からの Discord 通知の例
タスクの完了中に通知を送信する Claude Code
CLAUDE.md の例
Claude Code が Discord 通知を効果的に使用できるように、次の内容を CLAUDE.md に追加します。
# Discord Notifications
Use the mcp__discord-notify__send_discord_message tool to send notifications to Discord.
- Always send a Discord notification when:
- A task is fully complete
- You need user input to continue
- An error occurs that requires user attention
- The user explicitly asks for a notification (e.g., "notify me", "send me a message", "let me know")
- Include relevant details in notifications:
- For builds/tests: success/failure status and counts
- For errors: the specific error message and file location
- Use concise, informative messages like:
- "✅ Build completed successfully (2m 34s)"
- "❌ Tests failed: 3/52 failing in auth.test.ts"
- "⚠️ Need permission to modify /etc/hosts"
開発
ローカルで実行します:
# Start local development server
pnpm dev
ローカル開発では、Wrangler が .dev.vars ファイルから環境変数を自動的に読み込みます。
デプロイ前にすべてのチェックを実行します:
pnpm build
このコマンドでは、以下を実行します:
pnpm format- Biome でコードをフォーマットしますpnpm lint:fix- リントの問題を修正しますpnpm cf-typegen- Cloudflare の型を生成しますpnpm type-check- TypeScript の型をチェックします
サーバーをテストします:
# Test SSE connection
curl http://localhost:8787/sse
# Test health endpoint
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(Model Context Protocol)
- トランスポート:SSE および Streamable HTTP
- 状態管理:Durable Objects(McpAgent で必須)
- 可観測性:監視用に有効化
参考資料
このプロジェクトは、以下のガイドに従って構築されました:
- リモート MCP サーバーの構築 - Cloudflare Agents
- Model Context Protocol(MCP) - Cloudflare Agents
- MCP トランスポート方式 - Cloudflare Agents
- Cloudflare MCP テンプレート(remote-mcp-authless)
関連プロジェクト
- Telegram 通知 MCP - Discord の代わりに Telegram に通知を送信します
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。