使用说明
断开MCP服务器
MCP(模型上下文协议)服务器,允许Claude通过机器人令牌完全访问Discord服务器。 46工具 涵盖渠道、消息、线程、论坛、反应、权限、成员、附件和DM——所有这些都是按 名字 ID回退。
先决条件
- Node.js >= 18
- A. Discord机器人 启用了正确的意图和权限(见下文)
Discord Bot设置
- 去 Discord开发者门户 并创建一个 新应用.
- 首选 机器人 → click 重置令牌 → 复制令牌(这是您的
DISCORD_BOT_TOKEN). - 在...之下 特权网关意图,启用:
- 服务器成员意图
- 消息内容意图
- 首选 OAuth2→ URL生成器:
- 范围:
bot - 机器人权限:
- 概述: 查看频道、管理频道、管理角色
- 文本: 发送消息、管理消息、读取消息历史记录、添加反应、嵌入链接、附加文件、创建公共线程、创建私有线程、在线程中发送消息和管理线程
- 声音: 连接,说话(如果需要)
- 打开生成的URL,邀请机器人到您的服务器。
- 范围:
- 得到你的 服务器(公会)ID:在Discord中,启用开发人员模式(设置→ 高级),右键单击您的服务器名称→ 复制服务器ID这是你的
DISCORD_GUILD_ID.
安装和构建
git clone <this-repo>
cd discord-mcp
npm install
npm run build
配置
设置两个环境变量:
export DISCORD_BOT_TOKEN="your-bot-token"
export DISCORD_GUILD_ID="your-server-id"
或者通过MCP客户端配置传递它们(见下文)。
跑
# Production (compiled JS)
npm start
# Development (TypeScript via tsx)
npm run dev
# Run tests
npm test
连接到克劳德代码
添加 claude_desktop_config.json 或 .claude.json:
{
"mcpServers": {
"discord": {
"command": "node",
"args": ["/absolute/path/to/discord-mcp/dist/index.js"],
"env": {
"DISCORD_BOT_TOKEN": "your-bot-token",
"DISCORD_GUILD_ID": "your-server-id"
}
}
}
}
提示: 使用
npx tsx /path/to/discord-mcp/src/index.ts作为在开发过程中跳过构建步骤的命令。
可用工具(46)
所有工具接受渠道和会员 名字 (例如。 "general", "#announcements", "Alice")ID回退。
频道(9)
| 工具 | 说明 |
|---|---|
discord_list_channels |
列出所有频道(可选类型过滤器:文本、语音、类别、公告、论坛、舞台、帖子) |
discord_get_channel |
按名称或ID获取频道详细信息 |
discord_create_channel |
创建新频道(文本、语音、类别、公告、论坛、舞台) |
discord_modify_channel |
修改频道设置(名称、主题、nsfw、慢模式、位置、父级、比特率、用户限制) |
discord_delete_channel |
删除频道(需要 confirm=true) |
discord_reorder_channels |
通过设置频道的位置重新排序频道 |
discord_set_channel_permissions |
为角色或用户设置频道上的权限覆盖 |
discord_delete_channel_permissions |
删除角色或用户的权限覆盖(需要 confirm=true) |
discord_clone_channel |
克隆现有频道(复制设置并覆盖权限) |
留言(11)
| 工具 | 说明 |
|---|---|
discord_get_message_history |
使用分页和可选的作者筛选器获取最近的邮件 |
discord_get_message |
按ID获取单个消息 |
discord_search_messages |
按文本内容搜索邮件(可选作者筛选器) |
discord_send_message |
发送包含文本、嵌入、提及控件和通知抑制的消息 |
discord_edit_message |
编辑机器人消息(文本和/或嵌入) |
discord_delete_message |
删除消息 |
discord_pin_message |
固定消息(每个通道最多50个) |
discord_unpin_message |
不愉快的消息 |
discord_list_pins |
列出频道中的所有固定消息 |
discord_bulk_delete_messages |
批量删除2-100封邮件(需要 confirm=true) |
discord_crosspost_message |
在公告频道向关注者发布消息 |
话题与论坛(13)
| 工具 | 说明 |
|---|---|
discord_list_threads |
列出活动线程(可选通道筛选器) |
discord_get_thread |
按名称或ID获取线程详细信息 |
discord_start_thread_from_message |
从现有消息启动线程 |
discord_start_thread |
在通道中启动独立线程 |
discord_create_forum_post |
创建带有标签、自动存档和慢速模式的论坛帖子 |
discord_list_archived_threads |
列出已存档的线程(公共/私有/已连接)并进行分页 |
discord_join_thread |
Bot加入一个线程 |
discord_leave_thread |
机器人留下一条线索 |
discord_add_thread_member |
将用户添加到线程 |
discord_remove_thread_member |
从线程中删除用户 |
discord_list_thread_members |
列出线程的成员 |
discord_update_thread |
更新线程设置(名称、存档、锁定、慢速模式、自动存档) |
discord_update_forum_channel |
更新论坛频道设置(标签、默认反应、排序、布局、慢模式) |
反应(4)
| 工具 | 说明 |
|---|---|
discord_add_reaction |
使用表情符号回复消息 |
discord_remove_reaction |
移除机器人的反应 |
discord_list_reactions |
用计数列出消息的反应(可以选择获取特定表情符号的用户) |
discord_clear_reactions |
清除所有反应或特定表情符号(需要 confirm=true) |
权限(3)
| 工具 | 说明 |
|---|---|
discord_check_permissions |
检查用户/角色在通道中的权限(默认为机器人) |
discord_get_effective_overwrites |
列出具有允许/拒绝权限的频道上的所有权限覆盖 |
discord_explain_permission_denial |
逐步解释频道中用户的权限层次结构 |
成员(1)
| 工具 | 说明 |
|---|---|
discord_list_members |
列出服务器成员(可选名称搜索) |
附件(2)
| 工具 | 说明 |
|---|---|
discord_list_attachments |
列出频道中的文件附件 |
discord_download_attachment |
下载并返回附件的文本内容 |
DM(2)
| 工具 | 说明 |
|---|---|
discord_get_dm_channels |
列出机器人的开放DM渠道 |
discord_create_dm |
使用服务器成员打开DM并发送消息 |
服务器(1)
| 工具 | 说明 |
|---|---|
discord_get_server_capabilities |
报告机器人权限、公会功能、意图和缺少的推荐权限 |
所需意向
| 意图 | 为什么 |
|---|---|
| 帮派 | 频道和帮派缓存 |
| GuildMessages | 消息事件和历史 |
| 有罪会员(特权会员) | 按姓名进行会员决议 |
| MessageContent(特权) | 读取邮件文本以进行搜索/筛选 |
| DirectMessages | DM通道支持 |
提及安全
discord_send_message 和 discord_edit_message 使用一个 提及安全默认值: @everyone 和 @here 除非您明确通过,否则将被抑制 allowed_mentions: { parse: ["everyone"] }。用户和角色提及正常工作。
破坏性操作防护装置
删除或批量修改数据的工具需要 confirm: true:
discord_delete_channeldiscord_delete_channel_permissionsdiscord_delete_message(单次删除,无需确认)discord_bulk_delete_messages(需要确认)discord_clear_reactions(需要确认)
审核工具接受 audit_log_reason 用于Discord审核日志。
速率限制
服务器使用confirm.js,每个请求有5次自动重试和15秒超时。不一致率限制(429)通过退避透明地处理。如果重试次数用尽,则返回一个结构化错误 retry_after_ms 如果可用。
示例提示
频道:
- “列出所有频道”
- “在项目类别下创建一个名为项目更新的文本频道”
- “一般来说,版主角色有哪些权限?”
信息:
- “最新的#general是什么?”
- “爱丽丝在#random中发送了什么?”
- “在#docs中搜索'neneneba API密钥'”
- “发送到#standup:今天我在MCP服务器上工作”
- “向#announcements发送一个嵌入,标题为“Release v2.0”,描述为“新功能…”
- “将最后一条消息标记为#important”
主题和论坛:
- “列出所有活动线程”
- “在#help中创建一个论坛帖子,标题为“设置问题”,并带有bug标签”
- “#讨论中的存档线程是什么?”
权限:
- “机器人可以在#locked channel中发送消息吗?”
- “为什么Alice无法查看#私人频道?”
- “仅对#admin的权限覆盖是什么?”
附件:
- “从#incoming获取文档” (列出邮件+附件)
- “从#resources下载最新文件”
项目结构
src/
├── index.ts # Entry point — MCP server + startup
├── discord/
│ ├── client.ts # Discord client setup, login, guild accessor
│ ├── context.ts # Shared context (DI) for tool handlers
│ ├── formatters.ts # Channel/message/thread formatting
│ └── resolvers.ts # Name-to-ID resolution helpers
├── mcp/
│ └── response.ts # Standardized ok/err response builders
└── tools/
├── index.ts # Tool registration barrel
├── channels.ts # Channel CRUD + permissions
├── messages.ts # Message read/write + pins + bulk ops
├── reactions.ts # Reaction add/remove/list/clear
├── threads.ts # Thread + forum tools
├── members.ts # Member listing
├── attachments.ts # Attachment list + download
├── dm.ts # DM channels
├── permissions.ts # Permission checks + diagnostics
└── server.ts # Server capabilities
tests/
├── response.test.ts # Response builder unit tests
└── formatters.test.ts # Formatter unit tests
与Claude Code合作
该回购提供 .claude/ 目录中包含项目规则、提示和技能,帮助Claude Code理解代码库并遵循项目约定。如果你使用 克劳德代码,它将自动拾取这些。
内容包括:
.claude/CLAUDE.md--项目说明、关键文件、约束和完成定义.claude/rules/--交付工作流程、扩展路线图、安全审查手册.claude/prompts/--现成的提示模板,用于错误修复、重构和评论.claude/skills/—/discord-mcp-build和/discord-mcp-verify斜线命令
欢迎贡献——无论是新工具、更好的提示还是改进的规则。打开一个问题或公关,随时改进 .claude/ 在代码更改的同时配置。
许可证
麻省理工学院