Discord MCP
Discord MCP
Discord をツールとして公開するリモート MCP サーバー(Streamable HTTP)。Claude → 設定 → コネクタ → Add custom connector(https://claude.ai/ask-your-org/setup、Custom オプション)から接続することを想定しています。
公開するもの
discord.py を使用した Discord API のツール:
list_guilds— ボットがアクセスできるサーバー。list_channels(guild_id)— サーバーのチャンネル。list_members(guild_id, limit)— サーバーのメンバー。list_roles(guild_id)— サーバーのロール。send_message(channel_id, content)— メッセージを送信。read_messages(channel_id, limit, before_message_id)— 履歴を読む。create_thread(channel_id, name, message_id?, auto_archive_minutes)— スレッドを作成。add_reaction(channel_id, message_id, emoji)/remove_reaction(...)— リアクション。add_role_to_member(guild_id, user_id, role_id)/remove_role_from_member(...)— ロール。
すべての ID(サーバー、チャンネル、メッセージ、ユーザー、ロール)は Discord のスノーフレークで、文字列として扱われます。
Related MCP server: Discord MCP Server
1. Discord ボットを作成する
Discord Developer Portal にアクセスし、New Application を作成します。
Bot セクションでボットを作成し、Token(Reset Token ボタン)をコピーします。これが
DISCORD_BOT_TOKENの値です。同じ Bot → Privileged Gateway Intents セクションで、以下を有効にします:
Server Members Intent(
list_membersとロール管理に必要)。Message Content Intent(
read_messagesでメッセージの内容を読むために必要)。
OAuth2 → URL Generator で:
Scopes:
bot。Bot Permissions(使用するものに応じて調整):
View Channels、Send Messages、Read Message History、Create Public Threads、Add Reactions、Manage Roles。生成された URL を開き、使用するサーバーにボットを招待します。
add_role_to_member/remove_role_from_memberを使用する場合は、ボットのロールが割り当てたいロールより上位にある(階層が高い)ことを確認してください。
2. 環境変数を設定する
.env.example を .env にコピーして、以下を入力します:
cp .env.example .envDISCORD_BOT_TOKEN: 前の手順のトークン。MCP_AUTH_TOKEN: サーバーを保護するための独自のシークレット(python -c "import secrets; print(secrets.token_urlsafe(32))"で生成)。Claude.ai は各リクエストでAuthorization: Bearer <token>ヘッダーとして送信します(手順 4 を参照)。残りの変数には妥当なデフォルト値があります —
.env.exampleのコメントを参照してください。
3. サーバーを実行する
ローカル(Docker なし)
python -m venv .venv && source .venv/bin/activate
pip install -e .
python -m discord_mcp # o: discord-mcpデフォルトでは http://0.0.0.0:8000/mcp で待ち受けます。
Docker を使用する場合
docker compose up --buildまたは手動で:
docker build -t discord-mcp .
docker run --env-file .env -p 8000:8000 discord-mcpデプロイ(Render / Railway / Fly.io / 任意の VPS)
このイメージは独自の永続状態を持たない汎用 HTTP コンテナです(ボットの状態はメモリと Discord にあります)。そのため、Docker をサポートする任意のプロバイダーで動作します:
プロバイダーのパネルで手順 2 の環境変数を設定します。
ポート
8000(またはPORTで定義したポート)を HTTPS で公開します — Claude.ai は MCP サーバーがhttps://でアクセス可能であることを要求します。デプロイ後、コネクタの URL は
https://<tu-dominio>/mcpになります。
本番環境での DNS リバインディング対策を強化するには、ALLOWED_HOSTS(サーバーの公開ホスト名)と ALLOWED_ORIGINS(例:https://claude.ai)を設定します。
4. claude.ai でカスタムコネクタとして接続する
https://claude.ai/ask-your-org/setup(または 設定 → コネクタ)にアクセスし、Add custom connector / Custom を選択します。Name:
Discord(または任意の名前)。URL:
https://<tu-dominio>/mcp。Request headers / Advanced settings で、以下を追加します:
Header:
Authorization値:
Bearer <MCP_AUTH_TOKEN に設定した値>
保存して、Claude に "利用可能な Discord サーバーをリストアップして" のような依頼をしてテストします —
list_guildsが呼び出されるはずです。
認証を使用しない場合(クイックテストのみ、本番では禁止)、MCP_AUTH_TOKEN を空にしてヘッダーを省略します。
開発
pip install -e ".[dev]"
pytestテストは設定、認証ミドルウェア、および実際の Discord 接続を必要としない DiscordService のロジックをカバーしています(実際の Discord API に対する統合テストはありません)。
アーキテクチャのメモ
discord.pyのボットは、ASGI サーバー(Starlette/uvicorn)と同じイベントループ内でバックグラウンドタスクとして実行されます。アプリのライフスパンとともに起動・停止します(src/discord_mcp/server.py)。MCP サーバーは Streamable HTTP トランスポート(公式 SDK
mcpのmcp.server.MCPServer)を使用します。これは Claude のカスタムコネクタがサポートするリモートトランスポートです。認証は、独自の ASGI ミドルウェア(
auth_middleware.py)で検証される静的ベアラートークンです。カスタムコネクタの「Request headers」メカニズムを想定しており、完全な OAuth フローは実装していません。
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server that integrates with Discord to provide AI-powered features.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
MCP server for AI dialogue using various LLM models via AceDataCloud
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server for Discord that enables AI assistants to interact with Discord servers, channels, and messages via the Discord API.63 npmMIT
- AlicenseNot gradedqualityDmaintenanceA Dockerized MCP server that enables Discord integration, offering tools for role management, messaging, moderation, and server administration via natural language.1MIT
- AlicenseAqualityDmaintenanceAn MCP server that enables LLMs to control Discord servers via a bot token, providing comprehensive management tools for messages, members, roles, channels, permissions, and more.6756 npmMIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to manage Discord servers, including roles, channels, members, messages, and moderation, via natural language commands.1MIT