discord-node-mcp について
Bot tokenを使ってDiscordサーバーを管理するMCPサーバーです。コミュニティ運営者や管理チーム向けに、サーバー設定、チャンネル、メッセージ、メンバー、ロール、モデレーション、コミュニティ機能を操作できます。
主な機能
- 01サーバーとチャンネルの管理
- 02メッセージの送信と管理
- 03メンバーとロールの管理
- 04権限と自動モデレーションの設定
- 05オンボーディング、イベント、Webhookの管理
活用シーン
- 01チャンネルの作成と権限設定
- 02メンバーのモデレーションと監査ログの確認
- 03コミュニティのオンボーディングとウェルカム画面の設定
- 04メッセージ、ロール、スケジュールイベントの管理
MCP 対応
DiscordのBot tokenを使って接続し、MCPクライアントに管理ツールを提供します。stdioとHTTPのトランスポートに対応しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @mahesvara/discord-mcpserverDISCORD_BOT_TOKENシークレットYour Discord bot tokenTRANSPORTTransport type: stdio or httpPORTPort for HTTP transportHOSTHost for HTTP transportローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
67掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| response_format | enum | いいえ | 出力形式:人間が読みやすい形式は 'markdown'、構造化データは 'json'json | markdown |
詳細
Discord MCP サーバー
ボットトークンを使って、LLM が Discord サーバーを操作できるようにする MCP(Model Context Protocol)サーバーです。メッセージの送信、メンバー、ロール、チャンネル、権限の管理など、Discord を包括的に管理するツールを提供します。
機能
ギルド/サーバー管理
discord_list_guilds- ボットがアクセスできるすべてのサーバーを一覧表示しますdiscord_get_guild- 特定のサーバーの詳細情報を取得しますdiscord_edit_guild- サーバー設定(名前、認証レベル、システムチャンネルなど)を編集しますdiscord_leave_guild- サーバーから退出します
チャンネル管理
discord_list_channels- サーバー内のチャンネルを一覧表示します(種類による絞り込みが可能)discord_get_channel- チャンネルの詳細を取得します(フォーラムチャンネルの場合はフォーラムタグを含みます)discord_create_channel- テキスト/ボイス/フォーラムチャンネルとカテゴリーを作成しますdiscord_edit_channel- チャンネル名、トピック、位置、カテゴリー、フォーラムタグなどを編集しますdiscord_delete_channel- チャンネルまたはカテゴリーを削除します
フォーラムチャンネルの機能
type: "forum"を指定してフォーラムチャンネルを作成します- デフォルトのリアクション絵文字、並べ替え順、レイアウトを設定します
- フォーラムタグを管理します(作成、編集、削除)
- タグではカスタム絵文字とモデレーション設定をサポートします
権限管理
discord_set_channel_permissions- チャンネル上のロール/メンバーに対する権限の上書きを設定しますdiscord_remove_channel_permissions- 権限の上書きを削除しますdiscord_get_channel_permissions- チャンネル上のすべての権限の上書きを表示しますdiscord_sync_channel_permissions- チャンネルの権限を親カテゴリーと同期します
メッセージ操作
discord_send_message- メッセージを送信します(返信は任意)discord_get_messages- チャンネルのメッセージを取得します(ページネーション対応)discord_edit_message- ボットのメッセージを編集しますdiscord_delete_message- メッセージを削除しますdiscord_add_reaction- 絵文字のリアクションを追加しますdiscord_remove_reaction- ボットのリアクションを削除しますdiscord_pin_message- メッセージをピン留めしますdiscord_unpin_message- メッセージのピン留めを解除しますdiscord_get_pinned_messages- ピン留めされたすべてのメッセージを取得します
メンバー管理
discord_list_members- サーバーのメンバーを一覧表示します(ページネーション対応)discord_get_member- メンバーの詳細を取得しますdiscord_kick_member- メンバーをキックしますdiscord_ban_member- メンバーをBANします(メッセージ削除オプションあり)discord_unban_member- ユーザーのBANを解除しますdiscord_set_nickname- メンバーのニックネームを設定/解除しますdiscord_move_member- メンバーを別のボイスチャンネルに移動しますdiscord_timeout_member- メンバーをタイムアウト/ミュートします(最長28日間)
ロール管理
discord_list_roles- サーバーのすべてのロールを一覧表示しますdiscord_create_role- 新しいロールを作成しますdiscord_edit_role- ロール名、色、権限、設定を編集しますdiscord_delete_role- ロールを削除しますdiscord_add_role- メンバーにロールを割り当てますdiscord_remove_role- メンバーからロールを削除しますdiscord_set_role_positions- ロールの階層順を変更します
サーバー管理
discord_list_bans- BAN されたユーザーをすべて一覧表示しますdiscord_prune_members- 非アクティブなメンバーを削除します(ドライランオプションあり)discord_get_audit_log- 監査ログのエントリーを表示します
コミュニティ機能
discord_get_community_settings- コミュニティ設定(ルールチャンネル、機能など)を表示しますdiscord_setup_community- コミュニティチャンネル(ルール、更新、安全アラート)を設定します
ウェルカム画面
discord_get_welcome_screen- ウェルカム画面の設定を取得しますdiscord_edit_welcome_screen- ウェルカム画面(説明、チャンネル、絵文字)を編集します
オンボーディング
discord_get_onboarding- オンボーディング設定を取得discord_edit_onboarding- 既存のオンボーディング設定を編集discord_setup_onboarding- オンボーディングを一から設定(プロンプト、デフォルトチャンネル、ロール)
自動モデレーション
discord_list_automod_rules- 自動モデレーションルールの一覧を取得discord_get_automod_rule- 自動モデレーションルールの詳細を取得discord_create_automod_rule- 自動モデレーションルールを作成discord_edit_automod_rule- 自動モデレーションルールを編集discord_delete_automod_rule- 自動モデレーションルールを削除
絵文字の管理
discord_list_emojis- カスタム絵文字の一覧を取得discord_create_emoji- 画像 URL から絵文字を作成discord_delete_emoji- カスタム絵文字を削除
スタンプの管理
discord_list_stickers- カスタムスタンプの一覧を取得discord_delete_sticker- カスタムスタンプを削除
招待の管理
discord_list_invites- 有効な招待の一覧を取得discord_create_invite- チャンネルへの招待を作成discord_delete_invite- 招待を削除
Webhook の管理
discord_list_webhooks- Webhook の一覧を取得(サーバーまたはチャンネル)discord_create_webhook- Webhook を作成discord_edit_webhook- Webhook の名前またはチャンネルを編集discord_delete_webhook- Webhook を削除
スケジュール済みイベント
discord_list_events- スケジュール済みイベントの一覧を取得discord_create_event- スケジュール済みイベントを作成(ステージ、ボイス、または外部)discord_delete_event- スケジュール済みイベントを削除
セットアップ
1. Discord ボットを作成する
- Discord Developer Portal にアクセスします
- 「New Application」をクリックし、名前を付けます
- 「Bot」セクションに移動し、「Add Bot」をクリックします
- ボットトークンをコピーします(秘密にしてください!)
- 以下の 特権ゲートウェイインテント を有効にします:
- Server Members Intent
- Message Content Intent
2. ボットをサーバーに招待する
-
OAuth2 -> URL Generator に移動します
-
スコープを選択します:
bot、applications.commands -
ボットの権限を選択します(必要な機能に応じて選んでください):
基本権限:
- チャンネルの管理
- ロールの管理
- メッセージの管理
- メッセージ履歴の閲覧
- メッセージの送信
- リアクションの追加
メンバー管理:
- メンバーのキック
- メンバーの BAN
- ニックネームの管理
- メンバーのモデレート(タイムアウト用)
サーバー管理:
- サーバーの管理(サーバー設定用)
- 監査ログの表示
- 絵文字とスタンプの管理
- Webhook の管理
- イベントの管理
- 招待リンクの作成
-
生成された URL をコピーして開き、ボットを招待します
3. MCP サーバーをインストールする
オプション A:npm からグローバルにインストール
npm install -g @mahesvara/discord-mcpserver
オプション B:npx で直接実行(インストール不要)
npx @mahesvara/discord-mcpserver
使用方法
MCP クライアントの設定
MCP クライアントの設定に追加します(例:Claude Desktop または Claude Code):
グローバルにインストールしたパッケージを使用する場合:
{
"mcpServers": {
"discord": {
"command": "discord-mcpserver",
"env": {
"DISCORD_BOT_TOKEN": "your_bot_token_here"
}
}
}
}
npx を使用する場合(インストール不要):
{
"mcpServers": {
"discord": {
"command": "npx",
"args": ["-y", "@mahesvara/discord-mcpserver"],
"env": {
"DISCORD_BOT_TOKEN": "your_bot_token_here"
}
}
}
}
環境変数
サーバーは、カレントディレクトリにある .env ファイルから環境変数を読み込めます:
DISCORD_BOT_TOKEN=your_bot_token_here
TRANSPORT=http
PORT=3000
HOST=localhost
| 変数 | 説明 | デフォルト |
|---|---|---|
DISCORD_BOT_TOKEN | Discord ボットのトークン(必須) | - |
TRANSPORT | トランスポートモード:stdio または http | stdio |
PORT | HTTP サーバーのポート(http トランスポート使用時) | 3000 |
HOST | HTTP サーバーのホスト(リモートアクセスには 0.0.0.0 を使用) | localhost |
HTTP トランスポート
リモートアクセスするには、HTTP トランスポートを有効にしてサーバーを実行します:
Linux/macOS:
DISCORD_BOT_TOKEN=your_token TRANSPORT=http PORT=3000 HOST=0.0.0.0 discord-mcpserver
Windows(コマンドプロンプト):
set DISCORD_BOT_TOKEN=your_token && set TRANSPORT=http && set PORT=3000 && set HOST=0.0.0.0 && discord-mcpserver
Windows(PowerShell):
$env:DISCORD_BOT_TOKEN="your_token"; $env:TRANSPORT="http"; $env:PORT="3000"; $env:HOST="0.0.0.0"; discord-mcpserver
または .env ファイルを使用します(すべてのプラットフォームで動作します):
discord-mcpserver
次に、HTTP 経由で接続するよう MCP クライアントを設定します:
{
"mcpServers": {
"discord": {
"type": "http",
"url": "http://your-server-ip:3000/mcp"
}
}
}
ツールの例
タグ付きのフォーラムチャンネルを作成する
{
"tool": "discord_create_channel",
"params": {
"guild_id": "1234567890123456789",
"name": "help-forum",
"type": "forum",
"topic": "Ask questions and get help",
"default_reaction_emoji": "✅",
"default_sort_order": "latest_activity",
"default_forum_layout": "list_view",
"available_tags": [
{ "name": "Solved", "emoji_name": "✅", "moderated": false },
{ "name": "Bug", "emoji_name": "🐛", "moderated": false },
{ "name": "Question", "emoji_name": "❓", "moderated": false },
{ "name": "Announcement", "emoji_name": "📢", "moderated": true }
]
}
}
サーバーのオンボーディングを設定する
{
"tool": "discord_setup_onboarding",
"params": {
"guild_id": "1234567890123456789",
"default_channel_ids": ["1111111111111111111"],
"prompts": [
{
"type": "multiple_choice",
"title": "What are you interested in?",
"single_select": false,
"required": true,
"options": [
{ "title": "Gaming", "emoji_name": "🎮", "role_ids": ["2222222222222222222"] },
{ "title": "Tech", "emoji_name": "💻", "role_ids": ["3333333333333333333"] }
]
}
]
}
}
コミュニティ設定を構成する
{
"tool": "discord_setup_community",
"params": {
"guild_id": "1234567890123456789",
"rules_channel_id": "1111111111111111111",
"public_updates_channel_id": "2222222222222222222",
"description": "A friendly gaming community",
"preferred_locale": "en-US"
}
}
ウェルカム画面を編集する
{
"tool": "discord_edit_welcome_screen",
"params": {
"guild_id": "1234567890123456789",
"enabled": true,
"description": "Welcome to our server!",
"welcome_channels": [
{ "channel_id": "1111111111111111111", "description": "Read the rules", "emoji_name": "📜" },
{ "channel_id": "2222222222222222222", "description": "Introduce yourself", "emoji_name": "👋" }
]
}
}
カテゴリーを作成する
{
"tool": "discord_create_channel",
"params": {
"guild_id": "1234567890123456789",
"name": "Bot Testing",
"type": "category"
}
}
カテゴリー内にチャンネルを作成する
{
"tool": "discord_create_channel",
"params": {
"guild_id": "1234567890123456789",
"name": "bot-commands",
"type": "text",
"topic": "Channel for bot interactions",
"parent_id": "CATEGORY_ID_HERE"
}
}
チャンネルの権限を設定する
{
"tool": "discord_set_channel_permissions",
"params": {
"channel_id": "1234567890123456789",
"target_id": "ROLE_ID_HERE",
"target_type": "role",
"allow": ["ViewChannel", "SendMessages", "ReadMessageHistory"],
"deny": ["CreatePublicThreads"]
}
}
一般的な権限名
表示とアクセス:
ViewChannel- チャンネルを表示する
メッセージ:
SendMessages、ReadMessageHistory、ManageMessagesEmbedLinks、AttachFiles、AddReactionsUseExternalEmojis、UseExternalStickersMentionEveryone
スレッド:
CreatePublicThreads、CreatePrivateThreadsSendMessagesInThreads、ManageThreads
音声:
Connect、Speak、StreamMuteMembers、DeafenMembers、MoveMembersUseVAD、PrioritySpeaker
管理:
ManageChannels、ManageRoles、ManageWebhooks
メッセージを送信する
{
"tool": "discord_send_message",
"params": {
"channel_id": "1234567890123456789",
"content": "Hello from the MCP server!"
}
}
ロールを割り当てる
{
"tool": "discord_add_role",
"params": {
"guild_id": "1234567890123456789",
"user_id": "9876543210987654321",
"role_id": "1111111111111111111"
}
}
応答形式
ほとんどの読み取り操作では、次の2種類の応答形式をサポートしています。
- json(デフォルト):プログラムによる処理向けの構造化データ
- markdown:人が読みやすい形式に整えた出力
エラー処理
すべてのツールは、操作に失敗したときに提案を含む明確なエラーメッセージを返します。
- 権限の不足
- 無効な ID(ギルド、チャンネル、ユーザー、ロール、メッセージ)
- レート制限
- ネットワークの問題
セキュリティに関する注意事項
- ボットトークンをコミットしないでください。環境変数を使用してください
- ボットは招待されたサーバーでのみ操作できます
- 削除、キック、BAN などの破壊的な操作には、
destructiveHint: trueが指定されています - すべての入力は Zod スキーマで検証されます
必要なボット権限
使用するツールに応じて、ボットには次の権限が必要です。
| ツールカテゴリ | 必要な権限 |
|---|---|
| メッセージ | メッセージの送信、メッセージ履歴の閲覧、メッセージの管理 |
| チャンネル | チャンネルの管理 |
| 権限 | ロールの管理(チャンネルの権限の上書き設定用) |
| メンバー | メンバーのキック、メンバーのBAN、ニックネームの管理、メンバーのモデレーション |
| ロール | ロールの管理 |
| リアクション | リアクションの追加 |
| サーバー設定 | ギルドの管理 |
| 絵文字/スタンプ | 絵文字とスタンプの管理 |
| 招待 | インスタント招待の作成、ギルドの管理 |
| Webhook | Webhook の管理 |
| イベント | イベントの管理 |
| 監査ログ | 監査ログの閲覧 |
| コミュニティ/オンボーディング | ギルドの管理 |
ツールの例
ロールの権限を編集する
{
"tool": "discord_edit_role",
"params": {
"guild_id": "1234567890123456789",
"role_id": "1111111111111111111",
"name": "Moderators",
"color": 3447003,
"permissions": ["KickMembers", "BanMembers", "ManageMessages", "ModerateMembers"]
}
}
ロール階層の順序を変更する
{
"tool": "discord_set_role_positions",
"params": {
"guild_id": "1234567890123456789",
"positions": [
{ "role_id": "1111111111111111111", "position": 5 },
{ "role_id": "2222222222222222222", "position": 4 }
]
}
}
メンバーをタイムアウトする
{
"tool": "discord_timeout_member",
"params": {
"guild_id": "1234567890123456789",
"user_id": "9876543210987654321",
"duration_minutes": 60,
"reason": "Spamming in chat"
}
}
招待を作成する
{
"tool": "discord_create_invite",
"params": {
"channel_id": "1234567890123456789",
"max_age": 86400,
"max_uses": 10,
"temporary": false
}
}
スケジュール済みイベントを作成する
{
"tool": "discord_create_event",
"params": {
"guild_id": "1234567890123456789",
"name": "Community Game Night",
"description": "Join us for games!",
"scheduled_start_time": "2024-12-01T20:00:00Z",
"entity_type": "voice",
"channel_id": "1111111111111111111"
}
}
ロールの権限名
ロールを編集するときは、次の権限名を使用してください。
一般:
Administrator- フルアクセス(慎重に使用してください)ManageGuild、ManageRoles、ManageChannelsKickMembers、BanMembers、ModerateMembersViewAuditLog、ViewGuildInsights
メッセージ:
SendMessages、ManageMessages、ReadMessageHistoryEmbedLinks、AttachFiles、AddReactionsMentionEveryone、UseExternalEmojis
音声:
Connect、Speak、StreamMuteMembers、DeafenMembers、MoveMembers
その他:
ManageWebhooks、ManageEmojisAndStickersManageEvents、CreateEvents
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。