mcpField
D
discord-mcp

discord-mcp

本地服务
github.com/PaSympa通信协作293 周前更新

关于 discord-mcp

discord-mcp 是一个轻量级的 Discord MCP 服务,提供 95 个以上工具,可跨多个服务器管理消息、频道、角色、权限和审核等操作。它适合希望通过 Claude、Cursor 或 VS Code 等客户端管理 Discord 服务器的用户。

主要功能

  1. 0195 个以上工具覆盖日常服务器管理
  2. 02支持跨多个服务器运行
  3. 03通过 DISCORD_MCP_TOOLSETS 限制暴露的工具集
  4. 04通过 DISCORD_ALLOWED_GUILDS 限制可操作的服务器
  5. 05提供 npm 与 Docker 两种安装方式

适用场景

  1. 01通过自然语言读取、发送和搜索 Discord 消息
  2. 02批量管理频道权限与角色分配
  3. 03审核成员并执行清理操作,如批量删除或封禁

MCP 相关

该项目是一个 MCP 服务,向 Claude Desktop、Claude Code、Cursor、VS Code Copilot 等 MCP 客户端暴露 Discord 相关工具,并通过 Discord Bot 令牌连接服务器。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"pasympa-discord": {
"command": "npx",
"args": [
"-y",
"@pasympa/discord-mcp"
],
"env": {
"DISCORD_TOKEN": "<DISCORD_TOKEN>"
}
}
}
}
启动命令npx -y @pasympa/discord-mcp
需要配置的环境变量
DISCORD_TOKEN密钥Discord bot token

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@pasympa/discord-mcp2.2.0
ocidocker.io/pasympa/discord-mcp:2.2.0

工具

99

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

Discord MCP 服务

轻量级、多服务器 Discord MCP 服务,提供 95+ 个工具

npm License Node Discord.js MCP

discord-mcp MCP 服务

通过Claude Desktop、Claude Code、Cursor、VS Code Copilot 或任何兼容 MCP 的客户端管理你的整个 Discord 服务。 通过自然语言管理消息、频道、角色、权限、审核、论坛、Webhook 等。


为什么选择这个?

  • 95+ 个工具:消息、频道、角色、权限、审核、论坛、Webhook、定时活动、邀请、私信、嵌入消息等
  • 支持多个服务器:可在多个服务器中使用,不受 GUILD_ID 限制
  • 轻量级:TypeScript + Node.js,软件包约 70kB,Docker 镜像约 73MB(而 Java 替代方案超过 400MB)
  • 模块化:架构清晰,易于扩展新工具
  • 两种安装方式:npm 或 Docker,任你选择

快速开始

将以下内容添加到 MCP 客户端配置中,并将 YOUR_TOKEN_HERE 替换为你的机器人令牌:

{
  "mcpServers": {
    "discord": {
      "command": "npx",
      "args": ["-y", "@pasympa/discord-mcp"],
      "env": {
        "DISCORD_TOKEN": "YOUR_TOKEN_HERE"
      }
    }
  }
}

无需安装,npx 会处理所有事情。

还没有机器人?请参阅创建 Discord 机器人。


配置

Claude Desktop

将上述配置添加到你的 claude_desktop_config.json:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

保存后重启 Claude Desktop。

Claude Code
claude mcp add discord -e DISCORD_TOKEN=YOUR_TOKEN_HERE -- npx -y @pasympa/discord-mcp
Cursor

将上述配置添加到 ~/.cursor/mcp.json。详情请参阅 Cursor MCP 文档。

VS Code / GitHub Copilot

添加到你的 .vscode/mcp.json:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "discord-token",
      "description": "Discord Bot Token",
      "password": true
    }
  ],
  "servers": {
    "discord": {
      "command": "npx",
      "args": ["-y", "@pasympa/discord-mcp"],
      "env": {
        "DISCORD_TOKEN": "${input:discord-token}"
      }
    }
  }
}

详情请参阅 VS Code MCP 文档。

Docker
{
  "mcpServers": {
    "discord": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "DISCORD_TOKEN=YOUR_TOKEN_HERE",
        "pasympa/discord-mcp:latest"
      ]
    }
  }
}
从源代码安装
git clone https://github.com/PaSympa/discord-mcp
cd discord-mcp
npm install && npm run build
{
  "mcpServers": {
    "discord": {
      "command": "node",
      "args": ["/absolute/path/to/discord-mcp/dist/index.js"],
      "env": {
        "DISCORD_TOKEN": "YOUR_TOKEN_HERE"
      }
    }
  }
}
.env 文件(替代方式)

你也可以在项目根目录创建 .env 文件,而不是在 MCP 配置中传递令牌:

DISCORD_TOKEN=YOUR_TOKEN_HERE

服务会通过 dotenv 自动加载 .env。

### 环境变量
变量默认值描述
DISCORD_TOKEN无必填。 机器人令牌。
DISCORD_MESSAGE_CONTENTtrue设为 false,即可在连接时停止请求 Message Content 特权网关意图。
DISCORD_GUILD_MEMBERStrue设为 false,即可在连接时停止请求 Server Members 特权网关意图。
DISCORD_MCP_TOOLSETSall以逗号分隔的工具集列表,指定要开放的工具集,以缩减工具列表。未设置或设为 all 时开放所有工具。
DISCORD_ALLOWED_GUILDSall以逗号分隔的服务器 ID 列表,指定服务可以操作的服务器。设置后,针对其他任何服务器的工具调用都会被拒绝,无论其通过服务器 ID、频道 ID、讨论串 ID、webhook 还是邀请代码指定。

从 2.1.1 开始,服务不再请求 GuildMessages 意图:此处没有任何功能会订阅消息事件,而且服务返回的每条消息都是通过 REST 获取的,不受连接意图限制。此前,该意图会让 discord.js 缓存所有频道中流经的每条消息及其作者信息,导致长时间运行的服务中缓存无限增长。现在,缓存清理器会限制缓存规模。因此,DISCORD_MESSAGE_CONTENT 只影响连接时是否请求 Message Content 意图,不会改变任何工具返回的内容。

这些标志只控制服务在识别身份时请求哪些网关意图。请求 Developer Portal 中未启用的特权意图,会导致连接在首次工具调用时失败(关闭代码 4014);将相应标志设为 false 即可正常连接。

数据访问由门户开关控制,而非这些标志:此服务通过 REST API 读取所有数据,Discord 仅根据门户设置进行限制。因此,若门户开关已开启,将这些标志设为 false 不会造成任何数据缺失。若门户开关关闭,相应数据无论这些标志如何设置都会受到限制:消息正文会返回为空(content、embeds、attachments;机器人自己的消息、私信以及提及机器人的消息除外),成员列表请求会失败;在门户中启用该开关即可恢复访问。

工具集(DISCORD_MCP_TOOLSETS):discovery、messages、channels、permissions、members、roles、moderation、screening、stats、forums、webhooks、scheduled_events、invites、dm。例如,DISCORD_MCP_TOOLSETS=discovery,messages,members 只会开放发现、消息和成员工具。注意:工具集包含其整个模块,包括具有破坏性的工具(messages 包含批量删除;members 包含踢出/封禁);请使用 DISCORD_ALLOWED_GUILDS 和默认的试运行设置来限制其影响范围。只有列出的工具集中的工具才会被公布并可供调用。若包含未知名称,服务会在启动时失败,而不会静默开放所有工具(空值视为未设置,会开放所有工具)。


创建 Discord 机器人

  1. 前往 discord.com/developers/applications

  2. 点击 New Application > 为应用命名

  3. Bot 选项卡 > Reset Token > 复制令牌

  4. 启用 Privileged Gateway Intents(此服务默认会请求这两项,但新建的 Discord 应用在开发者门户中默认关闭这些开关):

    • Server Members Intent
    • Message Content Intent

    **重要:**如果机器人请求了此处未启用的特权意图,Discord 会以代码 4014 关闭连接,导致每次工具调用都失败。请启用两项,或者通过上方的环境变量停止请求不需要的意图。

  5. OAuth2 > URL Generator:

    • Scopes:bot
    • Permissions:Send Messages、Read Message History、Manage Channels、Manage Roles、Kick Members、Ban Members、Moderate Members、View Audit Log、Manage Messages、Manage Threads、Add Reactions、Manage Guild、Manage Webhooks、Manage Events、Create Events、Create Instant Invite、Manage Nicknames、Pin Messages、Embed Links、Create Public Threads、Send Messages in Threads
  6. 复制生成的 URL,并邀请机器人加入你的服务器


可用工具(99)

发现与导航(4 个工具)
工具描述
discord_list_guilds列出机器人已连接的所有服务器
discord_get_guild_info获取服务器详细信息(名称、成员、频道、角色、加成)
discord_list_channels按类别列出服务器中的所有频道
discord_find_channel_by_name按名称查找频道(部分匹配)
消息(20 个工具)
工具描述
discord_read_messages阅读消息,按分页回溯历史记录
discord_send_message发送纯文本消息
discord_reply_message回复特定消息
discord_edit_message编辑机器人发送的消息
discord_delete_message删除特定消息
discord_add_reaction为消息添加表情回应
discord_remove_reactions移除回应(全部、按表情或按用户)
discord_get_reactions列出使用特定表情回应的用户
discord_create_thread从消息创建帖子或创建独立帖子
discord_bulk_delete_messages一次删除多条消息(2-100 条)
discord_send_embed发送包含所有选项的丰富嵌入消息
discord_edit_embed编辑机器人之前发送的嵌入消息
discord_send_multiple_embeds在单条消息中最多发送 10 个嵌入消息
discord_pin_message置顶或取消置顶消息
discord_get_message_attachments列出消息附件及其下载 URL
discord_fetch_pinned_messages列出频道中的所有置顶消息
discord_search_messages按关键词搜索消息(最近 100 条)
discord_search_guild_messages使用 Discord 的搜索索引搜索所有频道中的消息
discord_crosspost_message将消息发布给公告频道的关注者
discord_forward_message将消息转发到另一个频道
频道(8 个工具)
工具描述
discord_create_channel创建文字频道、语音频道或分类
discord_delete_channel删除频道
discord_edit_channel编辑名称、主题、慢速模式和 NSFW 标记
discord_move_channel将频道移入或移出分类
discord_clone_channel克隆频道及其权限
discord_set_channel_position设置频道在分类中的显示位置
discord_follow_announcement_channel关注公告频道
discord_lock_channel_permissions与上级分类同步权限
频道权限(6 个工具)
工具描述
discord_get_channel_permissions列出频道上的所有权限覆盖
discord_set_role_permission允许或拒绝角色在频道中的权限
discord_set_member_permission允许或拒绝成员在频道中的权限
discord_reset_channel_permissions移除所有权限覆盖(重置为继承状态)
discord_copy_permissions将一个频道的权限覆盖复制到另一个频道
discord_audit_permissions对所有频道进行完整的权限审计
成员(11 个工具)
工具描述
discord_list_members列出服务器成员及其角色
discord_get_member_info成员详细信息(角色、权限、加入日期)
discord_search_members按用户名或昵称搜索成员
discord_set_nickname设置或清除成员的昵称
discord_kick_member踢出成员
discord_ban_member封禁成员(可选择删除近期消息)
discord_unban_member解除对用户的封禁
discord_bulk_ban一次封禁多名用户(用于应对恶意突袭)
discord_list_bans列出所有被封禁的用户
discord_timeout_member对成员实施超时(设为 0 可移除)
discord_prune_members移除不活跃成员(支持试运行)
角色(9 个工具)
工具描述
discord_list_roles列出所有角色及其权限和成员数量
discord_create_role创建新角色
discord_edit_role编辑角色(名称、颜色、权限、是否在成员列表中单独显示、是否可被提及)
discord_delete_role删除角色
discord_add_role为成员分配角色
discord_remove_role移除成员的角色
discord_get_role_members列出拥有特定角色的所有成员
discord_set_role_position更改角色在层级结构中的位置
discord_set_role_icon为角色设置自定义图标或 Unicode 表情符号
论坛(10 个工具)
工具描述
discord_get_forum_channels列出服务器中的所有论坛频道
discord_create_forum_channel创建新的论坛频道
discord_create_forum_post在论坛中创建帖子/主题
discord_get_forum_post获取帖子的详情和消息
discord_list_forum_threads列出主题(活跃和已归档)
discord_reply_to_forum回复论坛帖子
discord_delete_forum_post删除论坛主题
discord_get_forum_tags获取可用标签
discord_set_forum_tags设置/更新论坛标签
discord_update_forum_post更新标题、归档状态、锁定状态和标签
Webhook(8 个工具)
工具描述
discord_create_webhook在频道中创建 Webhook
discord_send_webhook_message通过 Webhook 发送消息(自定义用户名/头像、嵌入内容)
discord_edit_webhook修改 Webhook 的名称、头像或频道
discord_delete_webhook删除 Webhook
discord_list_webhooks列出频道或服务器的 Webhook
discord_edit_webhook_message修改 Webhook 发送的消息
discord_delete_webhook_message删除 Webhook 发送的消息
discord_fetch_webhook_message获取指定的 Webhook 消息
预定活动(7 个工具)
工具描述
discord_list_scheduled_events列出服务器中的所有预定活动
discord_get_scheduled_event获取预定活动的详细信息
discord_create_scheduled_event创建语音、舞台或外部活动
discord_edit_scheduled_event修改现有的预定活动
discord_delete_scheduled_event删除预定活动
discord_get_event_subscribers获取标记为“感兴趣”的用户
discord_create_event_invite创建与活动关联的邀请
私信(7 个工具)
工具描述
discord_send_dm根据用户 ID 向用户发送私信
discord_send_dm_embed向用户发送包含嵌入内容的私信
discord_read_dms读取私信对话的消息记录
discord_reply_dm回复指定的私信消息
discord_edit_dm修改之前发送的私信(文本)
discord_edit_dm_embed修改之前发送的私信嵌入内容
discord_delete_dm删除私信消息
邀请(5 个工具)
工具描述
discord_list_invites列出服务器中所有有效邀请
discord_list_channel_invites列出指定频道的邀请
discord_get_invite根据邀请代码获取邀请详情
discord_create_invite为频道创建邀请链接
discord_delete_invite撤销邀请
审核与筛选(3 个工具)
工具描述
discord_get_audit_log获取服务器审核日志
discord_get_membership_screening获取成员筛选表单
discord_update_membership_screening更新新成员的筛选规则
统计(1 个工具)
工具描述
discord_get_server_stats服务器统计:成员、频道、身份组、加成等级

使用示例

"List all servers the bot is in"
"Read the last 10 messages in #general"
"Send 'Hello everyone!' to the announcements channel"
"Create a forum channel called 'feedback' with tags Bug, Feature, Question"
"Show the full permission audit for the server"
"Create a webhook on #notifications and send a test message"
"Ban user 112233445566778899 and delete their messages from the last 3 days"
"Create an event called 'Game Night' for next Friday at 8pm"
"List all upcoming events in the server"
"Create a permanent invite for #general"
"List all active invites and delete expired ones"
"Send a DM to user 112233445566778899 saying 'Your build passed!'"
"Search for members named 'john'"
"List all banned users in the server"
"Show all pinned messages in #general"
"Forward that message to #announcements"

查找 Discord ID

在 Discord 中启用开发者模式: Settings > Advanced > Developer Mode

然后在服务器、频道或用户上右键单击 > 复制 ID。


项目结构

discord-mcp/
├── src/
│   ├── index.ts             ← Entry point (MCP server + transport)
│   ├── client.ts            ← Discord client + shared helpers
│   ├── constants.ts         ← Shared constants (limits, defaults)
│   ├── embeds.ts            ← Shared embed schema + builder
│   └── tools/
│       ├── index.ts         ← Tool registry (toolset gating, dispatch)
│       ├── define.ts        ← defineTool/defineModule + shared zod fields
│       ├── types.ts         ← Shared TypeScript interfaces
│       ├── discovery.ts     ← Guild/channel discovery
│       ├── messages.ts      ← Message CRUD, reactions, threads, embeds
│       ├── channels.ts      ← Channel management
│       ├── permissions.ts   ← Permission overwrites
│       ├── members.ts       ← Member management
│       ├── roles.ts         ← Role CRUD and assignment
│       ├── moderation.ts    ← Audit log
│       ├── screening.ts     ← Membership screening
│       ├── stats.ts         ← Server statistics
│       ├── forums.ts        ← Forum channels, posts, tags
│       ├── webhooks.ts      ← Webhook management
│       ├── scheduledEvents.ts ← Scheduled events
│       ├── invites.ts        ← Invite management
│       └── dm.ts             ← Direct messages
├── test/                     ← node:test suite (schemas, gating, allow-list)
├── scripts/                  ← sync-version.js (npm version hook)
├── .github/workflows/        ← CI/CD (build check + auto release)
├── Dockerfile
├── .dockerignore
├── .env.example
├── package.json
├── tsconfig.json
├── CHANGELOG.md
├── CONTRIBUTING.md
├── SECURITY.md
└── README.md
添加新工具
  1. 在 src/tools/ 中创建一个新文件(例如 events.ts)
  2. 使用 defineTool({ name, description, annotations, schema, handle }) 声明每个工具,并将 defineModule([...]) 导出为默认值
  3. 导入该模块,并将其添加到 src/tools/index.ts 中的 allToolsets(键名为其 DISCORD_MCP_TOOLSETS 名称)

安全

  • 切勿将 Discord 令牌提交到 Git
  • 使用环境变量或 .env 文件(不纳入版本控制)
  • 仅授予机器人所需的权限
  • 使用 DISCORD_ALLOWED_GUILDS 将服务限制为指定的服务器
  • 不可逆的批量操作(bulk_ban、prune_members、bulk_delete_messages、delete_channel)默认会提供 dry_run 预览;传入 dry_run:false 即可执行

贡献

欢迎贡献!

  1. Fork 此代码库
  2. 创建功能分支(git checkout -b feature/my-feature)
  3. 遵循模块化结构,参见添加新工具
  4. 提交更改并发起 pull request

许可证

许可证为 MIT,详情请参见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。