Discord MCP
Discord MCP
远程 MCP 服务器(Streamable HTTP),将 Discord 暴露为工具,
用于从 Claude → 设置 → 连接器 → 添加自定义连接器 连接(https://claude.ai/ask-your-org/setup,自定义 选项)。
提供的功能
基于 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 的 snowflake,以字符串形式表示。
Related MCP server: Discord MCP Server
1. 创建 Discord 机器人
进入 Discord 开发者门户,创建一个 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 步的环境变量。
通过 HTTPS 暴露端口
8000(或你在PORT中定义的端口)——Claude 要求 MCP 服务器可通过https://访问。部署后,连接器的 URL 将是
https://<你的域名>/mcp。
为在生产环境中加强 DNS rebinding 保护,请设置 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://<你的域名>/mcp。在 Request headers / 高级设置 中添加:
Header:
AuthorizationValue:
Bearer <与 MCP_AUTH_TOKEN 相同的值>
保存并测试,例如向 Claude 提出 "列出可用的 Discord 服务器" ——它应该调用
list_guilds。
如果您不想使用认证(仅用于快速测试,切勿用于生产),请将 MCP_AUTH_TOKEN 留空并省略该 header。
开发
pip install -e ".[dev]"
pytest测试覆盖配置、认证中间件以及不需要真实 Discord 连接的 discord.py 逻辑(不针对真实 Discord API 进行集成测试)。
架构说明
discord.py机器人作为后台任务运行在与 ASGI 服务器(Starlette/uvicorn)相同的事件循环中;它随应用的生命周期(src/discord_mcp/server.py)一起启动和关闭。MCP 服务器使用 Streamable HTTP 传输(来自官方
mcpSDK 的mcp.server.MCPServer),这是 Claude 自定义连接器支持的远程传输方式。认证是静态 bearer token,由自定义 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.610 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.6784 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