mcpField
D
Discord Notification MCP Server

Discord Notification MCP Server

ローカル
github.com/kstonekuanコミュニケーション870 週間前に更新

Discord Notification MCP Server について

Discord Notification MCP Server は、Claude Code のタスク完了、エラー発生、入力待ちを Discord に通知します。TypeScript と Cloudflare Agents SDK で構築され、SSE と Streamable HTTP に対応しています。

主な機能

  1. 01`send_discord_message` によるメッセージ送信
  2. 02埋め込み、TTS、メンション制御
  3. 03SSE と Streamable HTTP のトランスポート
  4. 04Webhook 認証情報を Cloudflare secrets で管理
  5. 05Cloudflare Workers へのデプロイ

活用シーン

  1. 01Claude Code のタスク完了を Discord に通知
  2. 02実行エラーを Discord に報告
  3. 03Discord 通知でユーザー入力を依頼
  4. 04書式付きのビルド結果や状況を送信

MCP 対応

MCP サーバーは Discord 通知を送る `send_discord_message` ツールを公開します。MCP クライアントは SSE または Streamable HTTP で接続できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"discord-notification": {
"command": "npx",
"args": [
"-y",
"wrangler"
]
}
}
}
起動コマンドnpx -y wrangler

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmwrangler

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Discord 通知 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 互換モードを有効化

セットアップ

前提条件
  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 を設定します。このファイルはローカル開発とデプロイの両方で使用されます。

  2. 本番環境にデプロイする場合は、Cloudflare のシークレットを設定します。

    npx wrangler secret put WEBHOOK_URL
    
  3. 必要に応じて、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
通知の例
Discord 通知の例

Claude Code からの Discord 通知の例

Claude Code 連携の例

タスクの完了中に通知を送信する 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

このコマンドでは、以下を実行します:

  1. pnpm format - Biome でコードをフォーマットします
  2. pnpm lint:fix - リントの問題を修正します
  3. pnpm cf-typegen - Cloudflare の型を生成します
  4. 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 イベントで始まるイベントストリームが返されます。

よくある問題
  1. 接続がすぐに閉じる:ワーカーが実行中で、指定した URL からアクセスできることを確認してください。

  2. endpoint イベントが受信されない:SSE ヘッダーが正しく送信され、ストリームが適切にフォーマットされていることを確認してください。

  3. Discord 通知が送信されない:WEBHOOK_URL がワーカー環境に正しく設定されていることを確認してください。

技術的な詳細

  • 言語:TypeScript(ES2021 ターゲット)
  • ランタイム:Node.js 互換性を備えた Cloudflare Workers
  • プロトコル:MCP(Model Context Protocol)
  • トランスポート:SSE および Streamable HTTP
  • 状態管理:Durable Objects(McpAgent で必須)
  • 可観測性:監視用に有効化

参考資料

このプロジェクトは、以下のガイドに従って構築されました:

関連プロジェクト

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。