使用说明
Discord服务器设置MCP
一种MCP(模型上下文协议)服务器,用于使用Discord Bot API自动设置Discord服务器。该服务器使Claude等AI助手能够通过Discord机器人管理服务器、渠道、角色、权限和应用模板。
特性
- 交叉平台的:适用于Windows、Linux和macOS
- 不需要Discord应用程序:通过Discord Bot API操作(无头)
- 帮会管理:发现、选择和管理多个Discord服务器
- 渠道管理:使用权限覆盖创建、编辑和删除频道和类别(编辑合并覆盖目标,这样您就不会意外暴露私人频道)
- 角色管理:使用语义层次结构位置创建、编辑、删除、列出和重新排序角色(
top/above/below,或排名第一的列表)如此重要的角色落在你指的地方 - 权限覆盖:将频道/类别设置为私有,授予特定角色访问权限
- 服务器设置:配置验证级别、内容筛选器和通知设置
- 预构建模板:为常见用例应用即用型服务器模板
- 快速可靠:通过正确的错误处理直接调用API
预构建模板
| 模板 | 描述 | 角色 | 类别 | 渠道 |
|---|---|---|---|---|
| 游戏 | 具有竞争、流媒体和活动部分的综合游戏社区 | 10 | 11 | 40+ |
| 社区 | 用于讨论和社交互动的通用社区服务器 | 6 | 6 | 20+ |
| 业务 | 团队和组织的专业工作空间 | 6 | 6 | 18+ |
| 研究小组 | 学习小组和班级的学术合作空间 | 5 | 5 | 15+ |
先决条件
系统要求
- Node.js 18.0.0或更高
- Discord机器人 具有适当的权限
Discord Bot设置
- 在以下位置创建应用程序https://discord.com/developers/applications
- 添加机器人用户并复制机器人令牌
- 不需要特权网关权限。 服务器仅使用 默认(非特权)帮派意图,因此您可以保留所有特权 网关意图关闭。(请求未启用的特权意图将 实际上使登录失败。)
- 生成OAuth2邀请URL:
- 转到OAuth2→ URL生成器
- 选择范围:
bot和applications.commands - 选择机器人程序所需的权限-- 管理角色, 管理渠道, 和 管理服务器 涵盖当前的工具; 管理员 是 最简单的全面服务器管理。
- 使用生成的URL将机器人邀请到您的Discord服务器
重要:机器人只能创建/移动/分配角色 在......下面 自己的最高 在等级制度中的角色。确保机器人在服务器中的角色足够高 设置→ 您希望它管理的角色的角色。
安装
快速安装(单层)
curl -fsSL https://raw.githubusercontent.com/cj-vana/discord-setup-mcp/main/install.sh | bash
这将安装到 ~/.discord-setup-mcp 默认情况下。集 DISCORD_MCP_DIR 自定义:
DISCORD_MCP_DIR=/custom/path curl -fsSL https://raw.githubusercontent.com/cj-vana/discord-setup-mcp/main/install.sh | bash
手动安装
# Clone the repository
git clone https://github.com/cj-vana/discord-setup-mcp.git
cd discord-setup-mcp
# Install dependencies
npm install
# Build the project
npm run build
配置
设置Bot令牌
选项A:环境变量
macOS/Linux(临时-仅限当前会话):
export DISCORD_BOT_TOKEN="your-bot-token-here"
macOS/Linux(永久-添加到shell配置文件):
# For zsh (default on macOS)
echo 'export DISCORD_BOT_TOKEN="your-bot-token-here"' >> ~/.zshrc
source ~/.zshrc
# For bash
echo 'export DISCORD_BOT_TOKEN="your-bot-token-here"' >> ~/.bashrc
source ~/.bashrc
Windows命令提示符(临时):
set DISCORD_BOT_TOKEN=your-bot-token-here
Windows PowerShell(临时):
$env:DISCORD_BOT_TOKEN = "your-bot-token-here"
Windows(永久-系统环境变量):
- 按
Win + R,类型sysdm.cpl,按Enter键 - 首选 高级 tab → 环境变量
- 在“用户变量”下,单击 新
- 变量名称:
DISCORD_BOT_TOKEN - 变量值:
your-bot-token-here - 单击“确定”并重新启动终端
选项B:配置文件
创建 ~/.discord-mcp/config.json:
# Create the directory
mkdir -p ~/.discord-mcp
# Create the config file (replace with your actual token)
cat > ~/.discord-mcp/config.json << 'EOF'
{
"discordToken": "your-bot-token-here",
"defaultGuildId": "optional-default-server-id"
}
EOF
# Secure the file (recommended)
chmod 600 ~/.discord-mcp/config.json
在Windows上,创建 %USERPROFILE%\.discord-mcp\config.json 具有相同的JSON内容。
Claude桌面配置(推荐)
最简单的方法是直接在Claude Desktop配置中设置令牌:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"discord-setup": {
"command": "node",
"args": ["/path/to/discord-setup-mcp/dist/index.js"],
"env": {
"DISCORD_BOT_TOKEN": "your-bot-token-here"
}
}
}
}
替换 /path/to/discord-setup-mcp 使用克隆存储库的实际路径。
Claude代码配置
# Add the MCP server
claude mcp add discord-setup-mcp node /path/to/discord-setup-mcp/dist/index.js
# Set the token (if not using config file or system env var)
claude mcp add discord-setup-mcp node /path/to/discord-setup-mcp/dist/index.js -e DISCORD_BOT_TOKEN=your-bot-token-here
在您的环境中设置令牌或使用配置文件方法。
用法
基本工作流程
- 列出服务器 机器人可以访问
- 选择服务器 一起工作
- 创建渠道、角色或应用模板
示例命令
List Discord servers
Select the server named "My Server"
Create a text channel called "general-chat"
Create a role called "Moderator" with MANAGE_MESSAGES permission
Make the "admin-chat" category private, only visible to the Admin role
Apply the gaming template to this server
工具参考
帮会管理
list_guilds
列出机器人可以访问的所有服务器。
select_guild
为后续操作设置活动服务器。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
guildId |
string | 是 | 要选择的公会ID或名称 |
get_guild_info
获取详细的服务器信息,包括通道、角色和设置。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
guildId |
string | 否 | 公会ID或名称(如果未指定,则使用当前名称) |
渠道管理
create_category
创建具有可选权限覆盖的频道类别。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name |
string | 是 | 类别名称(1-100个字符) |
guildId |
string | 否 | 帮会ID或名称 |
position |
number | No | 频道列表中的位置 |
permissionOverwrites |
array | 否 | 角色/用户的权限覆盖 |
create_channel
创建一个频道(文本、语音、公告、舞台、论坛)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name |
string | 是 | 频道名称(1-100个字符) |
type |
string | 否 | 通道类型: text, voice, announcement, stage, forum (默认值: text) |
guildId |
string | 否 | 帮会ID或名称 |
categoryId |
string | 否 | 父类别ID |
topic |
string | 否 | 频道主题(文本频道,最多1024个字符) |
nsfw |
boolean | 否 | 年龄限制通道(默认值:false) |
slowmode |
number | No | 慢模式(秒)(0-21600) |
bitrate |
number | No | 语音信道比特率(8000-384000) |
userLimit |
number | No | 语音通道用户限制(0-99,0=无限制) |
position |
number | No | 频道列表中的位置 |
permissionOverwrites |
array | 否 | 角色/用户的权限覆盖 |
edit_channel
修改现有频道的设置和权限。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
channelId |
string | 是 | 要编辑的频道ID |
guildId |
string | 否 | 帮会ID或名称 |
name |
string | 否 | 新频道名称 |
topic |
string | 否 | 新频道主题 |
nsfw |
boolean | 否 | 年龄限制设置 |
slowmode |
number | No | 慢模式(秒) |
bitrate |
number | No | 语音通道比特率 |
userLimit |
number | No | 语音通道用户限制 |
position |
number | 否 | 新职位 |
categoryId |
string | 否 | 移动到类别(null删除) |
permissionOverwrites |
array | 否 | 替换权限覆盖 |
delete_channel
删除频道(无法撤消)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
channelId |
string | 是 | 要删除的频道ID |
guildId |
string | 否 | 帮会ID或名称 |
角色管理
角色位置颠倒。 A. 更高 位置编号较高 在等级制度中,权力更大;
@everyone是位置0在底部; 一个全新的角色默认位于底部。使用placement/orderedRoleIds下面,让服务器计算原始数字——你很少需要推理 关于直接的立场。机器人只能放置角色 在......下面 自己的最高作用。
create_role
在层次结构中创建一个具有权限和可选位置的角色。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name |
string | 是 | 角色名称(1-100个字符) |
guildId |
string | 否 | 帮会ID或名称 |
color |
字符串/数字 | 否 | 十六进制颜色(#FF0000)或整数 |
hoist |
boolean | 否 | 在成员列表中单独显示 |
mentionable |
boolean | 否 | 允许任何人提及此角色 |
permissions |
array | 否 | 权限名称(SCREAMING_SNAKE_CASE);未知名称会被拒绝,而不是被默默删除 |
placement |
string | 否 | top / bottom / above / below --在哪里对角色进行排名(优先于 position) |
referenceRoleId |
string | 否 | 要放置在上面/下面的角色(需要时) placement 是 above/below) |
position |
number | No | 原始不一致位置(高级;覆盖 placement) |
edit_role
修改现有角色。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
roleId |
string | 是 | 要编辑的角色ID |
guildId |
string | 否 | 帮会ID或名称 |
name |
string | 否 | 新角色名称 |
color |
字符串/数字 | 否 | 新颜色 |
hoist |
boolean | 否 | 单独显示设置 |
mentionable |
boolean | 否 | 可提及的设置 |
permissions |
array | 否 | 替换所有权限 |
position |
number | 否 | 层次结构中的新位置 |
delete_role
删除角色(无法撤消)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
roleId |
string | 是 | 要删除的角色ID |
guildId |
string | 否 | 帮会ID或名称 |
list_roles
列出从高到低排序的角色(如它们在Discord的UI中显示的那样),每个角色
角色的位置以及机器人是否可以管理它,以及 botHighestRolePosition.
在重新排序或放置角色之前调用此命令。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
guildId |
string | 否 | 帮会ID或名称 |
reorder_roles
重新排序层次结构中的角色。提供 恰好一个 下面的输入。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
orderedRoleIds |
array | 否 | 从最重要(索引0=顶部)到最不重要的角色ID。为您计算的职位。 首选。 |
rolePositions |
array | 否 | 高级:显式 {roleId, position} 具有原始Discord位置的对象 |
guildId |
string | 否 | 帮会ID或名称 |
服务器设置
update_server_settings
一次更新多个服务器设置。
set_verification_level
设置成员验证级别(0-4)。
set_content_filter
设置明确的内容过滤器级别。
set_default_notifications
为新成员设置默认通知设置。
模板
list_templates
列出可用的预构建模板。
preview_template
应用前查看模板详细信息。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
templateId |
string | 是 | 要预览的模板ID |
apply_template
将模板应用于服务器。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
templateId |
string | 是 | 要应用的模板ID |
guildId |
string | 否 | 帮会ID或名称 |
权限覆盖
权限覆盖允许您自定义对频道和类别的访问。使用它们来:
- 将频道设为私有(拒绝
@everyoneVIEW_CHANNEL) - 授予特定角色访问权限
- 限制特定用户/角色的某些操作
权限覆盖格式
{
"id": "role-or-user-id",
"type": "role",
"allow": ["VIEW_CHANNEL", "SEND_MESSAGES"],
"deny": ["MANAGE_MESSAGES"]
}
| 字段 | 类型 | 描述 |
|---|---|---|
id |
string | 角色ID或用户ID |
type |
字符串 | role 或 member |
allow |
array | 明确允许的权限 |
deny |
array | 明确拒绝的权限 |
示例:将类别设为私有
{
"channelId": "category-id",
"permissionOverwrites": [
{
"id": "everyone-role-id",
"type": "role",
"deny": ["VIEW_CHANNEL"]
},
{
"id": "admin-role-id",
"type": "role",
"allow": ["VIEW_CHANNEL", "SEND_MESSAGES", "MANAGE_MESSAGES"]
}
]
}
可用权限
在角色权限和权限覆盖中使用这些权限名称:
常规权限
| 权限 | 描述 |
|---|---|
ADMINISTRATOR |
完全服务器访问权限(绕过所有权限) |
VIEW_CHANNEL |
查看频道和阅读消息 |
MANAGE_CHANNELS |
创建、编辑、删除频道 |
MANAGE_ROLES |
创建、编辑、删除机器人角色下方的角色 |
MANAGE_GUILD |
更改服务器设置 |
VIEW_AUDIT_LOG |
查看服务器审核日志 |
VIEW_GUILD_INSIGHTS |
查看服务器见解 |
MANAGE_WEBHOOKS |
创建、编辑、删除webhooks |
MANAGE_GUILD_EXPRESSIONS |
管理表情符号和贴纸 |
CREATE_INSTANT_INVITE |
创建邀请链接 |
CHANGE_NICKNAME |
更改自己的昵称 |
MANAGE_NICKNAMES |
更改其他成员的昵称 |
KICK_MEMBERS |
从服务器上踢出成员 |
BAN_MEMBERS |
禁止服务器上的成员 |
MODERATE_MEMBERS |
超时成员 |
MANAGE_EVENTS |
创建和管理事件 |
文本频道权限
| 权限 | 描述 |
|---|---|
SEND_MESSAGES |
通过文本频道发送消息 |
SEND_TTS_MESSAGES |
发送文本转语音消息 |
MANAGE_MESSAGES |
删除消息、固定消息 |
EMBED_LINKS |
在消息中嵌入链接 |
ATTACH_FILES |
上传文件 |
READ_MESSAGE_HISTORY |
阅读过去的消息 |
MENTION_EVERYONE |
在此处使用@everyone和@ |
USE_EXTERNAL_EMOJIS |
使用其他服务器上的表情符号 |
USE_EXTERNAL_STICKERS |
使用其他服务器上的贴纸 |
ADD_REACTIONS |
向消息添加反应 |
MANAGE_THREADS |
管理和删除线程 |
CREATE_PUBLIC_THREADS |
创建公共线程 |
CREATE_PRIVATE_THREADS |
创建私有线程 |
SEND_MESSAGES_IN_THREADS |
在线程中发送消息 |
USE_APPLICATION_COMMANDS |
使用斜线命令 |
语音通道权限
| 权限 | 描述 |
|---|---|
CONNECT |
连接到语音频道 |
SPEAK |
在语音通道中发言 |
STREAM |
屏幕共享和视频 |
USE_VAD |
使用语音活动检测 |
PRIORITY_SPEAKER |
被别人听到 |
MUTE_MEMBERS |
将其他成员静音 |
DEAFEN_MEMBERS |
迪芬其他成员 |
MOVE_MEMBERS |
在通道之间移动成员 |
REQUEST_TO_SPEAK |
请求在舞台频道发言 |
USE_EMBEDDED_ACTIVITIES |
使用活动 |
USE_SOUNDBOARD |
使用音板 |
USE_EXTERNAL_SOUNDS |
使用外部声音 |
SEND_VOICE_MESSAGES |
发送语音信息 |
例子
创建完整的团队服务器结构
1. Select my Discord server
2. Create these roles with permissions:
- "Admin" with ADMINISTRATOR
- "Moderator" with MANAGE_MESSAGES, KICK_MEMBERS, MUTE_MEMBERS
- "Member" with VIEW_CHANNEL, SEND_MESSAGES, CONNECT, SPEAK
3. Create these categories, all private to @everyone but visible to Member role:
- "General" with channels: welcome, rules, announcements
- "Discussion" with channels: general-chat, off-topic, help
- "Voice" with voice channels: General Voice, Gaming, AFK
4. Make the "Admin" category only visible to Admin role
设置私人频道
Make the "staff-chat" channel private:
- Deny VIEW_CHANNEL to @everyone
- Allow VIEW_CHANNEL, SEND_MESSAGES, MANAGE_MESSAGES to Moderator role
- Allow VIEW_CHANNEL, SEND_MESSAGES, ADMINISTRATOR to Admin role
配置角色层次结构
Reorder roles so Admin is highest, then Moderator, then Member, then @everyone
故障排除
Bot未连接
- 验证机器人令牌是否正确
- 检查一下 所有特权网关意图 在Discord开发者门户中启用
- 确保创建了机器人用户(而不仅仅是应用程序)
无法管理角色/渠道
- 确保机器人具有 管理员 许可
- 机器人的角色必须高于其管理的角色(在服务器设置中向上拖动机器人角色)
- 验证机器人是否使用正确的OAuth2作用域被邀请(
bot和applications.commands)
权限错误
- 授予机器人 管理员 无限制访问权限
- Bot只能管理层次结构中低于其最高角色的角色
- 在服务器设置中将机器人的角色拖动到更高的位置→ Roles
未找到公会
- 确认机器人已在服务器中
- 尝试使用公会ID而不是名称
- 启用Discord开发人员模式以复制ID(用户设置→ 高级)
调试日志
默认情况下,详细每次呼叫跟踪处于关闭状态。集 DISCORD_MCP_DEBUG=1 (或 true)
在服务器环境中向stderr发出调试输出以进行故障排除
权限和API问题。
安全
- 永远不要分享你的机器人代币 -将其视为密码
- 使用环境变量 -不要将令牌提交到版本控制
- 如果令牌受损,请重新生成令牌 -在Discord开发者门户中重置
- 限制服务器访问 -仅将机器人添加到您信任的服务器
- 限制文件权限 -
chmod 600 ~/.discord-mcp/config.json
建筑
- 运行时:Node.js 18+
- 语言:TypeScript
- 不和谐API:不协调js v14
- MCP-SDK:@modelcontextprotocol/sdk
- 验证:佐德
看 CLAUDE.md 用于开发文档。
贡献
欢迎投稿!请阅读 贡献.md 作为指导方针。
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。