关于 Discord
discord-mcp 是供 LLM 或 MCP 客户端管理 Discord 的 MCP 服务,提供涵盖消息、审核、频道、角色等功能的 168 种工具。它支持富消息和重启后仍保留的角色菜单,并提供受保护的 URL 获取方式及 stdio 或 HTTP 传输选项。
主要功能
- 01管理消息、频道、角色和帖子串
- 02审核服务器并管理 AutoMod
- 03创建富消息、投票和文件消息
- 04使用重启后仍保留的角色菜单
- 05选择 stdio、HTTP 或 Unix 套接字传输
适用场景
- 01发布回复、嵌入内容、投票或文件
- 02管理频道访问权限和服务器角色
- 03查看审核队列及 AutoMod
- 04提供持久化的角色选择交互
MCP 相关
向 MCP 客户端提供 168 种 Discord 管理工具。支持 stdio 和 HTTP 传输,HTTP 还可监听 Unix 套接字。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @willuhmjs/discord-mcpDISCORD_TOKEN密钥Discord bot token from https://discord.com/developers/applicationsDISCORD_GUILD_IDDefault server (guild) ID used when a tool call omits guildIdENABLE_MEMBERS_INTENTSet to 1 to enable the privileged Server Members intent (needed for member-list tools)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
discord-mcp
一个让大模型运行 Discord 服务的 MCP 服务:提供 168 个工具,涵盖消息、管理、频道、角色、讨论串、活动、邀请、Webhook、AutoMod 等。适用于 Claude、Cursor、VS Code 或任何 MCP 客户端。
- 丰富的消息:嵌入内容、Components V2、投票、文件、回复——在发送到 Discord 之前进行验证,并指出出错的字段。
- 交互功能:重启后仍然有效的角色菜单,以及记录用户点击内容的日志。
- 默认安全:绑定到
127.0.0.1,对 SSRF 防护的 URL 获取,以及绝不回显 Webhook 令牌。
快速开始
- 在开发者门户中创建一个机器人,将其邀请到你的服务,并启用 Message Content 意图(Bot → Privileged Gateway Intents)。
- 将以下内容添加到 MCP 客户端的配置中(
mcp.json、claude_desktop_config.json、.cursor/mcp.json等):
{
"mcpServers": {
"discord": {
"command": "npx",
"args": ["-y", "@willuhmjs/discord-mcp", "--stdio"],
"env": {
"DISCORD_TOKEN": "your-bot-token",
"DISCORD_GUILD_ID": "your-server-id"
}
}
}
}
VS Code 使用 "servers",而不是 "mcpServers"。在 Windows 上,如果客户端找不到 npx,请使用 "command": "cmd" 和 "args": ["/c", "npx", "-y", "@willuhmjs/discord-mcp", "--stdio"]。
Claude Code — 一条命令:
claude mcp add discord -e DISCORD_TOKEN=... -e DISCORD_GUILD_ID=... -- npx -y @willuhmjs/discord-mcp --stdio
Docker — 在 http://127.0.0.1:8085/mcp 上运行长期 HTTP 服务:
docker run --rm -e DISCORD_TOKEN=... -p 127.0.0.1:8085:8085 ghcr.io/willuhmjs/discord-mcp
npx 需要 Node.js 22+。
配置
| 变量 | 默认值 | 含义 |
|---|---|---|
DISCORD_TOKEN | —(必填) | 机器人令牌。 |
DISCORD_GUILD_ID | — | 未提供 guildId 时供工具使用的默认服务。 |
ENABLE_MEMBERS_INTENT | off | 启用特权 Server Members 意图(也需在门户中启用)。成员列表工具需要此设置。 |
MCP_TRANSPORT | http | 使用 stdio 表示标准输入/输出。--stdio 标志效果相同。 |
HOST / PORT | 127.0.0.1 / 8085 | HTTP 绑定地址和端口。 |
MCP_SOCKET | — | 使用 Unix 套接字监听,而不是 HOST:PORT(仅限 HTTP 模式)。 |
在 HTTP 模式下,POST /mcp 提供 MCP 服务(通过 Mcp-Session-Id 使用有状态会话),连接机器人后,GET /health 会返回 200。
保持 HTTP 端点私有
HTTP 端点没有身份验证:任何能够访问它的人都可以使用机器人的所有工具。请将其限制在回环地址或私有网络中。在共享计算机上,其他账户仍可访问回环端口,因此请使用只有你能打开的 Unix 套接字:
mkdir -m 700 ~/.mcp
MCP_SOCKET=~/.mcp/discord.sock DISCORD_TOKEN=... npx @willuhmjs/discord-mcp
curl --unix-socket ~/.mcp/discord.sock http://localhost/health
套接字以 600 权限创建。请避免使用 NFS 等网络文件系统。Docker 镜像绑定到 0.0.0.0,因此请将该容器置于内部网络中。stdio 模式完全不会暴露在网络上。
工具
docs/TOOLS.md 列出了每个工具、其参数以及所需的 Discord 权限,并说明了相关约定(字符串 ID、JSON 字符串负载、审计日志的 reason)和消息/组件格式。
安全性
- 工具获取的所有 URL(表情符号、贴纸、文件、头像)都经过统一的防护型获取器:仅允许 http/https;在发起请求前以及每次重定向后都会拦截私有/回环/元数据 IP,并设有大小和时间限制。
- Webhook 令牌属于凭据:
create_webhook只返回一次 URL,任何列表/获取工具都不会显示该 URL。 - 没有工具会读取服务器的文件系统。
开发
npm ci
npm run build # tsc -> dist/
npm test # vitest, no Discord token needed
npm run typecheck
契约测试会根据 tests/fixtures/tool-contract.json 锁定每个工具名称和参数集。TESTING.md 是在真实测试服务中运行时使用的手动检查清单。
发布流程已自动化:main 上采用 Conventional Commits(feat:、fix:、feat!:)的提交会生成发布 PR;合并后会发布到 npm、MCP Registry 和 GHCR。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。