返回 MCP 目录
public公开dns本地运行

discord-node-mcp

一个基于MCP协议的Discord机器人控制服务器,提供全面的Discord服务器管理功能,包括消息发送、成员管理、角色权限、频道操作等。

article

README

🚀 Discord MCP 服务器

Discord MCP 服务器是一个基于 MCP(模型上下文协议)的服务器,它允许大语言模型(LLMs)通过机器人令牌控制 Discord 服务器。该服务器提供了全面的 Discord 管理工具,包括发送消息、管理成员、角色、频道、权限等功能。

Build License TAG

🚀 快速开始

1. 创建 Discord 机器人

  1. 访问 Discord 开发者门户
  2. 点击“新建应用程序”并为其命名。
  3. 进入“机器人”部分,点击“添加机器人”。
  4. 复制机器人令牌(请妥善保管,不要泄露!)。
  5. 启用以下特权网关意图
    • 服务器成员意图
    • 消息内容意图

2. 将机器人邀请到您的服务器

  1. 进入 OAuth2 -> URL 生成器。
  2. 选择范围:botapplications.commands
  3. 选择机器人权限(根据您需要的功能进行选择):
    • 核心权限
      • 管理频道
      • 管理角色
      • 管理消息
      • 读取消息历史记录
      • 发送消息
      • 添加反应
    • 成员管理
      • 踢出成员
      • 封禁成员
      • 管理昵称
      • 管理成员(用于超时禁言)
    • 服务器管理
      • 管理服务器(用于服务器设置)
      • 查看审核日志
      • 管理表情符号和贴纸
      • 管理 Webhook
      • 管理活动
      • 创建即时邀请
  4. 复制生成的 URL 并打开以邀请机器人。

3. 安装 MCP 服务器

选项 A:从 npm 全局安装

npm install -g @mahesvara/discord-mcpserver

选项 B:直接使用 npx 运行(无需安装)

npx @mahesvara/discord-mcpserver

✨ 主要特性

服务器管理

  • discord_list_guilds - 列出机器人可以访问的所有服务器
  • discord_get_guild - 获取特定服务器的详细信息
  • discord_edit_guild - 编辑服务器设置(名称、验证级别、系统频道等)
  • discord_leave_guild - 离开服务器

频道管理

  • discord_list_channels - 列出服务器中的频道(可按类型过滤)
  • discord_get_channel - 获取频道详细信息(包括论坛频道的标签)
  • discord_create_channel - 创建文本、语音、论坛频道和类别
  • discord_edit_channel - 编辑频道名称、主题、位置、类别、论坛标签等
  • discord_delete_channel - 删除频道或类别

论坛频道功能

  • 使用 type: "forum" 创建论坛频道
  • 设置默认反应表情符号、排序顺序和布局
  • 管理论坛标签(创建、编辑、删除)
  • 标签支持自定义表情符号和审核设置

权限管理

  • discord_set_channel_permissions - 设置频道上角色/成员的权限覆盖
  • discord_remove_channel_permissions - 移除权限覆盖
  • discord_get_channel_permissions - 查看频道上的所有权限覆盖
  • discord_sync_channel_permissions - 同步频道权限与父类别

消息操作

  • discord_send_message - 发送消息(可选择回复)
  • discord_get_messages - 检索频道消息(支持分页)
  • discord_edit_message - 编辑机器人的消息
  • discord_delete_message - 删除消息
  • discord_add_reaction - 添加表情符号反应
  • discord_remove_reaction - 移除机器人的反应
  • discord_pin_message - 固定消息
  • discord_unpin_message - 取消固定消息
  • discord_get_pinned_messages - 获取所有固定消息

成员管理

  • discord_list_members - 列出服务器成员(支持分页)
  • discord_get_member - 获取成员详细信息
  • discord_kick_member - 踢出成员
  • discord_ban_member - 封禁成员(可选择删除消息)
  • discord_unban_member - 解除用户封禁
  • discord_set_nickname - 设置/清除成员昵称
  • discord_move_member - 将成员移动到不同的语音频道
  • discord_timeout_member - 对成员进行超时禁言(最长 28 天)

角色管理

  • discord_list_roles - 列出所有服务器角色
  • discord_create_role - 创建新角色
  • discord_edit_role - 编辑角色名称、颜色、权限和设置
  • discord_delete_role - 删除角色
  • discord_add_role - 为成员分配角色
  • discord_remove_role - 从成员移除角色
  • discord_set_role_positions - 重新排序角色层次结构

服务器管理

  • discord_list_bans - 列出所有被封禁的用户
  • discord_prune_members - 移除不活跃成员(支持预演选项)
  • discord_get_audit_log - 查看审核日志条目

社区功能

  • discord_get_community_settings - 查看社区设置(规则频道、功能等)
  • discord_setup_community - 配置社区频道(规则、更新、安全警报)

欢迎屏幕

  • discord_get_welcome_screen - 获取欢迎屏幕配置
  • discord_edit_welcome_screen - 编辑欢迎屏幕(描述、频道、表情符号)

新用户引导

  • discord_get_onboarding - 获取新用户引导配置
  • discord_edit_onboarding - 编辑现有新用户引导设置
  • discord_setup_onboarding - 从头开始设置新用户引导(提示、默认频道、角色)

自动审核

  • discord_list_automod_rules - 列出自动审核规则
  • discord_get_automod_rule - 获取自动审核规则的详细信息
  • discord_create_automod_rule - 创建自动审核规则
  • discord_edit_automod_rule - 编辑自动审核规则
  • discord_delete_automod_rule - 删除自动审核规则

表情符号管理

  • discord_list_emojis - 列出自定义表情符号
  • discord_create_emoji - 从图像 URL 创建表情符号
  • discord_delete_emoji - 删除自定义表情符号

贴纸管理

  • discord_list_stickers - 列出自定义贴纸
  • discord_delete_sticker - 删除自定义贴纸

邀请管理

  • discord_list_invites - 列出活跃邀请
  • discord_create_invite - 创建频道邀请
  • discord_delete_invite - 删除邀请

Webhook 管理

  • discord_list_webhooks - 列出 Webhook(服务器或频道)
  • discord_create_webhook - 创建 Webhook
  • discord_edit_webhook - 编辑 Webhook 名称或频道
  • discord_delete_webhook - 删除 Webhook

计划活动

  • discord_list_events - 列出计划活动
  • discord_create_event - 创建计划活动(舞台、语音或外部)
  • discord_delete_event - 删除计划活动

📦 安装指南

安装 MCP 服务器

选项 A:从 npm 全局安装

npm install -g @mahesvara/discord-mcpserver

选项 B:直接使用 npx 运行(无需安装)

npx @mahesvara/discord-mcpserver

💻 使用示例

MCP 客户端配置

添加到您的 MCP 客户端配置(例如,Claude Desktop 或 Claude Code): 使用全局安装的包

{
  "mcpServers": {
    "discord": {
      "command": "discord-mcpserver",
      "env": {
        "DISCORD_BOT_TOKEN": "your_bot_token_here"
      }
    }
  }
}

使用 npx(无需安装)

{
  "mcpServers": {
    "discord": {
      "command": "npx",
      "args": ["-y", "@mahesvara/discord-mcpserver"],
      "env": {
        "DISCORD_BOT_TOKEN": "your_bot_token_here"
      }
    }
  }
}

环境变量

服务器支持从当前目录的 .env 文件加载环境变量:

DISCORD_BOT_TOKEN=your_bot_token_here
TRANSPORT=http
PORT=3000
HOST=localhost

| 变量 | 描述 | 默认值 | |------|------|---------| | DISCORD_BOT_TOKEN | 您的 Discord 机器人令牌(必需) | - | | TRANSPORT | 传输模式:stdiohttp | stdio | | PORT | HTTP 服务器端口(使用 http 传输时) | 3000 | | HOST | HTTP 服务器主机(使用 0.0.0.0 进行远程访问) | localhost |

HTTP 传输

如需远程访问,请启用 HTTP 传输运行服务器: Linux/macOS

DISCORD_BOT_TOKEN=your_token TRANSPORT=http PORT=3000 HOST=0.0.0.0 discord-mcpserver

Windows(命令提示符)

set DISCORD_BOT_TOKEN=your_token && set TRANSPORT=http && set PORT=3000 && set HOST=0.0.0.0 && discord-mcpserver

Windows(PowerShell)

$env:DISCORD_BOT_TOKEN="your_token"; $env:TRANSPORT="http"; $env:PORT="3000"; $env:HOST="0.0.0.0"; discord-mcpserver

或者使用 .env 文件(适用于所有平台)

discord-mcpserver

然后配置您的 MCP 客户端通过 HTTP 连接:

{
  "mcpServers": {
    "discord": {
      "type": "http",
      "url": "http://your-server-ip:3000/mcp"
    }
  }
}

工具使用示例

创建带有标签的论坛频道

{
  "tool": "discord_create_channel",
  "params": {
    "guild_id": "1234567890123456789",
    "name": "help-forum",
    "type": "forum",
    "topic": "Ask questions and get help",
    "default_reaction_emoji": "✅",
    "default_sort_order": "latest_activity",
    "default_forum_layout": "list_view",
    "available_tags": [
      { "name": "Solved", "emoji_name": "✅", "moderated": false },
      { "name": "Bug", "emoji_name": "🐛", "moderated": false },
      { "name": "Question", "emoji_name": "❓", "moderated": false },
      { "name": "Announcement", "emoji_name": "📢", "moderated": true }
    ]
  }
}

设置服务器新用户引导

{
  "tool": "discord_setup_onboarding",
  "params": {
    "guild_id": "1234567890123456789",
    "default_channel_ids": ["1111111111111111111"],
    "prompts": [
      {
        "type": "multiple_choice",
        "title": "What are you interested in?",
        "single_select": false,
        "required": true,
        "options": [
          { "title": "Gaming", "emoji_name": "🎮", "role_ids": ["2222222222222222222"] },
          { "title": "Tech", "emoji_name": "💻", "role_ids": ["3333333333333333333"] }
        ]
      }
    ]
  }
}

配置社区设置

{
  "tool": "discord_setup_community",
  "params": {
    "guild_id": "1234567890123456789",
    "rules_channel_id": "1111111111111111111",
    "public_updates_channel_id": "2222222222222222222",
    "description": "A friendly gaming community",
    "preferred_locale": "en-US"
  }
}

编辑欢迎屏幕

{
  "tool": "discord_edit_welcome_screen",
  "params": {
    "guild_id": "1234567890123456789",
    "enabled": true,
    "description": "Welcome to our server!",
    "welcome_channels": [
      { "channel_id": "1111111111111111111", "description": "Read the rules", "emoji_name": "📜" },
      { "channel_id": "2222222222222222222", "description": "Introduce yourself", "emoji_name": "👋" }
    ]
  }
}

创建类别

{
  "tool": "discord_create_channel",
  "params": {
    "guild_id": "1234567890123456789",
    "name": "Bot Testing",
    "type": "category"
  }
}

在类别中创建频道

{
  "tool": "discord_create_channel",
  "params": {
    "guild_id": "1234567890123456789",
    "name": "bot-commands",
    "type": "text",
    "topic": "Channel for bot interactions",
    "parent_id": "CATEGORY_ID_HERE"
  }
}

设置频道权限

{
  "tool": "discord_set_channel_permissions",
  "params": {
    "channel_id": "1234567890123456789",
    "target_id": "ROLE_ID_HERE",
    "target_type": "role",
    "allow": ["ViewChannel", "SendMessages", "ReadMessageHistory"],
    "deny": ["CreatePublicThreads"]
  }
}

常见权限名称

  • 查看与访问
    • ViewChannel - 查看频道
  • 消息
    • SendMessagesReadMessageHistoryManageMessages
    • EmbedLinksAttachFilesAddReactions
    • UseExternalEmojisUseExternalStickers
    • MentionEveryone
  • 线程
    • CreatePublicThreadsCreatePrivateThreads
    • SendMessagesInThreadsManageThreads
  • 语音
    • ConnectSpeakStream
    • MuteMembersDeafenMembersMoveMembers
    • UseVADPrioritySpeaker
  • 管理
    • ManageChannelsManageRolesManageWebhooks

发送消息

{
  "tool": "discord_send_message",
  "params": {
    "channel_id": "1234567890123456789",
    "content": "Hello from the MCP server!"
  }
}

分配角色

{
  "tool": "discord_add_role",
  "params": {
    "guild_id": "1234567890123456789",
    "user_id": "9876543210987654321",
    "role_id": "1111111111111111111"
  }
}

编辑角色权限

{
  "tool": "discord_edit_role",
  "params": {
    "guild_id": "1234567890123456789",
    "role_id": "1111111111111111111",
    "name": "Moderators",
    "color": 3447003,
    "permissions": ["KickMembers", "BanMembers", "ManageMessages", "ModerateMembers"]
  }
}

重新排序角色层次结构

{
  "tool": "discord_set_role_positions",
  "params": {
    "guild_id": "1234567890123456789",
    "positions": [
      { "role_id": "1111111111111111111", "position": 5 },
      { "role_id": "2222222222222222222", "position": 4 }
    ]
  }
}

对成员进行超时禁言

{
  "tool": "discord_timeout_member",
  "params": {
    "guild_id": "1234567890123456789",
    "user_id": "9876543210987654321",
    "duration_minutes": 60,
    "reason": "Spamming in chat"
  }
}

创建邀请

{
  "tool": "discord_create_invite",
  "params": {
    "channel_id": "1234567890123456789",
    "max_age": 86400,
    "max_uses": 10,
    "temporary": false
  }
}

创建计划活动

{
  "tool": "discord_create_event",
  "params": {
    "guild_id": "1234567890123456789",
    "name": "Community Game Night",
    "description": "Join us for games!",
    "scheduled_start_time": "2024-12-01T20:00:00Z",
    "entity_type": "voice",
    "channel_id": "1111111111111111111"
  }
}

角色权限名称

编辑角色时,请使用以下权限名称:

  • 通用
    • Administrator - 完全访问权限(谨慎使用)
    • ManageGuildManageRolesManageChannels
    • KickMembersBanMembersModerateMembers
    • ViewAuditLogViewGuildInsights
  • 消息
    • SendMessagesManageMessagesReadMessageHistory
    • EmbedLinksAttachFilesAddReactions
    • MentionEveryoneUseExternalEmojis
  • 语音
    • ConnectSpeakStream
    • MuteMembersDeafenMembersMoveMembers
  • 其他
    • ManageWebhooksManageEmojisAndStickers
    • ManageEventsCreateEvents

📚 详细文档

响应格式

大多数读取操作支持两种响应格式:

  • json(默认):用于程序处理的结构化数据
  • markdown:人类可读的格式化输出

错误处理

所有工具在操作失败时都会返回清晰的错误消息和建议,可能的错误包括:

  • 缺少权限
  • 无效的 ID(服务器、频道、用户、角色、消息)
  • 速率限制
  • 网络问题

安全注意事项

  • 切勿提交您的机器人令牌 - 使用环境变量
  • 机器人只能在被邀请的服务器中操作
  • 破坏性操作(删除、踢出、封禁)会标记 destructiveHint: true
  • 所有输入均使用 Zod 模式进行验证

所需机器人权限

根据您使用的工具,您的机器人需要以下权限: | 工具类别 | 所需权限 | |--------------|---------------------| | 消息 | 发送消息、读取消息历史记录、管理消息 | | 频道 | 管理频道 | | 权限 | 管理角色(用于频道权限覆盖) | | 成员 | 踢出成员、封禁成员、管理昵称、管理成员 | | 角色 | 管理角色 | | 反应 | 添加反应 | | 服务器设置 | 管理服务器 | | 表情符号/贴纸 | 管理表情符号和贴纸 | | 邀请 | 创建即时邀请、管理服务器 | | Webhook | 管理 Webhook | | 活动 | 管理活动 | | 审核日志 | 查看审核日志 | | 社区/新用户引导 | 管理服务器 |

📄 许可证

本项目采用 MIT 许可证。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端