mcpField
D
discord-mcp

discord-mcp

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

discord-mcp について

discord-mcp は軽量な Discord 向け MCP サーバーで、95 個以上のツールを備え、複数のサーバーでメッセージ、チャンネル、ロール、権限、モデレーションを管理できます。Claude や Cursor などのクライアントから Discord サーバーを運用したい利用者に向いています。

主な機能

  1. 01日常的なサーバー管理をカバーする 95 個以上のツール
  2. 02複数の Discord サーバーでの動作
  3. 03ツールセットによる公開ツールの絞り込み
  4. 04ギルド許可リストによる操作対象サーバーの制限
  5. 05npm と Docker による導入

活用シーン

  1. 01自然言語による Discord メッセージの読み取り、送信、検索
  2. 02チャンネル権限とロール割り当ての一括管理
  3. 03一括削除や BAN などのメンバーのモデレーション

MCP 対応

本プロジェクトは MCP サーバーとして、Claude Desktop、Claude Code、Cursor、VS Code Copilot などの MCP クライアントに Discord 関連のツールを公開します。接続には Discord Bot トークンを使用します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"pasympa-discord": {
"command": "npx",
"args": [
"-y",
"@pasympa/discord-mcp"
],
"env": {
"DISCORD_TOKEN": "<DISCORD_TOKEN>"
}
}
}
}
起動コマンドnpx -y @pasympa/discord-mcp
設定が必要な環境変数
DISCORD_TOKENシークレットDiscord bot token

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

パッケージ
npm@pasympa/discord-mcp2.2.0
ocidocker.io/pasympa/discord-mcp:2.2.0

ツール

99

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

Discord MCP サーバー

95 以上のツールを備えた、軽量なマルチギルド対応 Discord MCP サーバー

npm License Node Discord.js MCP

discord-mcp MCP server

Claude Desktop、Claude Code、Cursor、VS Code Copilot、または MCP 対応クライアントから、Discord サーバー全体を管理できます。 メッセージ、チャンネル、ロール、権限、モデレーション、フォーラム、Webhook などをすべて自然言語で操作できます。


このサーバーを選ぶ理由

  • 95 以上のツール:メッセージ、チャンネル、ロール、権限、モデレーション、フォーラム、Webhook、スケジュール済みイベント、招待、DM、埋め込みなど
  • マルチギルド対応:複数のサーバーで動作し、GUILD_ID に固定されません
  • 軽量:TypeScript + Node.js、パッケージは約 70kB、Docker イメージは約 73MB(Java ベースの代替製品は 400MB 以上)
  • モジュール式:すっきりしたアーキテクチャで、新しいツールを簡単に追加できます
  • 2 種類のインストール方法:npm または Docker から選択できます

クイックスタート

これを MCP クライアントの設定に追加し、YOUR_TOKEN_HERE をボットのトークンに置き換えてください。

{
  "mcpServers": {
    "discord": {
      "command": "npx",
      "args": ["-y", "@pasympa/discord-mcp"],
      "env": {
        "DISCORD_TOKEN": "YOUR_TOKEN_HERE"
      }
    }
  }
}

インストールは不要です。npx がすべて処理します。

まだボットを作成していませんか?Discord ボットの作成をご覧ください。


設定

Claude Desktop

上記の設定を claude_desktop_config.json に追加してください。

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

保存後、Claude Desktop を再起動してください。

Claude Code
claude mcp add discord -e DISCORD_TOKEN=YOUR_TOKEN_HERE -- npx -y @pasympa/discord-mcp
Cursor

上記の設定を ~/.cursor/mcp.json に追加してください。詳しくはCursor MCP ドキュメントをご覧ください。

VS Code / GitHub Copilot

.vscode/mcp.json に追加してください。

{
  "inputs": [
    {
      "type": "promptString",
      "id": "discord-token",
      "description": "Discord Bot Token",
      "password": true
    }
  ],
  "servers": {
    "discord": {
      "command": "npx",
      "args": ["-y", "@pasympa/discord-mcp"],
      "env": {
        "DISCORD_TOKEN": "${input:discord-token}"
      }
    }
  }
}

詳しくはVS Code MCP ドキュメントをご覧ください。

Docker
{
  "mcpServers": {
    "discord": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "DISCORD_TOKEN=YOUR_TOKEN_HERE",
        "pasympa/discord-mcp:latest"
      ]
    }
  }
}
ソースから実行
git clone https://github.com/PaSympa/discord-mcp
cd discord-mcp
npm install && npm run build
{
  "mcpServers": {
    "discord": {
      "command": "node",
      "args": ["/absolute/path/to/discord-mcp/dist/index.js"],
      "env": {
        "DISCORD_TOKEN": "YOUR_TOKEN_HERE"
      }
    }
  }
}
.env ファイル(代替方法)

MCP 設定でトークンを渡す代わりに、プロジェクトのルートに .env ファイルを作成してください。

DISCORD_TOKEN=YOUR_TOKEN_HERE

サーバーは dotenv を使って .env を自動的に読み込みます。

### 環境変数
変数デフォルト説明
DISCORD_TOKENなし必須。 ボットトークン。
DISCORD_MESSAGE_CONTENTtruefalse に設定すると、接続時に Message Content 特権ゲートウェイインテントを要求しなくなります。
DISCORD_GUILD_MEMBERStruefalse に設定すると、接続時に Server Members 特権ゲートウェイインテントを要求しなくなります。
DISCORD_MCP_TOOLSETSallツール一覧を小さく保つために公開するツールセットのカンマ区切りリスト。未設定または all ですべてのツールを公開します。
DISCORD_ALLOWED_GUILDSすべてサーバーが操作を許可されるギルド ID のカンマ区切りリスト。設定すると、ギルド ID、チャンネル ID、スレッド ID、Webhook、招待コードのいずれで指定された場合でも、それ以外のギルドを対象とするツール呼び出しは拒否されます。

2.1.1 以降、サーバーは GuildMessages インテントを一切要求しなくなりました。ここではメッセージイベントを購読しておらず、このサーバーが返すすべてのメッセージは REST 経由で取得されるため、接続インテントによる制御は受けません。このインテントは、discord.js があらゆるチャンネルを流れるすべてのメッセージをその投稿者とともにキャッシュする原因となっており、長時間稼働するサーバーでは無制限に増大していました。現在はキャッシュスイーパーが残存分を制限しています。したがって DISCORD_MESSAGE_CONTENT は、接続時に Message Content インテントを要求するかどうかにのみ影響し、いずれかのツールが返す内容を変えるものではありません。

これらのフラグは、サーバーが識別時に要求するゲートウェイインテントを制御するだけです。Developer Portal で有効化されていない特権インテントを要求すると、最初のツール呼び出しで接続が失敗します (クローズコード 4014)。そのまま接続するにはフラグを false に設定してください。

データアクセスはこれらのフラグではなく、ポータルのトグルによって制御されます。このサーバーは REST API 経由ですべてを読み取っており、Discord はポータル設定のみでこれを制御します。したがって、ポータルのトグルがオンの状態でこれらのフラグを false に設定しても、失われるものはありません。ポータルのトグルがオフの場合、対応するデータはフラグに関係なく制限されます。メッセージ本文は空で返り (content、embeds、attachments。ただしボット自身のメッセージ、DM、およびボットに言及したメッセージを除く)、メンバー一覧の取得も失敗します。ポータルでトグルを有効にすると復元されます。

ツールセット (DISCORD_MCP_TOOLSETS): discovery、messages、channels、permissions、members、roles、moderation、screening、stats、forums、webhooks、scheduled_events、invites、dm。例: DISCORD_MCP_TOOLSETS=discovery,messages,members は discovery、message、member のツールのみを公開します。注意: ツールセットはそのモジュール全体を同梱し、破壊的なツールも含まれます (messages には一括削除が含まれ、members には kick/ban が含まれます)。これらを制限するには DISCORD_ALLOWED_GUILDS とドライランのデフォルト値を使用してください。公開および呼び出し可能なのは、リストされたツールセットのツールのみです。不明な名前を指定すると、すべてを暗黙的に公開するのではなく、サーバーは起動時に失敗します (空の値は未設定として扱われ、すべてを公開します)。


Discord ボットの作成

  1. discord.com/developers/applications にアクセスします

  2. New Application > 名前を入力します

  3. Bot タブ > Reset Token > トークンをコピーします

  4. Privileged Gateway Intents を有効にします(このサーバーはデフォルトで両方を要求しますが、新しい Discord アプリではポータルのトグルが OFF になっています):

    • Server Members Intent
    • Message Content Intent

    重要: ボットがここで有効になっていない特権インテントを要求すると、Discord はコード 4014 で接続を閉じ、すべてのツール呼び出しが失敗します。両方を有効にするか、不要なものの要求を上記の環境変数で停止してください。

  5. OAuth2 > URL Generator:

    • Scopes: bot
    • Permissions: Send Messages、Read Message History、Manage Channels、Manage Roles、Kick Members、Ban Members、Moderate Members、View Audit Log、Manage Messages、Manage Threads、Add Reactions、Manage Guild、Manage Webhooks、Manage Events、Create Events、Create Instant Invite、Manage Nicknames、Pin Messages、Embed Links、Create Public Threads、Send Messages in Threads
  6. 生成された URL をコピーして、ボットをサーバーに招待します


利用可能なツール (99)

検出とナビゲーション (4 ツール)
ツール説明
discord_list_guildsボットが接続しているすべてのサーバーを一覧表示します
discord_get_guild_infoギルドの詳細情報(名前、メンバー、チャンネル、ロール、ブースト)を取得します
discord_list_channelsギルド内のすべてのチャンネルをカテゴリ別にグループ化して一覧表示します
discord_find_channel_by_name名前でチャンネルを検索します(部分一致)
メッセージ(20 ツール)
ツール説明
discord_read_messagesメッセージを読み取り、履歴を遡ってページングする
discord_send_messageプレーンテキストのメッセージを送信する
discord_reply_message特定のメッセージに返信する
discord_edit_messageボットが送信したメッセージを編集する
discord_delete_message特定のメッセージを削除する
discord_add_reactionメッセージにリアクション絵文字を追加する
discord_remove_reactionsリアクションを削除する(すべて、絵文字単位、またはユーザー単位)
discord_get_reactions特定の絵文字でリアクションしたユーザーを一覧表示する
discord_create_threadメッセージから、または単独でスレッドを作成する
discord_bulk_delete_messages複数のメッセージを一度に削除する(2〜100)
discord_send_embedすべてのオプションを備えたリッチ埋め込みを送信する
discord_edit_embedボットが以前に送信した埋め込みを編集する
discord_send_multiple_embeds1 つのメッセージで最大 10 個の埋め込みを送信する
discord_pin_messageメッセージをピン留めまたはピン解除する
discord_get_message_attachmentsメッセージの添付ファイルをダウンロード URL とともに一覧表示する
discord_fetch_pinned_messagesチャンネル内のすべてのピン留めメッセージを一覧表示する
discord_search_messagesキーワードでメッセージを検索する(直近 100 件)
discord_search_guild_messagesDiscord の検索インデックスを使用してすべてのチャンネルを横断検索する
discord_crosspost_messageアナウンスチャンネルのフォロワーにメッセージを公開する
discord_forward_messageメッセージを別のチャンネルに転送する
チャンネル(8 ツール)
ツール説明
discord_create_channelテキストチャンネル、ボイスチャンネル、またはカテゴリを作成する
discord_delete_channelチャンネルを削除する
discord_edit_channel名前、トピック、スローモード、NSFW フラグを編集する
discord_move_channelチャンネルをカテゴリへ移動、またはカテゴリから移動する
discord_clone_channelチャンネルを権限ごと複製する
discord_set_channel_positionカテゴリ内の表示位置を設定する
discord_follow_announcement_channelアナウンスチャンネルをフォローする
discord_lock_channel_permissions権限を親カテゴリと同期する
チャンネル権限(6 ツール)
ツール説明
discord_get_channel_permissionsチャンネル上のすべての権限上書きを一覧表示する
discord_set_role_permissionチャンネル上のロールに対する権限を許可/拒否する
discord_set_member_permissionチャンネル上のメンバーに対する権限を許可/拒否する
discord_reset_channel_permissionsすべての上書きを削除する(継承にリセット)
discord_copy_permissionsあるチャンネルから別のチャンネルへ上書きをコピーする
discord_audit_permissionsすべてのチャンネルの完全な権限監査
メンバー (11 ツール)
ツール説明
discord_list_membersギルドメンバーをロールとともに一覧表示します
discord_get_member_infoメンバーの詳細情報 (ロール、権限、参加日)
discord_search_membersユーザー名またはニックネームでメンバーを検索します
discord_set_nicknameメンバーのニックネームを設定またはクリアします
discord_kick_memberメンバーをキックします
discord_ban_memberメンバーを BAN します (オプションで最近のメッセージを削除)
discord_unban_memberユーザーの BAN を解除します
discord_bulk_ban複数のユーザーを一度に BAN します (荒らし対策)
discord_list_bansBAN されたすべてのユーザーを一覧表示します
discord_timeout_memberメンバーをタイムアウトします (0 で解除)
discord_prune_members非アクティブなメンバーを削除します (ドライラン付き)
ロール (9 ツール)
ツール説明
discord_list_rolesすべてのロールを権限とメンバー数とともに一覧表示します
discord_create_role新しいロールを作成します
discord_edit_roleロールを編集します (名前、色、権限、hoist、メンション可否)
discord_delete_roleロールを削除します
discord_add_roleメンバーにロールを割り当てます
discord_remove_roleメンバーからロールを削除します
discord_get_role_members特定のロールを持つすべてのメンバーを一覧表示します
discord_set_role_position階層内でのロールの位置を変更します
discord_set_role_iconロールにカスタムアイコンまたは Unicode 絵文字を設定します
フォーラム (10 ツール)
ツール説明
discord_get_forum_channelsギルド内のすべてのフォーラムチャンネルを一覧表示します
discord_create_forum_channel新しいフォーラムチャンネルを作成します
discord_create_forum_postフォーラムに投稿/スレッドを作成します
discord_get_forum_post投稿の詳細とメッセージを取得します
discord_list_forum_threadsスレッドを一覧表示します (アクティブ + アーカイブ済み)
discord_reply_to_forumフォーラムの投稿に返信します
discord_delete_forum_postフォーラムのスレッドを削除します
discord_get_forum_tags利用可能なタグを取得します
discord_set_forum_tagsフォーラムのタグを設定/更新します
discord_update_forum_postタイトル、アーカイブ、ロック、タグを更新します
Webhook (8 ツール)
ツール説明
discord_create_webhookチャンネルに Webhook を作成します
discord_send_webhook_messageWebhook 経由で送信します (カスタムユーザー名/アバター、埋め込み)
discord_edit_webhookWebhook の名前、アバター、またはチャンネルを編集します
discord_delete_webhookWebhook を削除します
discord_list_webhooksチャンネルまたはギルドの Webhook を一覧表示します
discord_edit_webhook_messageWebhook によって送信されたメッセージを編集します
discord_delete_webhook_messageWebhook によって送信されたメッセージを削除します
discord_fetch_webhook_message特定の Webhook メッセージを取得します
スケジュール済みイベント (7 ツール)
ツール説明
discord_list_scheduled_eventsギルド内のすべてのスケジュール済みイベントを一覧表示します
discord_get_scheduled_eventスケジュール済みイベントの詳細情報を取得します
discord_create_scheduled_eventボイス、ステージ、または外部イベントを作成します
discord_edit_scheduled_event既存のスケジュール済みイベントを編集します
discord_delete_scheduled_eventスケジュール済みイベントを削除します
discord_get_event_subscribers「興味あり」を設定したユーザーを取得します
discord_create_event_inviteイベントにリンクされた招待を作成します
ダイレクトメッセージ (7 ツール)
ツール説明
discord_send_dmユーザー ID を指定してユーザーにダイレクトメッセージを送信します
discord_send_dm_embedユーザーへの DM に埋め込みを送信します
discord_read_dmsDM 会話のメッセージ履歴を読み取ります
discord_reply_dm特定の DM メッセージに返信します
discord_edit_dm以前に送信した DM (テキスト) を編集します
discord_edit_dm_embed以前に送信した DM の埋め込みを編集します
discord_delete_dmDM メッセージを削除します
招待 (5 ツール)
ツール説明
discord_list_invitesギルド内のすべての有効な招待を一覧表示します
discord_list_channel_invites特定のチャンネルの招待を一覧表示します
discord_get_inviteコードで招待の詳細を取得します
discord_create_inviteチャンネルの招待リンクを作成します
discord_delete_invite招待を取り消します
モデレーションとスクリーニング (3 ツール)
ツール説明
discord_get_audit_logギルドの監査ログを取得します
discord_get_membership_screeningメンバーシップスクリーニングフォームを取得します
discord_update_membership_screening新規メンバーのスクリーニングルールを更新します
統計 (1 ツール)
ツール説明
discord_get_server_statsサーバー統計: メンバー、チャンネル、ロール、ブーストレベル

使用例

"List all servers the bot is in"
"Read the last 10 messages in #general"
"Send 'Hello everyone!' to the announcements channel"
"Create a forum channel called 'feedback' with tags Bug, Feature, Question"
"Show the full permission audit for the server"
"Create a webhook on #notifications and send a test message"
"Ban user 112233445566778899 and delete their messages from the last 3 days"
"Create an event called 'Game Night' for next Friday at 8pm"
"List all upcoming events in the server"
"Create a permanent invite for #general"
"List all active invites and delete expired ones"
"Send a DM to user 112233445566778899 saying 'Your build passed!'"
"Search for members named 'john'"
"List all banned users in the server"
"Show all pinned messages in #general"
"Forward that message to #announcements"

Discord ID の確認方法

Discord で 開発者モード を有効にします: Settings > Advanced > Developer Mode

次に、サーバー、チャンネル、またはユーザーを 右クリック > ID をコピー します。


プロジェクト構造

discord-mcp/
├── src/
│   ├── index.ts             ← Entry point (MCP server + transport)
│   ├── client.ts            ← Discord client + shared helpers
│   ├── constants.ts         ← Shared constants (limits, defaults)
│   ├── embeds.ts            ← Shared embed schema + builder
│   └── tools/
│       ├── index.ts         ← Tool registry (toolset gating, dispatch)
│       ├── define.ts        ← defineTool/defineModule + shared zod fields
│       ├── types.ts         ← Shared TypeScript interfaces
│       ├── discovery.ts     ← Guild/channel discovery
│       ├── messages.ts      ← Message CRUD, reactions, threads, embeds
│       ├── channels.ts      ← Channel management
│       ├── permissions.ts   ← Permission overwrites
│       ├── members.ts       ← Member management
│       ├── roles.ts         ← Role CRUD and assignment
│       ├── moderation.ts    ← Audit log
│       ├── screening.ts     ← Membership screening
│       ├── stats.ts         ← Server statistics
│       ├── forums.ts        ← Forum channels, posts, tags
│       ├── webhooks.ts      ← Webhook management
│       ├── scheduledEvents.ts ← Scheduled events
│       ├── invites.ts        ← Invite management
│       └── dm.ts             ← Direct messages
├── test/                     ← node:test suite (schemas, gating, allow-list)
├── scripts/                  ← sync-version.js (npm version hook)
├── .github/workflows/        ← CI/CD (build check + auto release)
├── Dockerfile
├── .dockerignore
├── .env.example
├── package.json
├── tsconfig.json
├── CHANGELOG.md
├── CONTRIBUTING.md
├── SECURITY.md
└── README.md
新しいツールの追加
  1. src/tools/ に新しいファイルを作成します(例: events.ts)
  2. 各ツールを defineTool({ name, description, annotations, schema, handle }) で宣言し、defineModule([...]) をデフォルトとしてエクスポートします
  3. それをインポートし、src/tools/index.ts 内の allToolsets に追加します(キーはその DISCORD_MCP_TOOLSETS 名です)

セキュリティ

  • Discord トークンを絶対に Git にコミットしないでください
  • 環境変数または .env ファイル(バージョン管理対象外)を使用してください
  • ボットには必要な権限のみを付与してください
  • DISCORD_ALLOWED_GUILDS でサーバーを特定のサーバーに制限してください
  • 取り消し不可能な一括操作(bulk_ban、prune_members、bulk_delete_messages、delete_channel)はデフォルトで dry_run プレビューになります。適用するには dry_run:false を渡してください

コントリビューション

コントリビューションを歓迎します!

  1. リポジトリをフォークします
  2. フィーチャーブランチを作成します(git checkout -b feature/my-feature)
  3. モジュール構造に従ってください。新しいツールの追加を参照してください
  4. 変更をコミットし、プルリクエストを作成します

ライセンス

MIT、詳細は LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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