Skip to main content
Glama
fma-rc

discord-mcp

by fma-rc

discord-mcp

Discordのデスクトップクライアントを起動したまま、そのクライアントを通じてDiscordを読み取り、操作できます。チャンネルメッセージ、ダイレクトメッセージ、グループチャット、スレッド、フォーラム投稿、検索。

仕組み

DiscordのデスクトップアプリはElectron製です。--remote-debugging-port を付けて起動すると、そのレンダラーにはChrome DevTools Protocol経由で到達できます。discord-mcpはそのレンダラーに接続し、クライアントが自身のAPI呼び出しで既に送信しているヘッダー群を観察し、同じページの内部からリクエストを発行します。

したがって、すべてのリクエストは実際のクライアントプロセスから、実際のセッションで、実際のフィンガープリントとともに送信されます。検出される2番目のクライアントは存在せず、トークンがDiscordのストレージから読み出されることもありません。トークンは、クライアントが既に送信しているリクエスト上でのみ観察されるのです。

Related MCP server: Discord MCP Bridge

使用前に読んでください

これはDiscordの利用規約に違反します。 セッションの入手方法に関係なく、ユーザーアカウントの自動化は禁止されており、第11条はクライアントの改変を別途禁止しています。

実際のリスクは、VencordのようなクライアントMODと同じ範疇にあります。Discordはこれらを公に優先度を下げており、2026年現在、確認されたBANはありません。これは非執行のパターンであり、約束ではありません。リスクは読み取りではなく書き込みに集中しています。

ボットトークンであれば完全に準拠しますが、ボットがあなたのダイレクトメッセージを読むことは決してできません。その制限こそが、このプロジェクトが存在するすべての理由です。

セットアップ

npm install
npm run build

Discordは単一インスタンスのロックを保持しているため、デバッグフラグは起動時のみ有効になります。先に実行中のクライアントを終了してください。

node dist/cli/main.js launch      # starts Discord on a random loopback port
node dist/cli/main.js doctor      # verifies attach, capture and a real read

doctor は、あなたのアカウント、ギルド数、ダイレクトメッセージ数を表示するはずです。

最初の接続ではレンダラーが一度だけリロードされます。アイドル状態のクライアントは、ヘッダーを観察するためのRESTリクエストを行わないためです。その後、キャプチャはポートごとに12時間、~/.local/state/discord-mcp/headers.json に記憶されるため、以降の実行は約1秒で接続され、クライアントには触れません。

MCPクライアントへの接続

{
  "mcpServers": {
    "discord": {
      "command": "node",
      "args": ["/path/to/discord-mcp/dist/cli/main.js", "serve"]
    }
  }
}

ツール

デフォルトで18のツールが公開されます。読み取り12、書き込み6です。

ツール

種類

目的

guild_list

読み取り

このアカウントが所属するギルド

guild_channels

読み取り

1つのギルドのチャンネル

guild_roles

読み取り

ギルドで定義されているロール

channel_get

読み取り

チャンネルまたはスレッドの説明

channel_history

読み取り

メッセージの1ページ。双方向にページング可能

channel_pins

読み取り

固定されたメッセージ

message_get

読み取り

IDによる1件のメッセージ

dm_list

読み取り

ダイレクトおよびグループ会話

thread_list

読み取り

チャンネルのオープンスレッド。フォーラム投稿はこれで読み取る

thread_archived

読み取り

アーカイブされたスレッド。静かなフォーラム投稿はここにたどり着く

search_guild

読み取り

1つのギルドを検索

search_channel

読み取り

1つのチャンネルまたは会話を検索

message_send

書き込み

メッセージまたは返信を送信

message_edit

書き込み

このアカウントが送信したメッセージを編集

message_react

書き込み

リアクションを追加

message_ack

書き込み

メッセージまでチャンネルを既読にする

thread_create

書き込み

スレッドを開始。既存のメッセージからも可能

forum_post

書き込み

フォーラム投稿を最初のメッセージ付きで作成

フォーラムの読み取りは、フォーラムチャンネルのスレッドを一覧表示することで機能します。各投稿には、それを開始したメッセージと適用されたタグが付いて返されるため、追加の呼び出しなしで投稿を読むことができます。

破壊的ツール

さらに7つの操作が存在しますが、それらのカテゴリが有効化されない限り、一切登録されません。ツール一覧には表示されないため、どのホストもモデルも到達できません。

ツール

カテゴリ

message_delete

messages

thread_delete

threads

channel_delete

channels

guild_leave

guilds

member_kick, member_ban

members

member_roles

roles

必要なものだけ有効にしてください:

{ "destructive": ["messages", "threads"] }
node dist/cli/main.js serve --config /path/to/policy.json

これが要となる制御です。ホストの承認プロンプトは第二の層です。ホストの挙動はさまざまで、自動的に承認するホストもあるためです。各破壊的ツールは、作用した対象を解決して返すため、結果はスノーフレークを単に返すのではなく、チャンネル名を示します。

セキュリティ

DevToolsポートを開いたままにすることは、ローカルでの認証バイパスになります。あなたとして実行されている任意のプロセスが、二要素認証も含めて、セッションを操作できるからです。discord-mcpはループバックのみにバインドし、デフォルトの9222ではなくランダムな高番号ポートを使用します。使用していない間は、ポートを開いたままクライアントを実行したままにしないでください。

ヘッダーキャッシュには有効なトークンが保持されます。 キャプチャを再利用するということは、それを保持するということです。そのため、~/.local/state/discord-mcp/headers.json には、期限が切れるまであなたの Authorization ヘッダーが含まれます。これは所有者のみ、モード 0600 で書き込まれ、その隣にある起動状態も同様です。新しいキャプチャを強制するにはファイルを削除してください:

rm ~/.local/state/discord-mcp/headers.json

毎回キャプチャしてトークンを一切保存しないほうを選ぶなら、キャッシュパスなしで実行してください。代償として、接続のたびにレンダラーのリロードが発生します。

レイアウト

src/attach/     CDP connection, target selection, launch, state
src/bridge/     header capture, request execution, rate limiting
src/api/        typed wrappers over Discord REST v9
src/normalize/  reduce Discord's wire format to what a reader needs
src/policy/     operation tiers and the destructive gate
src/tools/      MCP tool registration
src/cli/        launch, doctor, serve

依存関係は下方向にのみ発生します。normalize/ と policy/ は純粋で、何にも依存しません。テストスイートの大部分はここにあります。

npm test         # 152 tests, no Discord required
npm run typecheck

ブリッジを形作ったSpike 0の調査結果を含む設計ドキュメントは、docs/superpowers/specs/ にあります。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Discord using personal user tokens instead of bot applications, allowing for seamless message management and server exploration. It provides tools for reading history, sending messages, and searching across channels and DMs directly through MCP-compatible clients.
    10
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables local AI agents to securely search and read Discord messages and channels visible to the current client, without requiring a bot or user token.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to read and control a local Discord desktop client, including viewing channels and messages, managing voice calls and volumes, and setting Rich Presence.
    9
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to control a logged-in Discord account through 70+ tools: browsing guilds and channels, sending and reacting to messages, moderating members, managing channels, roles, emojis, and webhooks, plus searching and analyzing captured message history stored in SQLite. Authenticates using tokens already cached by the local Discord client, requiring no bot account or manual token setup.
    154 npm
    MIT