Skip to main content
Glama

MCP-Discord

Docker Hub

AIアシスタントがDiscordプラットフォームと対話できるようにするDiscord MCP (Model Context Protocol) サーバーです。

概要

MCP-Discordは、以下のDiscord関連機能を提供します:

  • Discordボットへのログイン

  • ボットが参加しているサーバーの一覧表示

  • サーバー情報の取得

  • メンバーの一覧表示と詳細情報の確認

  • ロールの作成、編集、削除、割り当て、解除

  • サーバー内のメッセージ検索

  • チャンネルメッセージの読み取り、編集、削除

  • 指定したチャンネルへのメッセージ送信

  • フォーラムチャンネル一覧の取得

  • フォーラム投稿の作成、更新、削除、返信

  • フォーラムスレッドの一覧表示とタグ管理

  • テキスト、フォーラム、ボイスチャンネルおよびカテゴリーの作成、編集、削除

  • チャンネルの権限オーバーライドの設定と削除

  • メッセージへのリアクション追加/削除

  • Webhookの作成/編集/削除/利用

Related MCP server: MCP-Discord

目次

前提条件

注: Discordのセキュリティモデルに従い、ボットは明示的に追加されたサーバーの情報にのみアクセスできます。 このMCPサーバーを使用して特定のDiscordサーバーにアクセスしたい場合は、まずそのサーバーにボットを追加する必要があります。 以下の招待リンクを使用して、ターゲットサーバーにボットを追加してください。

インストール

NPM経由でのインストール

以下のコマンドで使用できます:

npx mcp-discord --config ${DISCORD_TOKEN}

詳細については、NPMパッケージを確認してください。

Smithery経由でのインストール

Smithery経由でmcp-discordを自動的にインストールするには:

Docker経由でのインストール

Dockerを使用してmcp-discordを実行できます。Dockerイメージは自動的にビルドされ、Docker Hubに公開されます。

Docker Hubリポジトリ: barryy625/mcp-discord

Dockerはデフォルトで build/app.js を介してストリーミング可能なHTTPサーバーを使用します。

# Pull the latest image
docker pull barryy625/mcp-discord:latest

# Run HTTP server on port 8080
docker run -e DISCORD_TOKEN=your_discord_bot_token -p 8080:8080 barryy625/mcp-discord:latest

# Override the listening port if needed
docker run -e DISCORD_TOKEN=your_discord_bot_token -p 3000:3000 barryy625/mcp-discord:latest --transport http --port 3000

利用可能なタグ:

  • latest - メインブランチからの最新の安定版

  • v1.3.8 など - 特定のバージョンリリース

手動インストール

# Clone the repository
git clone https://github.com/barryyip0625/mcp-discord.git
cd mcp-discord

# Install dependencies
npm install

# Compile TypeScript
npm run build

設定

適切に動作させるにはDiscordボットトークンが必要です。サーバーはstdioとストリーミング可能なHTTPの2つのトランスポート方式をサポートしています。

トランスポート方式

  1. stdio (デフォルト)

    • 基本的な使用のための従来のstdioトランスポート

    • シンプルな統合に適しています

  2. ストリーミング可能なHTTP

    • より高度なシナリオのためのHTTPベースのトランスポート

    • ステートレスな操作をサポート

    • ポート番号の設定が可能

設定オプション

設定は以下の2つの方法で提供できます:

  1. 環境変数:

DISCORD_TOKEN=your_discord_bot_token
  1. コマンドライン引数:

# For stdio transport (default)
node build/index.js --config "your_discord_bot_token"

# For streamable HTTP transport
node build/app.js --transport http --port 3000 --config "your_discord_bot_token"

Claude/Cursorでの使用

1. Claude/Cursorでstdioトランスポートを使用する

MCPクライアントがコマンドベースのstdioサーバーを期待している場合は build/index.js を使用してください。

Claude Desktop / Claude Code

{
    "mcpServers": {
        "discord": {
            "command": "node",
            "args": [
                "path/to/mcp-discord/build/index.js"
            ],
            "env": {
                "DISCORD_TOKEN": "your_discord_bot_token"
            }
        }
    }
}

Cursor

{
    "mcpServers": {
        "discord": {
            "command": "node",
            "args": [
                "path/to/mcp-discord/build/index.js"
            ],
            "env": {
                "DISCORD_TOKEN": "your_discord_bot_token"
            }
        }
    }
}

これは、ローカルのコマンドベースのMCPクライアントに推奨されるセットアップです。

2. ストリーミング可能なHTTPサーバーをセルフホストする

mcp-discordをHTTP MCPサーバーとして実行したい場合は build/app.js を使用してください。

Node.jsで実行

DISCORD_TOKEN=your_discord_bot_token node build/app.js --transport http --port 3000

Windows PowerShellの場合:

$env:DISCORD_TOKEN="your_discord_bot_token"
node build/app.js --transport http --port 3000

Dockerで実行

docker run -e DISCORD_TOKEN=your_discord_bot_token -p 3000:3000 barryy625/mcp-discord:latest --transport http --port 3000

起動すると、MCP HTTPエンドポイントは以下のようになります:

http://localhost:3000/mcp

3. ホストされているHTTP MCPサーバーに接続する

mcp-discordを別の場所でホストしている場合は、build/app.js をコマンドとして起動する代わりに、MCPクライアントをサーバーの /mcp エンドポイントに向けてください。

エンドポイントの例:

https://your-server.example.com/mcp

重要な注意点:

  • build/app.js はHTTPサーバーを起動します。stdioとは通信しません。

  • build/index.js は、コマンドベースのstdio MCPクライアントにとって正しいエントリポイントです。

  • ホストされたHTTPを使用する場合は、デプロイメントによって提供されるHTTPエンドポイントURLに接続するようにMCPクライアントを設定してください。

  • 正確なHTTPクライアント設定形式は、使用するMCPクライアントによって異なります。

ツールドキュメント

基本機能

  • discord_login: 設定されたトークンを使用してDiscordにログイン

  • discord_list_servers: ボットが参加しているすべてのDiscordサーバーを一覧表示

  • discord_send: 指定したチャンネルにメッセージを送信

  • discord_get_server_info: Discordサーバー情報を取得

チャンネル管理

  • discord_create_text_channel: テキストチャンネルを作成

  • discord_create_forum_channel: フォーラムチャンネルを作成

  • discord_create_voice_channel: ボイスチャンネルを作成

  • discord_edit_channel: チャンネル名、トピック、親カテゴリー、または位置を編集

  • discord_delete_channel: チャンネルを削除

  • discord_create_category: チャンネルカテゴリーを作成

  • discord_edit_category: チャンネルカテゴリーを編集

  • discord_delete_category: チャンネルカテゴリーを削除

  • discord_set_channel_permissions: チャンネル/カテゴリー上のロールまたはユーザーの権限オーバーライドを設定

  • discord_remove_channel_permissions: チャンネル/カテゴリーから権限オーバーライドを削除

フォーラム機能

  • discord_get_forum_channels: フォーラムチャンネルの一覧を取得

  • discord_create_forum_post: フォーラム投稿を作成

  • discord_get_forum_post: フォーラム投稿を取得

  • discord_list_forum_threads: フォーラムチャンネル内のアクティブおよびアーカイブされたスレッドを一覧表示

  • discord_reply_to_forum: フォーラム投稿に返信

  • discord_get_forum_tags: フォーラムチャンネルで利用可能なすべてのタグを取得

  • discord_set_forum_tags: フォーラムチャンネルで利用可能なタグを置換

  • discord_update_forum_post: フォーラム投稿のタイトル、タグ、アーカイブ状態、またはロック状態を更新

  • discord_delete_forum_post: フォーラム投稿を削除

メッセージとリアクション

  • discord_search_messages: サーバー内のメッセージを検索

  • discord_read_messages: チャンネルメッセージを読み取り (before, after, around パラメータをサポート — スノーフレークIDまたはISO 8601形式の日付 "2025-03-01T00:00:00Z" を受け付けます)

  • discord_edit_message: ボットが作成したメッセージを編集

  • discord_add_reaction: メッセージにリアクションを追加

  • discord_add_multiple_reactions: メッセージに複数のリアクションを追加

  • discord_remove_reaction: メッセージからリアクションを削除

  • discord_delete_message: チャンネルから特定のメッセージを削除

Webhook管理

  • discord_create_webhook: Discordチャンネル用の新しいWebhookを作成

  • discord_send_webhook_message: Webhookを使用してDiscordチャンネルにメッセージを送信

  • discord_edit_webhook: Discordチャンネルの既存のWebhookを編集

  • discord_delete_webhook: Discordチャンネルの既存のWebhookを削除

ロール管理

  • discord_list_roles: サーバー内のすべてのロールを一覧表示

  • discord_create_role: 色、ホイスト、メンション可能、および権限オプションを指定してロールを作成

  • discord_edit_role: 既存のロールを編集

  • discord_delete_role: ロールを削除

  • discord_assign_role: メンバーにロールを割り当て

  • discord_remove_role: メンバーからロールを削除

メンバー管理

  • discord_list_members: ロールを持つサーバー内のメンバーを一覧表示

  • discord_get_member: 特定のメンバーに関する詳細情報を取得

開発

# Development mode
npm run dev

ライセンス

MIT License

Available Tools

46 tools
discord_add_multiple_reactionsB

Adds multiple emoji reactions to a Discord message at once

Inputs: emojis (required), channelId (required), messageId (required).

discord_add_reactionC

Adds an emoji reaction to a specific Discord message

Inputs: emoji (required), channelId (required), messageId (required).

discord_assign_roleC

Assigns a role to a member in a Discord server

Inputs: roleId (required), userId (required), guildId (required), reason.

discord_create_categoryC

Creates a new category in a Discord server.

Inputs: name (required), guildId (required), reason, position.

discord_create_forum_channelA

Creates a new forum channel in a Discord server, optionally under a category

Inputs: name (required), guildId (required), topic, categoryId.

discord_create_forum_postB

Creates a new post in a Discord forum channel with optional tags

Inputs: title (required), content (required), forumChannelId (required), tags, +1 more.

discord_create_roleB

Creates a new role in a Discord server

Inputs: name (required), guildId (required), color, hoist, +3 more.

discord_create_text_channelA

Creates a new text channel in a Discord server with an optional topic and parent category

Inputs: guildId (required), channelName (required), topic, categoryId.

discord_create_voice_channelB

Creates a new voice channel in a Discord server with an optional parent category

Inputs: guildId (required), channelName (required), reason, userLimit, +1 more.

discord_create_webhookC

Creates a new webhook for a Discord channel

Inputs: name (required), channelId (required), avatar, reason.

discord_delete_categoryB

Deletes a Discord category by ID.

Inputs: categoryId (required), reason.

discord_delete_channelB

Deletes a Discord channel with an optional reason

Inputs: channelId (required), reason.

discord_delete_forum_postC

Deletes a forum post or thread with an optional reason

Inputs: threadId (required), reason.

discord_delete_messageB

Deletes a specific message from a Discord text channel

Inputs: channelId (required), messageId (required), reason.

discord_delete_roleA

Deletes a role from a Discord server

Inputs: roleId (required), guildId (required), reason.

discord_delete_webhookC

Deletes an existing webhook for a Discord channel

Inputs: webhookId (required), reason, webhookToken.

discord_edit_categoryB

Edits an existing Discord category (name and position).

Inputs: categoryId (required), name, reason, position.

discord_edit_channelA

Edits a Discord channel's name, topic, parent category, or position

Inputs: channelId (required), name, topic, reason, +2 more.

discord_edit_messageA

Edits a message previously sent by the bot. Only messages authored by the bot can be edited.

Inputs: content (required), channelId (required), messageId (required).

discord_edit_roleB

Edits an existing role in a Discord server

Inputs: roleId (required), guildId (required), name, color, +5 more.

discord_edit_webhookC

Edits an existing webhook for a Discord channel

Inputs: webhookId (required), name, avatar, reason, +2 more.

discord_get_forum_channelsA

Lists all forum channels in a specified Discord server (guild)

Inputs: guildId (required).

discord_get_forum_postB

Retrieves details about a forum post including its messages

Inputs: threadId (required).

discord_get_forum_tagsA

Gets all available tags for a Discord forum channel, including tag IDs, names, and emoji

Inputs: forumChannelId (required).

discord_get_memberB

Gets detailed information about a specific member in a Discord server

Inputs: userId (required), guildId (required).

discord_get_reaction_usersA

Lists the users who reacted with a specific emoji to a Discord message. Uses REST fetch and does not require Gateway intents. Returns up to 100 users per call.

Inputs: emoji (required), channelId (required), messageId (required), limit.

discord_get_server_infoB

Retrieves detailed information about a Discord server including channels and member count

Inputs: guildId (required).

discord_list_forum_threadsA

Lists all threads (posts) in a Discord forum channel, including both active and archived threads

Inputs: forumChannelId (required), limit, includeArchived.

discord_list_membersB

Lists members in a Discord server with their roles

Inputs: guildId (required), after, limit.

discord_list_pinned_messagesA

Lists the pinned messages of a channel, newest pin first.

Inputs: channelId (required), limit.

discord_list_rolesA

Lists all roles in a Discord server with their properties

Inputs: guildId (required).

discord_list_serversA

Lists all Discord servers the bot is a member of

Inputs: no named parameters.

discord_loginB

Logs in to Discord using the configured token

Inputs: token.

discord_pin_messageB

Pins a message to its channel. A channel can hold at most 50 pinned messages.

Inputs: channelId (required), messageId (required), reason.

discord_read_messagesA

Retrieves messages from a Discord text channel. Supports date-based filtering via before/after/around params (accepts snowflake IDs or ISO 8601 dates).

Inputs: channelId (required), after, limit, around, +1 more.

discord_remove_channel_permissionsA

Removes all permission overrides for a role or user on a channel or category

Inputs: roleId (required), channelId (required), reason.

discord_remove_reactionB

Removes a specific emoji reaction from a Discord message

Inputs: emoji (required), channelId (required), messageId (required), userId.

discord_remove_roleA

Removes a role from a member in a Discord server

Inputs: roleId (required), userId (required), guildId (required), reason.

discord_reply_to_forumB

Adds a reply to an existing forum post or thread

Inputs: message (required), threadId (required).

discord_search_messagesC

Searches for messages in a Discord server

Inputs: guildId (required), has, limit, maxId, +10 more.

discord_sendA

Sends a message to a specified Discord text channel. Optionally reply to another message by providing its message ID.

Inputs: message (required), channelId (required), replyToMessageId.

discord_send_webhook_messageB

Sends a message to a Discord channel using a webhook

Inputs: content (required), webhookId (required), webhookToken (required), threadId, +2 more.

discord_set_channel_permissionsA

Sets permission overrides for a role or user on a channel or category

Inputs: roleId (required), channelId (required), deny, allow, +1 more.

discord_set_forum_tagsA

Sets the available tags for a Discord forum channel. Replaces all existing tags.

Inputs: tags (required), forumChannelId (required).

discord_unpin_messageA

Removes a message from its channel's pinned messages.

Inputs: channelId (required), messageId (required), reason.

discord_update_forum_postB

Updates a forum post's title, applied tags, archived status, locked status, or pinned status. Tags can be specified by name or ID.

Inputs: threadId (required), name, tags, locked, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 46 tools

    Disambiguation3/5

    Multiple tools have overlapping purposes, such as 'discord_read_messages' vs 'discord_search_messages' and 'discord_reply_to_forum' vs 'discord_create_forum_post', which could confuse agents. The distinction between 'get', 'list', and 'read' is not always clear.

    Naming Consistency4/5

    All tools follow a consistent 'discord_verb_object' pattern, making the naming predictable. However, there is some verb variation (get, list, read, search) that slightly reduces strict consistency, but overall it is well-structured.

    Tool Count1/5

    With 46 tools, this far exceeds the recommended 3-15 scope for a well-designed MCP server. The high number of tools likely overwhelms agents and increases selection complexity, making it inappropriate for most use cases.

    Completeness2/5

    Despite the large number of tools, there are notable gaps such as missing getters for channels, webhooks, and roles (e.g., 'get_channel', 'list_webhooks'). Core operations like updating a message or deleting a webhook are present, but the surface is uneven and overfocused on creation/deletion.

    Maintenance

    ActivityActive
    ResponsivenessUsually handled

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      A Discord MCP server that enables AI assistants to interact with Discord platforms, providing functionalities like sending messages, managing channels, creating forum posts, and handling webhooks.
      21
      827 npm
      1
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      A Discord Model Context Protocol server that enables AI assistants to interact with Discord by sending messages, managing channels, handling forum posts, managing webhooks, and processing reactions.
      22
      84 npm
      5
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      A Discord MCP server that enables AI assistants to interact with the Discord platform, providing features like message sending, channel management, forum operations, reactions, and webhook management.
      22
      827 npm
      MIT