关于 discord-mcp
discord-mcp 是一个轻量级的 Discord MCP 服务,提供 95 个以上工具,可跨多个服务器管理消息、频道、角色、权限和审核等操作。它适合希望通过 Claude、Cursor 或 VS Code 等客户端管理 Discord 服务器的用户。
主要功能
- 0195 个以上工具覆盖日常服务器管理
- 02支持跨多个服务器运行
- 03通过 DISCORD_MCP_TOOLSETS 限制暴露的工具集
- 04通过 DISCORD_ALLOWED_GUILDS 限制可操作的服务器
- 05提供 npm 与 Docker 两种安装方式
适用场景
- 01通过自然语言读取、发送和搜索 Discord 消息
- 02批量管理频道权限与角色分配
- 03审核成员并执行清理操作,如批量删除或封禁
MCP 相关
该项目是一个 MCP 服务,向 Claude Desktop、Claude Code、Cursor、VS Code Copilot 等 MCP 客户端暴露 Discord 相关工具,并通过 Discord Bot 令牌连接服务器。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
99收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
Discord MCP 服务
轻量级、多服务器 Discord MCP 服务,提供 95+ 个工具
通过Claude Desktop、Claude Code、Cursor、VS Code Copilot 或任何兼容 MCP 的客户端管理你的整个 Discord 服务。 通过自然语言管理消息、频道、角色、权限、审核、论坛、Webhook 等。
为什么选择这个?
- 95+ 个工具:消息、频道、角色、权限、审核、论坛、Webhook、定时活动、邀请、私信、嵌入消息等
- 支持多个服务器:可在多个服务器中使用,不受
GUILD_ID限制 - 轻量级:TypeScript + Node.js,软件包约 70kB,Docker 镜像约 73MB(而 Java 替代方案超过 400MB)
- 模块化:架构清晰,易于扩展新工具
- 两种安装方式:npm 或 Docker,任你选择
快速开始
将以下内容添加到 MCP 客户端配置中,并将 YOUR_TOKEN_HERE 替换为你的机器人令牌:
{
"mcpServers": {
"discord": {
"command": "npx",
"args": ["-y", "@pasympa/discord-mcp"],
"env": {
"DISCORD_TOKEN": "YOUR_TOKEN_HERE"
}
}
}
}
无需安装,npx 会处理所有事情。
还没有机器人?请参阅创建 Discord 机器人。
配置
Claude Desktop
将上述配置添加到你的 claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
保存后重启 Claude Desktop。
Claude Code
claude mcp add discord -e DISCORD_TOKEN=YOUR_TOKEN_HERE -- npx -y @pasympa/discord-mcp
Cursor
将上述配置添加到 ~/.cursor/mcp.json。详情请参阅 Cursor MCP 文档。
VS Code / GitHub Copilot
添加到你的 .vscode/mcp.json:
{
"inputs": [
{
"type": "promptString",
"id": "discord-token",
"description": "Discord Bot Token",
"password": true
}
],
"servers": {
"discord": {
"command": "npx",
"args": ["-y", "@pasympa/discord-mcp"],
"env": {
"DISCORD_TOKEN": "${input:discord-token}"
}
}
}
}
详情请参阅 VS Code MCP 文档。
Docker
{
"mcpServers": {
"discord": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"DISCORD_TOKEN=YOUR_TOKEN_HERE",
"pasympa/discord-mcp:latest"
]
}
}
}
从源代码安装
git clone https://github.com/PaSympa/discord-mcp
cd discord-mcp
npm install && npm run build
{
"mcpServers": {
"discord": {
"command": "node",
"args": ["/absolute/path/to/discord-mcp/dist/index.js"],
"env": {
"DISCORD_TOKEN": "YOUR_TOKEN_HERE"
}
}
}
}
.env 文件(替代方式)
你也可以在项目根目录创建 .env 文件,而不是在 MCP 配置中传递令牌:
DISCORD_TOKEN=YOUR_TOKEN_HERE
服务会通过 dotenv 自动加载 .env。
| 变量 | 默认值 | 描述 |
|---|---|---|
DISCORD_TOKEN | 无 | 必填。 机器人令牌。 |
DISCORD_MESSAGE_CONTENT | true | 设为 false,即可在连接时停止请求 Message Content 特权网关意图。 |
DISCORD_GUILD_MEMBERS | true | 设为 false,即可在连接时停止请求 Server Members 特权网关意图。 |
DISCORD_MCP_TOOLSETS | all | 以逗号分隔的工具集列表,指定要开放的工具集,以缩减工具列表。未设置或设为 all 时开放所有工具。 |
DISCORD_ALLOWED_GUILDS | all | 以逗号分隔的服务器 ID 列表,指定服务可以操作的服务器。设置后,针对其他任何服务器的工具调用都会被拒绝,无论其通过服务器 ID、频道 ID、讨论串 ID、webhook 还是邀请代码指定。 |
从 2.1.1 开始,服务不再请求 GuildMessages 意图:此处没有任何功能会订阅消息事件,而且服务返回的每条消息都是通过 REST 获取的,不受连接意图限制。此前,该意图会让 discord.js 缓存所有频道中流经的每条消息及其作者信息,导致长时间运行的服务中缓存无限增长。现在,缓存清理器会限制缓存规模。因此,DISCORD_MESSAGE_CONTENT 只影响连接时是否请求 Message Content 意图,不会改变任何工具返回的内容。
这些标志只控制服务在识别身份时请求哪些网关意图。请求 Developer Portal 中未启用的特权意图,会导致连接在首次工具调用时失败(关闭代码 4014);将相应标志设为 false 即可正常连接。
数据访问由门户开关控制,而非这些标志:此服务通过 REST API 读取所有数据,Discord 仅根据门户设置进行限制。因此,若门户开关已开启,将这些标志设为 false 不会造成任何数据缺失。若门户开关关闭,相应数据无论这些标志如何设置都会受到限制:消息正文会返回为空(content、embeds、attachments;机器人自己的消息、私信以及提及机器人的消息除外),成员列表请求会失败;在门户中启用该开关即可恢复访问。
工具集(DISCORD_MCP_TOOLSETS):discovery、messages、channels、permissions、members、roles、moderation、screening、stats、forums、webhooks、scheduled_events、invites、dm。例如,DISCORD_MCP_TOOLSETS=discovery,messages,members 只会开放发现、消息和成员工具。注意:工具集包含其整个模块,包括具有破坏性的工具(messages 包含批量删除;members 包含踢出/封禁);请使用 DISCORD_ALLOWED_GUILDS 和默认的试运行设置来限制其影响范围。只有列出的工具集中的工具才会被公布并可供调用。若包含未知名称,服务会在启动时失败,而不会静默开放所有工具(空值视为未设置,会开放所有工具)。
创建 Discord 机器人
-
点击 New Application > 为应用命名
-
Bot 选项卡 > Reset Token > 复制令牌
-
启用 Privileged Gateway Intents(此服务默认会请求这两项,但新建的 Discord 应用在开发者门户中默认关闭这些开关):
- Server Members Intent
- Message Content Intent
**重要:**如果机器人请求了此处未启用的特权意图,Discord 会以代码
4014关闭连接,导致每次工具调用都失败。请启用两项,或者通过上方的环境变量停止请求不需要的意图。 -
OAuth2 > URL Generator:
- Scopes:
bot - Permissions:
Send Messages、Read Message History、Manage Channels、Manage Roles、Kick Members、Ban Members、Moderate Members、View Audit Log、Manage Messages、Manage Threads、Add Reactions、Manage Guild、Manage Webhooks、Manage Events、Create Events、Create Instant Invite、Manage Nicknames、Pin Messages、Embed Links、Create Public Threads、Send Messages in Threads
- Scopes:
-
复制生成的 URL,并邀请机器人加入你的服务器
可用工具(99)
发现与导航(4 个工具)
| 工具 | 描述 |
|---|---|
discord_list_guilds | 列出机器人已连接的所有服务器 |
discord_get_guild_info | 获取服务器详细信息(名称、成员、频道、角色、加成) |
discord_list_channels | 按类别列出服务器中的所有频道 |
discord_find_channel_by_name | 按名称查找频道(部分匹配) |
消息(20 个工具)
| 工具 | 描述 |
|---|---|
discord_read_messages | 阅读消息,按分页回溯历史记录 |
discord_send_message | 发送纯文本消息 |
discord_reply_message | 回复特定消息 |
discord_edit_message | 编辑机器人发送的消息 |
discord_delete_message | 删除特定消息 |
discord_add_reaction | 为消息添加表情回应 |
discord_remove_reactions | 移除回应(全部、按表情或按用户) |
discord_get_reactions | 列出使用特定表情回应的用户 |
discord_create_thread | 从消息创建帖子或创建独立帖子 |
discord_bulk_delete_messages | 一次删除多条消息(2-100 条) |
discord_send_embed | 发送包含所有选项的丰富嵌入消息 |
discord_edit_embed | 编辑机器人之前发送的嵌入消息 |
discord_send_multiple_embeds | 在单条消息中最多发送 10 个嵌入消息 |
discord_pin_message | 置顶或取消置顶消息 |
discord_get_message_attachments | 列出消息附件及其下载 URL |
discord_fetch_pinned_messages | 列出频道中的所有置顶消息 |
discord_search_messages | 按关键词搜索消息(最近 100 条) |
discord_search_guild_messages | 使用 Discord 的搜索索引搜索所有频道中的消息 |
discord_crosspost_message | 将消息发布给公告频道的关注者 |
discord_forward_message | 将消息转发到另一个频道 |
频道(8 个工具)
| 工具 | 描述 |
|---|---|
discord_create_channel | 创建文字频道、语音频道或分类 |
discord_delete_channel | 删除频道 |
discord_edit_channel | 编辑名称、主题、慢速模式和 NSFW 标记 |
discord_move_channel | 将频道移入或移出分类 |
discord_clone_channel | 克隆频道及其权限 |
discord_set_channel_position | 设置频道在分类中的显示位置 |
discord_follow_announcement_channel | 关注公告频道 |
discord_lock_channel_permissions | 与上级分类同步权限 |
频道权限(6 个工具)
| 工具 | 描述 |
|---|---|
discord_get_channel_permissions | 列出频道上的所有权限覆盖 |
discord_set_role_permission | 允许或拒绝角色在频道中的权限 |
discord_set_member_permission | 允许或拒绝成员在频道中的权限 |
discord_reset_channel_permissions | 移除所有权限覆盖(重置为继承状态) |
discord_copy_permissions | 将一个频道的权限覆盖复制到另一个频道 |
discord_audit_permissions | 对所有频道进行完整的权限审计 |
成员(11 个工具)
| 工具 | 描述 |
|---|---|
discord_list_members | 列出服务器成员及其角色 |
discord_get_member_info | 成员详细信息(角色、权限、加入日期) |
discord_search_members | 按用户名或昵称搜索成员 |
discord_set_nickname | 设置或清除成员的昵称 |
discord_kick_member | 踢出成员 |
discord_ban_member | 封禁成员(可选择删除近期消息) |
discord_unban_member | 解除对用户的封禁 |
discord_bulk_ban | 一次封禁多名用户(用于应对恶意突袭) |
discord_list_bans | 列出所有被封禁的用户 |
discord_timeout_member | 对成员实施超时(设为 0 可移除) |
discord_prune_members | 移除不活跃成员(支持试运行) |
角色(9 个工具)
| 工具 | 描述 |
|---|---|
discord_list_roles | 列出所有角色及其权限和成员数量 |
discord_create_role | 创建新角色 |
discord_edit_role | 编辑角色(名称、颜色、权限、是否在成员列表中单独显示、是否可被提及) |
discord_delete_role | 删除角色 |
discord_add_role | 为成员分配角色 |
discord_remove_role | 移除成员的角色 |
discord_get_role_members | 列出拥有特定角色的所有成员 |
discord_set_role_position | 更改角色在层级结构中的位置 |
discord_set_role_icon | 为角色设置自定义图标或 Unicode 表情符号 |
论坛(10 个工具)
| 工具 | 描述 |
|---|---|
discord_get_forum_channels | 列出服务器中的所有论坛频道 |
discord_create_forum_channel | 创建新的论坛频道 |
discord_create_forum_post | 在论坛中创建帖子/主题 |
discord_get_forum_post | 获取帖子的详情和消息 |
discord_list_forum_threads | 列出主题(活跃和已归档) |
discord_reply_to_forum | 回复论坛帖子 |
discord_delete_forum_post | 删除论坛主题 |
discord_get_forum_tags | 获取可用标签 |
discord_set_forum_tags | 设置/更新论坛标签 |
discord_update_forum_post | 更新标题、归档状态、锁定状态和标签 |
Webhook(8 个工具)
| 工具 | 描述 |
|---|---|
discord_create_webhook | 在频道中创建 Webhook |
discord_send_webhook_message | 通过 Webhook 发送消息(自定义用户名/头像、嵌入内容) |
discord_edit_webhook | 修改 Webhook 的名称、头像或频道 |
discord_delete_webhook | 删除 Webhook |
discord_list_webhooks | 列出频道或服务器的 Webhook |
discord_edit_webhook_message | 修改 Webhook 发送的消息 |
discord_delete_webhook_message | 删除 Webhook 发送的消息 |
discord_fetch_webhook_message | 获取指定的 Webhook 消息 |
预定活动(7 个工具)
| 工具 | 描述 |
|---|---|
discord_list_scheduled_events | 列出服务器中的所有预定活动 |
discord_get_scheduled_event | 获取预定活动的详细信息 |
discord_create_scheduled_event | 创建语音、舞台或外部活动 |
discord_edit_scheduled_event | 修改现有的预定活动 |
discord_delete_scheduled_event | 删除预定活动 |
discord_get_event_subscribers | 获取标记为“感兴趣”的用户 |
discord_create_event_invite | 创建与活动关联的邀请 |
私信(7 个工具)
| 工具 | 描述 |
|---|---|
discord_send_dm | 根据用户 ID 向用户发送私信 |
discord_send_dm_embed | 向用户发送包含嵌入内容的私信 |
discord_read_dms | 读取私信对话的消息记录 |
discord_reply_dm | 回复指定的私信消息 |
discord_edit_dm | 修改之前发送的私信(文本) |
discord_edit_dm_embed | 修改之前发送的私信嵌入内容 |
discord_delete_dm | 删除私信消息 |
邀请(5 个工具)
| 工具 | 描述 |
|---|---|
discord_list_invites | 列出服务器中所有有效邀请 |
discord_list_channel_invites | 列出指定频道的邀请 |
discord_get_invite | 根据邀请代码获取邀请详情 |
discord_create_invite | 为频道创建邀请链接 |
discord_delete_invite | 撤销邀请 |
审核与筛选(3 个工具)
| 工具 | 描述 |
|---|---|
discord_get_audit_log | 获取服务器审核日志 |
discord_get_membership_screening | 获取成员筛选表单 |
discord_update_membership_screening | 更新新成员的筛选规则 |
统计(1 个工具)
| 工具 | 描述 |
|---|---|
discord_get_server_stats | 服务器统计:成员、频道、身份组、加成等级 |
使用示例
"List all servers the bot is in"
"Read the last 10 messages in #general"
"Send 'Hello everyone!' to the announcements channel"
"Create a forum channel called 'feedback' with tags Bug, Feature, Question"
"Show the full permission audit for the server"
"Create a webhook on #notifications and send a test message"
"Ban user 112233445566778899 and delete their messages from the last 3 days"
"Create an event called 'Game Night' for next Friday at 8pm"
"List all upcoming events in the server"
"Create a permanent invite for #general"
"List all active invites and delete expired ones"
"Send a DM to user 112233445566778899 saying 'Your build passed!'"
"Search for members named 'john'"
"List all banned users in the server"
"Show all pinned messages in #general"
"Forward that message to #announcements"
查找 Discord ID
在 Discord 中启用开发者模式:
Settings > Advanced > Developer Mode
然后在服务器、频道或用户上右键单击 > 复制 ID。
项目结构
discord-mcp/
├── src/
│ ├── index.ts ← Entry point (MCP server + transport)
│ ├── client.ts ← Discord client + shared helpers
│ ├── constants.ts ← Shared constants (limits, defaults)
│ ├── embeds.ts ← Shared embed schema + builder
│ └── tools/
│ ├── index.ts ← Tool registry (toolset gating, dispatch)
│ ├── define.ts ← defineTool/defineModule + shared zod fields
│ ├── types.ts ← Shared TypeScript interfaces
│ ├── discovery.ts ← Guild/channel discovery
│ ├── messages.ts ← Message CRUD, reactions, threads, embeds
│ ├── channels.ts ← Channel management
│ ├── permissions.ts ← Permission overwrites
│ ├── members.ts ← Member management
│ ├── roles.ts ← Role CRUD and assignment
│ ├── moderation.ts ← Audit log
│ ├── screening.ts ← Membership screening
│ ├── stats.ts ← Server statistics
│ ├── forums.ts ← Forum channels, posts, tags
│ ├── webhooks.ts ← Webhook management
│ ├── scheduledEvents.ts ← Scheduled events
│ ├── invites.ts ← Invite management
│ └── dm.ts ← Direct messages
├── test/ ← node:test suite (schemas, gating, allow-list)
├── scripts/ ← sync-version.js (npm version hook)
├── .github/workflows/ ← CI/CD (build check + auto release)
├── Dockerfile
├── .dockerignore
├── .env.example
├── package.json
├── tsconfig.json
├── CHANGELOG.md
├── CONTRIBUTING.md
├── SECURITY.md
└── README.md
添加新工具
- 在
src/tools/中创建一个新文件(例如events.ts) - 使用
defineTool({ name, description, annotations, schema, handle })声明每个工具,并将defineModule([...])导出为默认值 - 导入该模块,并将其添加到
src/tools/index.ts中的allToolsets(键名为其DISCORD_MCP_TOOLSETS名称)
安全
- 切勿将 Discord 令牌提交到 Git
- 使用环境变量或
.env文件(不纳入版本控制) - 仅授予机器人所需的权限
- 使用
DISCORD_ALLOWED_GUILDS将服务限制为指定的服务器 - 不可逆的批量操作(
bulk_ban、prune_members、bulk_delete_messages、delete_channel)默认会提供dry_run预览;传入dry_run:false即可执行
贡献
欢迎贡献!
- Fork 此代码库
- 创建功能分支(
git checkout -b feature/my-feature) - 遵循模块化结构,参见添加新工具
- 提交更改并发起 pull request
许可证
许可证为 MIT,详情请参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。