MCP-Discord
MCP-Discord
AIアシスタントがDiscordプラットフォームと対話できるようにするDiscord MCP (Model Context Protocol) サーバーです。
概要
MCP-Discordは、以下のDiscord関連機能を提供します:
Discordボットへのログイン
ボットが参加しているサーバーの一覧表示
サーバー情報の取得
メンバーの一覧表示と詳細情報の確認
ロールの作成、編集、削除、割り当て、解除
サーバー内のメッセージ検索
チャンネルメッセージの読み取り、編集、削除
指定したチャンネルへのメッセージ送信
フォーラムチャンネル一覧の取得
フォーラム投稿の作成、更新、削除、返信
フォーラムスレッドの一覧表示とタグ管理
テキスト、フォーラム、ボイスチャンネルおよびカテゴリーの作成、編集、削除
チャンネルの権限オーバーライドの設定と削除
メッセージへのリアクション追加/削除
Webhookの作成/編集/削除/利用
Related MCP server: MCP-Discord
目次
前提条件
Node.js (v18.0.0以上)
npm (v7.0.0以上)
適切な権限を持つDiscordボット
ボットトークン (Discord Developer Portalから取得可能)
Message Content Intentを有効化
Server Members Intentを有効化
Presence Intentを有効化
Discordサーバーで必要な権限:
最も簡単なセットアップ
管理者 (迅速なセットアップと全機能の利用に推奨)
または、必要な権限のみを選択:
メッセージを送信
パブリックスレッドを作成
スレッドでメッセージを送信
メッセージを管理
スレッドを管理
チャンネルを管理
Webhookを管理
ロールを管理
リアクションを追加
チャンネルを表示
Discordボットをサーバーに追加
Discordボットをサーバーに追加するには、以下の招待リンクのいずれかを使用してください(
INSERT_CLIENT_ID_HEREをボットのクライアントIDに置き換えてください):
注: 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つのトランスポート方式をサポートしています。
トランスポート方式
stdio (デフォルト)
基本的な使用のための従来のstdioトランスポート
シンプルな統合に適しています
ストリーミング可能なHTTP
より高度なシナリオのためのHTTPベースのトランスポート
ステートレスな操作をサポート
ポート番号の設定が可能
設定オプション
設定は以下の2つの方法で提供できます:
環境変数:
DISCORD_TOKEN=your_discord_bot_tokenコマンドライン引数:
# 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 3000Windows PowerShellの場合:
$env:DISCORD_TOKEN="your_discord_bot_token"
node build/app.js --transport http --port 3000Dockerで実行
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/mcp3. ホストされている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ライセンス
Available Tools
46 toolsdiscord_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
Scored across 46 tools
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.
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.
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.
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
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
An MCP server that integrates with Discord to provide AI-powered features.
Discord MCP server for ChatGPT, Claude and any AI agent: list servers and channels, read channel messages, search messages, send message, reply to message, send DM, read mentions and assign role in your own Discord account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Discord yourself; Cotlet does not store your password and you need no Discord API key. About the official Discord API: Yes, Discord has an official API for bots and OAuth2 apps, but it acts as a bot that a server manager adds, not as you, and Discord has no official MCP server for it (checked 5 Nov 2026). The MCP server on Discord's docs site only searches documentation. Setup and FAQ: https://cotlet.dev/integrations/discord-api-mcp-server
Official Duck Framework MCP server for AI-assisted development and project scaffolding.
Related MCP Servers
- AlicenseBqualityDmaintenanceA 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.21827 npm1MIT
- AlicenseBqualityDmaintenanceA 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.2284 npm5MIT
- AlicenseNot gradedqualityDmaintenanceA Discord bot server based on Model Context Protocol (MCP), enabling AI models to interact with Discord through the MCP protocol.2MIT
- AlicenseBqualityDmaintenanceA 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.22827 npmMIT