Discord服务器自动化管理工具

通过Discord Bot API实现服务器、频道、角色和权限的自动化管理,支持预置模板的应用。

  • by cj-vana
  • TypeScript
  • 本地部署
  • 30 星标
  • 更新于
在 GitHub 查看 cj-vana/discord-setup-mcp

使用说明

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设置

  1. 在以下位置创建应用程序https://discord.com/developers/applications
  2. 添加机器人用户并复制机器人令牌
  3. 不需要特权网关权限。 服务器仅使用 默认(非特权)帮派意图,因此您可以保留所有特权 网关意图关闭。(请求未启用的特权意图将 实际上使登录失败。)
  4. 生成OAuth2邀请URL:
    • 转到OAuth2→ URL生成器
    • 选择范围: bot 和 applications.commands
    • 选择机器人程序所需的权限-- 管理角色, 管理渠道, 和 管理服务器 涵盖当前的工具; 管理员 是 最简单的全面服务器管理。
  5. 使用生成的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(永久-系统环境变量):

  1. 按 Win + R,类型 sysdm.cpl,按Enter键
  2. 首选 高级 tab → 环境变量
  3. 在“用户变量”下,单击 新
  4. 变量名称: DISCORD_BOT_TOKEN
  5. 变量值: your-bot-token-here
  6. 单击“确定”并重新启动终端

选项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

在您的环境中设置令牌或使用配置文件方法。

用法

基本工作流程

  1. 列出服务器 机器人可以访问
  2. 选择服务器 一起工作
  3. 创建渠道、角色或应用模板

示例命令

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或名称

权限覆盖

权限覆盖允许您自定义对频道和类别的访问。使用它们来:

  • 将频道设为私有(拒绝 @everyone VIEW_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许可证-请参阅 许可证 文件以获取详细信息。

致谢