Discord について
discord-mcpは、LLMやMCPクライアントからDiscordを管理するMCPサーバーで、メッセージ、モデレーション、チャンネル、ロールなど168のツールを備えています。リッチメッセージや再起動後も残るロールメニューに対応し、URL取得の保護機能とstdio・HTTPの通信方式を備えています。
主な機能
- 01メッセージ、チャンネル、ロール、スレッドの管理
- 02サーバーのモデレーションとAutoMod管理
- 03リッチメッセージ、投票、ファイルの作成
- 04再起動後も残るロールメニュー
- 05stdio、HTTP、Unixソケットの通信方式
活用シーン
- 01返信、埋め込み、投票、ファイルの投稿
- 02チャンネル権限とサーバーロールの管理
- 03モデレーションキューとAutoModの確認
- 04永続的なロール選択インタラクションの提供
MCP 対応
MCPクライアントにDiscord管理用の168のツールを提供します。stdioとHTTPに対応し、HTTPではUnixソケットでの待ち受けも可能です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @willuhmjs/discord-mcpDISCORD_TOKENシークレットDiscord bot token from https://discord.com/developers/applicationsDISCORD_GUILD_IDDefault server (guild) ID used when a tool call omits guildIdENABLE_MEMBERS_INTENTSet to 1 to enable the privileged Server Members intent (needed for member-list tools)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
discord-mcp
LLM が Discord サーバーを操作できる MCP サーバーです。メッセージ、モデレーション、チャンネル、 ロール、スレッド、イベント、招待、Webhook、AutoMod などに対応する 168 個のツールを備えています。Claude、Cursor、VS Code、その他の あらゆる MCP クライアントで動作します。
- リッチメッセージ:埋め込み、Components V2、投票、ファイル、返信に対応しています。Discord に送信する前に検証し、問題のあるフィールドを示すエラーを返します。
- インタラクション:再起動後も維持されるロールメニューに加え、誰が何をクリックしたかのログを記録します。
- デフォルトで安全:
127.0.0.1にバインドし、URL フェッチには SSRF 対策を適用します。Webhook トークンを応答に含めることはありません。
クイックスタート
- 開発者ポータルでボットを作成し、Discord サーバーに招待して、Message Content インテント(Bot → Privileged Gateway Intents)を有効にします。
- MCP クライアントの設定(
mcp.json、claude_desktop_config.json、.cursor/mcp.jsonなど)に以下を追加します。
{
"mcpServers": {
"discord": {
"command": "npx",
"args": ["-y", "@willuhmjs/discord-mcp", "--stdio"],
"env": {
"DISCORD_TOKEN": "your-bot-token",
"DISCORD_GUILD_ID": "your-server-id"
}
}
}
}
VS Code では "mcpServers" の代わりに "servers" を使用します。Windows でクライアントが npx を見つけられない場合は、"command": "cmd" と "args": ["/c", "npx", "-y", "@willuhmjs/discord-mcp", "--stdio"] を使用してください。
Claude Code — 1 つのコマンドで実行できます。
claude mcp add discord -e DISCORD_TOKEN=... -e DISCORD_GUILD_ID=... -- npx -y @willuhmjs/discord-mcp --stdio
Docker — http://127.0.0.1:8085/mcp で長時間稼働する HTTP サーバーを起動します。
docker run --rm -e DISCORD_TOKEN=... -p 127.0.0.1:8085:8085 ghcr.io/willuhmjs/discord-mcp
npx の実行には Node.js 22 以降が必要です。
設定
| 変数 | デフォルト | 意味 |
|---|---|---|
DISCORD_TOKEN | —(必須) | ボットのトークンです。 |
DISCORD_GUILD_ID | — | guildId が省略された場合にツールが使用するデフォルトのサーバーです。 |
ENABLE_MEMBERS_INTENT | off | 特権 Server Members インテントを有効にします(ポータルでも有効にしてください)。メンバーリスト関連のツールに必要です。 |
MCP_TRANSPORT | http | 標準入力/標準出力を使用する場合は stdio を指定します。--stdio フラグでも同じ設定になります。 |
HOST / PORT | 127.0.0.1 / 8085 | HTTP のバインドアドレスとポートです。 |
MCP_SOCKET | — | HOST:PORT の代わりに Unix ソケットで待ち受けます(HTTP モードのみ)。 |
HTTP モードでは、POST /mcp が MCP を提供し(Mcp-Session-Id を使ったステートフルセッション)、ボットの接続後に
GET /health が 200 を返します。
HTTP エンドポイントを非公開に保つ
HTTP エンドポイントには認証がありません。接続できる人は誰でも、ボットとしてすべてのツールを使用できます。ループバックまたはプライベートネットワーク上で運用してください。共有マシンでは、他のアカウントからもループバックポートに接続できるため、自分だけが開ける Unix ソケットを使用してください。
mkdir -m 700 ~/.mcp
MCP_SOCKET=~/.mcp/discord.sock DISCORD_TOKEN=... npx @willuhmjs/discord-mcp
curl --unix-socket ~/.mcp/discord.sock http://localhost/health
ソケットはモード 600 で作成されます。NFS などのネットワークファイルシステムは使用しないでください。Docker イメージは
0.0.0.0 にバインドするため、コンテナは内部ネットワーク上に置いてください。stdio モードではネットワークに一切公開されません。
ツール
各ツールとそのパラメーター、必要な Discord 権限は、規約(文字列 ID、JSON 文字列ペイロード、監査ログ用の reason)およびメッセージ/コンポーネントの形式とともに、
docs/TOOLS.md に記載されています。
セキュリティ
- ツールが取得する URL(絵文字、ステッカー、ファイル、アバター)は、すべて保護されたフェッチャーを経由します。http/https のみを許可し、リクエストの前とリダイレクトのたびに、プライベート/ループバック/メタデータ IP をブロックします。また、サイズと時間に制限を設けています。
- Webhook トークンは認証情報です。
create_webhookは URL を一度だけ返し、一覧/取得ツールでは表示しません。 - サーバーのファイルシステムを読み取るツールはありません。
開発
npm ci
npm run build # tsc -> dist/
npm test # vitest, no Discord token needed
npm run typecheck
コントラクトテストにより、すべてのツール名とパラメーターセットが tests/fixtures/tool-contract.json と一致するよう検証されます。
TESTING.md は、実際のテストサーバーで実行するための手動チェックリストです。
リリースは自動化されています。Conventional Commits に従った main へのコミット(feat:、fix:、feat!:)によってリリース PR が作成されます。これをマージすると、npm、MCP Registry、GHCR に公開されます。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。