关于 MCP-Discord
MCP-Discord 是一个 Discord MCP 服务,让 AI 助手通过 Discord 机器人访问和管理 Discord 平台。它覆盖服务器、频道、论坛、消息、角色、成员和 Webhook 等操作,支持 stdio 与streamable HTTP 两种传输方式。项目基于 Node.js 实现,并提供 Docker 镜像。
主要功能
- 01通过 Discord 机器人令牌登录并列出服务器
- 02管理文本、论坛、语音频道与分类
- 03发布、回复和管理论坛帖子及标签
- 04读取、搜索、编辑和删除消息,并管理反应
- 05管理角色、成员与 Webhook
- 06支持 stdio 与 streamable HTTP 传输
适用场景
- 01让 AI 助手在社区服务器中发送通知或整理频道
- 02通过论坛工具批量创建与归档帖子
- 03按角色和权限配置服务器结构
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露 Discord 相关的工具,如 discord_send、discord_read_messages 和 discord_create_role。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
22收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| guildId | string | 是 | |
| name | string | 是 | |
| position | number | 否 | |
| reason | string | 否 |
详细介绍
MCP-Discord
一个 Discord MCP(Model Context Protocol)服务,可让 AI 助手与 Discord 平台交互。
概览
MCP-Discord 提供以下与 Discord 相关的功能:
- 登录 Discord 机器人
- 列出机器人加入的服务器
- 获取服务器信息
- 列出成员并查看成员详情
- 列出、创建、编辑、删除、分配和移除角色
- 搜索服务器中的消息
- 读取、编辑和删除频道消息
- 向指定频道发送消息
- 获取论坛频道列表
- 创建、更新、删除论坛帖子并回复
- 列出论坛帖子串并管理论坛标签
- 创建、编辑和删除文本、论坛、语音频道及分类
- 设置和移除频道权限覆盖
- 添加/移除消息表情回应
- 创建/编辑/删除/使用 Webhook
目录
前提条件
-
Node.js(v18.0.0 或更高版本)
-
npm(v7.0.0 或更高版本)
-
具备适当权限的 Discord 机器人
- 机器人令牌(可从 Discord Developer Portal 获取)
- 已启用 Message Content Intent
- 已启用 Server Members Intent
- 已启用 Presence Intent
-
Discord 服务器中所需的权限:
最简单的设置
- 管理员(推荐用于快速设置并获得完整功能)
或者,仅选择所需权限:
- 发送消息
- 创建公开帖子串
- 在帖子串中发送消息
- 管理消息
- 管理帖子串
- 管理频道
- 管理 Webhook
- 管理角色
- 添加表情回应
- 查看频道
-
将 Discord 机器人添加到服务器
- 要将 Discord 机器人添加到服务器,请使用以下任一邀请链接(将
INSERT_CLIENT_ID_HERE替换为机器人的客户端 ID):
- 要将 Discord 机器人添加到服务器,请使用以下任一邀请链接(将
注意:
根据 Discord 的安全模型,机器人只能访问明确添加了它的服务器中的信息。
如果要使用此 MCP 服务访问特定的 Discord 服务器,必须先将机器人添加到该服务器。
使用下面的邀请链接将机器人添加到目标服务器。
安装
通过 NPM 安装
你可以使用以下命令:
npx mcp-discord --config ${DISCORD_TOKEN}
更多详情请查看 NPM Package。
通过 Smithery 安装
要通过 Smithery 自动安装 mcp-discord
通过 Docker 安装
你可以使用 Docker 运行 mcp-discord。Docker 镜像会自动构建并发布到 Docker Hub。
Docker Hub 仓库:barryy625/mcp-discord
Docker 默认通过 build/app.js 使用 streamable HTTP 服务端。
# Pull the latest image
docker pull barryy625/mcp-discord:latest
# Run HTTP server on port 8080
docker run -e DISCORD_TOKEN=your_discord_bot_token -p 8080:8080 barryy625/mcp-discord:latest
# Override the listening port if needed
docker run -e DISCORD_TOKEN=your_discord_bot_token -p 3000:3000 barryy625/mcp-discord:latest --transport http --port 3000
可用标签:
latest- main 分支中的最新稳定版本v1.3.8等 - 特定版本的发布版本
手动安装
# Clone the repository
git clone https://github.com/barryyip0625/mcp-discord.git
cd mcp-discord
# Install dependencies
npm install
# Compile TypeScript
npm run build
配置
正常运行需要 Discord 机器人令牌。服务端支持两种传输方式:stdio 和 streamable HTTP。
传输方式
-
stdio(默认)
- 用于基本用法的传统 stdio 传输
- 适用于简单集成
-
streamable HTTP
- 适用于更高级场景的基于 HTTP 的传输
- 支持无状态运行
- 端口号可配置
配置选项
你可以通过两种方式提供配置:
- 环境变量:
DISCORD_TOKEN=your_discord_bot_token
- 使用命令行参数:
# For stdio transport (default)
node build/index.js --config "your_discord_bot_token"
# For streamable HTTP transport
node build/app.js --transport http --port 3000 --config "your_discord_bot_token"
与 Claude/Cursor 配合使用
1. 使用 Stdio 传输与 Claude/Cursor 配合
当 MCP 客户端需要基于命令的 stdio 服务端时,请使用 build/index.js。
Claude Desktop / Claude Code
{
"mcpServers": {
"discord": {
"command": "node",
"args": [
"path/to/mcp-discord/build/index.js"
],
"env": {
"DISCORD_TOKEN": "your_discord_bot_token"
}
}
}
}
Cursor
{
"mcpServers": {
"discord": {
"command": "node",
"args": [
"path/to/mcp-discord/build/index.js"
],
"env": {
"DISCORD_TOKEN": "your_discord_bot_token"
}
}
}
}
这是本地基于命令的 MCP 客户端的推荐配置。
2. 自行托管 Streamable HTTP 服务端
如果你想将 mcp-discord 作为 HTTP MCP 服务端运行,请使用 build/app.js。
使用 Node.js 运行
DISCORD_TOKEN=your_discord_bot_token node build/app.js --transport http --port 3000
在 Windows PowerShell 中:
$env:DISCORD_TOKEN="your_discord_bot_token"
node build/app.js --transport http --port 3000
使用 Docker 运行
docker run -e DISCORD_TOKEN=your_discord_bot_token -p 3000:3000 barryy625/mcp-discord:latest --transport http --port 3000
启动后,MCP HTTP 端点为:
http://localhost:3000/mcp
3. 连接到托管的 HTTP MCP 服务端
如果你已在其他位置托管 mcp-discord,请让 MCP 客户端连接到服务端的 /mcp 端点,而不是将 build/app.js 作为命令启动。
端点示例:
https://your-server.example.com/mcp
重要说明:
build/app.js会启动 HTTP 服务端,不支持 stdio。build/index.js是基于命令的 stdio MCP 客户端的正确入口文件。- 如需使用托管的 HTTP 服务,请将 MCP 客户端配置为连接到部署提供的 HTTP 端点 URL。
- 具体的 HTTP 客户端配置格式取决于你使用的 MCP 客户端。
工具文档
基本功能
discord_login:使用已配置的令牌登录 Discorddiscord_list_servers:列出机器人加入的所有 Discord 服务discord_send:向指定频道发送消息discord_get_server_info:获取 Discord 服务信息
频道管理
discord_create_text_channel:创建文本频道discord_create_forum_channel:创建论坛频道discord_create_voice_channel:创建语音频道discord_edit_channel:编辑频道名称、主题、父类别或位置discord_delete_channel:删除频道discord_create_category:创建频道类别discord_edit_category:编辑频道类别discord_delete_category:删除频道类别discord_set_channel_permissions:为频道/类别中的某个角色或用户设置权限覆盖discord_remove_channel_permissions:移除频道/类别的权限覆盖
论坛功能
discord_get_forum_channels:获取论坛频道列表discord_create_forum_post:创建论坛帖子(可选择将其置顶)discord_get_forum_post:获取论坛帖子discord_list_forum_threads:列出论坛频道中的活跃和已归档帖子串discord_reply_to_forum:回复论坛帖子discord_get_forum_tags:获取论坛频道的所有可用标签discord_set_forum_tags:替换论坛频道的可用标签discord_update_forum_post:更新论坛帖子的标题、标签、归档状态、锁定状态或置顶状态discord_delete_forum_post:删除论坛帖子
消息和表情回应
discord_search_messages:搜索服务器中的消息discord_read_messages:读取频道消息(支持before、after、around参数——接受 snowflake ID 或 ISO 8601 日期,例如"2025-03-01T00:00:00Z")discord_edit_message:编辑由机器人发送的消息discord_add_reaction:为消息添加表情回应discord_add_multiple_reactions:为消息添加多个表情回应discord_remove_reaction:移除消息上的表情回应discord_delete_message:删除频道中的特定消息discord_pin_message:将消息固定到所在频道(每个频道最多固定 50 条)discord_unpin_message:从频道的固定消息中移除一条消息discord_list_pinned_messages:列出频道固定的消息,按固定时间从新到旧排序
Webhook 管理
discord_create_webhook:为 Discord 频道创建新的 webhookdiscord_send_webhook_message:使用 webhook 向 Discord 频道发送消息discord_edit_webhook:编辑 Discord 频道现有的 webhookdiscord_delete_webhook:删除 Discord 频道现有的 webhook
角色管理
discord_list_roles:列出服务器中的所有角色discord_create_role:创建角色,并设置颜色、是否置顶显示、是否可提及和权限选项discord_edit_role:编辑现有角色discord_delete_role:删除角色discord_assign_role:为成员分配角色discord_remove_role:移除成员的角色
成员管理
discord_list_members:列出服务器中的成员及其角色discord_get_member:获取特定成员的详细信息
开发
# Development mode
npm run dev
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。