内容
<div align="center">
<img src="assets/img/Discord_MCP_full_logo.svg" width="60%" alt="DeepSeek-V3" />
</div>
<hr>
<div align="center" style="line-height: 1;">
<a href="https://github.com/modelcontextprotocol/servers" target="_blank" style="margin: 2px;">
<img alt="MCP 服务器" src="https://badge.mcpx.dev?type=server" style="display: inline-block; vertical-align: middle;"/>
</a>
<a href="https://discord.gg/5Uvxe5jteM" target="_blank" style="margin: 2px;">
<img alt="Discord" src="https://img.shields.io/discord/936242526120194108?color=7389D8&label&logo=discord&logoColor=ffffff" style="display: inline-block; vertical-align: middle;"/>
</a>
<a href="https://github.com/SaseQ/discord-mcp/blob/main/LICENSE" target="_blank" style="margin: 2px;">
<img alt="MIT 许可证" src="https://img.shields.io/github/license/SaseQ/discord-mcp" style="display: inline-block; vertical-align: middle;"/>
</a>
</div>
## 📖 描述
一个适用于 Discord API 的 [模型上下文协议(MCP)](https://modelcontextprotocol.io/introduction) 服务器,使用 [(JDA)](https://jda.wiki/),旨在将 Discord 机器人与 MCP 兼容的应用程序(如 Claude、ChatGPT 等)集成。它允许 AI 助手通过管理频道、发送消息和检索服务器信息与 Discord 交互。适用于构建强大的 Discord 自动化和 AI 驱动的工作流程。
## 🔬 安装
### ► 🐳 Docker 安装(推荐)
> [!NOTE]
> 需要 Docker 安装。完整说明可在 [docker.com](https://www.docker.com/products/docker-desktop/) 上找到。
#### 1) 设置本地环境变量
```bash
export DISCORD_TOKEN="您的Discord机器人令牌"
export DISCORD_GUILD_ID="可选的默认服务器ID"
export SPRING_PROFILES_ACTIVE=http
```
> [!IMPORTANT]
> 创建 Discord 机器人并获取其令牌的说明可在 [此处](https://discordjs.guide/legacy/preparations/app-setup) 找到。
> [!TIP]
> `DISCORD_GUILD_ID` 环境变量是可选的。
>
> 当提供时,它设置一个默认的 Discord 服务器 ID,以便任何接受 `guildId` 参数的工具都可以省略它。
#### 2) 运行 Docker 容器
```bash
docker run -d -i \
--name discord-mcp \
--restart unless-stopped \
-p 8085:8085 \
-e SPRING_PROFILES_ACTIVE \
-e DISCORD_TOKEN \
-e DISCORD_GUILD_ID \
saseq/discord-mcp:latest
```
默认 MCP 端点 URL(HTTP 配置文件):`http://localhost:8085/mcp`
<details>
<summary style="font-size: 1.35em; font-weight: bold;">
🐋 Docker Compose 安装
</summary>
#### 1) 克隆仓库
```bash
git clone https://github.com/SaseQ/discord-mcp
```
#### 2) 进入项目目录
```bash
cd discord-mcp
```
#### 3) 创建本地运行时环境
```bash
cat > .env <<EOF
SPRING_PROFILES_ACTIVE=http
DISCORD_TOKEN=<您的Discord机器人令牌>
DISCORD_GUILD_ID=<可选的默认服务器ID>
EOF
```
#### 4) 启动一个共享的 MCP 服务器容器
```bash
docker compose up -d --build
```
#### 5) 验证
```bash
docker ps --filter name=discord-mcp
curl -fsS http://localhost:8085/actuator/health
```
> [!TIP]
> 您不需要手动设置 `LOGGING_PATTERN_CONSOLE`。
> logging 已自动为 `http` 和旧版 `stdio` 模式配置。
默认 MCP 端点 URL(HTTP 配置文件):`http://localhost:8085/mcp`
健康端点(执行器):`http://localhost:8085/actuator/health`
</details>
<details>
<summary style="font-size: 1.35em; font-weight: bold;">
🔧 手动安装
</summary>
#### 1) 克隆仓库
```bash
git clone https://github.com/SaseQ/discord-mcp
```
#### 2) 构建项目
> 注意:需要 Maven 安装才能使用 `mvn` 命令。完整说明可在 [此处](https://www.baeldung.com/install-maven-on-windows-linux-mac) 找到。
```bash
cd discord-mcp
mvn clean package # jar 文件将在 /target 目录中可用
```
#### 3) 配置 AI 客户端
以长运行模式运行 JAR 服务器:
```bash
DISCORD_TOKEN=<您的Discord机器人令牌> \
DISCORD_GUILD_ID=<可选的默认服务器ID> \
SPRING_PROFILES_ACTIVE=http \
java -jar /absolute/path/to/discord-mcp-1.0.0.jar
```
> 注意:`DISCORD_GUILD_ID` 环境变量是可选的。当提供时,它设置一个默认的 Discord 服务器 ID,以便任何接受 `guildId` 参数的工具都可以省略它。
默认 MCP 端点 URL(HTTP 配置文件):`http://localhost:8085/mcp`
</details>
## 🔗 连接
### ► 🗞️ 默认 config.json 连接
推荐(HTTP 单例模式):
```json
{
"mcpServers": {
"discord-mcp": {
"url": "http://localhost:8085/mcp"
}
}
}
```
旧模式(stdio, 为每个客户端会话启动一个新进程/容器):
```json
{
"mcpServers": {
"discord-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"DISCORD_TOKEN=<您的Discord机器人令牌>",
"-e",
"DISCORD_GUILD_ID=<可选的默认服务器ID>",
"saseq/discord-mcp:latest"
]
}
}
}
```
<details>
<summary style="font-size: 1.35em; font-weight: bold;">
⌨️ Claude 代码连接
</summary>
推荐(HTTP 单例模式):
```bash
claude mcp add discord-mcp --transport http http://localhost:8085/mcp
```
旧模式(stdio, 为每个客户端会话启动一个新进程/容器):
```bash
claude mcp add discord-mcp -- docker run --rm -i -e DISCORD_TOKEN=<您的Discord机器人令牌> -e DISCORD_GUILD_ID=<可选的默认服务器ID> saseq/discord-mcp:latest
```
</details>
<details>
<summary style="font-size: 1.35em; font-weight: bold;">
🤖 Codex CLI 连接
</summary>
```bash
codex mcp add discord-mcp --url http://localhost:8085/mcp
codex mcp list
```
</details>
<details>
<summary style="font-size: 1.35em; font-weight: bold;">
🦞 OpenClaw 连接
</summary>
运行此命令:
```bash
openclaw mcp set discord-mcp '{"url":"http://localhost:8085/mcp","transport":"streamable-http"}'
openclaw mcp list
```
或
将以下配置粘贴到您的 OpenClaw `~/.openclaw/config.json` 文件中:
```json
{
"mcp": {
"servers": {
"discord-mcp": {
"url": "http://localhost:8085/mcp",
"transport": "streamable-http"
}
}
}
}
```
</details>
<details>
<summary style="font-size: 1.35em; font-weight: bold;">
🖲 Cursor 连接
</summary>
前往:`设置` -> `Cursor 设置` -> `MCP` -> `添加新的全局 MCP 服务器`
将以下配置粘贴到您的 Cursor `~/.cursor/mcp.json` 文件中是推荐的方法。您也可以在特定项目中安装,方法是创建项目文件夹中的 `.cursor/mcp.json`。有关更多信息,请参见 [Cursor MCP 文档](https://docs.cursor.com/context/model-context-protocol)。
```json
{
"mcpServers": {
"discord-mcp": {
"url": "http://localhost:8085/mcp"
}
}
}
```
</details>
<details>
<summary style="font-size: 1.35em; font-weight: bold;">
🚀 n8n 连接
</summary>
#### 在 n8n 中连接
1. 打开 n8n 并添加一个 **MCP 客户端** 节点。
2. 选择 **HTTP** 或 **Streamable HTTP** 传输(取决于您的 n8n 版本/节点选项)。
3. 将服务器 URL 设置为:`http://localhost:8085/mcp`
4. 保存节点并测试连接。
5. 连接后,您可以在工作流中使用 `discord-mcp` 暴露的可用 Discord 工具。
#### 注意
- 如果 n8n 在 Docker 中运行,`localhost` 可能指向 n8n 容器本身,而不是您的主机。
- 在这种情况下,请使用 Docker 服务名称或另一个可访问的主机,例如:`http://discord-mcp:8085/mcp`
</details>
<details>
<summary style="font-size: 1.35em; font-weight: bold;">
🖥 Claude 桌面连接
</summary>
STDIO 本地配置(默认,旧版):
> 将以下配置粘贴到您的 Claude 桌面 `claude_desktop_config.json` 文件中。
```json
{
"mcpServers": {
"discord-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"DISCORD_TOKEN=<您的Discord机器人令牌>",
"-e",
"DISCORD_GUILD_ID=<可选的默认服务器ID>",
"saseq/discord-mcp:latest"
]
}
}
}
```
远程 MCP 连接器:
1. 打开 Claude 桌面并前往 `设置` -> `连接器`。
2. 添加自定义连接器并将 MCP URL 设置为您的服务器端点(例如 `https://<PUBLIC_HOST>/mcp`)。
3. 保存并重新连接。
> Claude 桌面远程连接器通过连接器 UI 管理(不是 `claude_desktop_config.json`)。
> `http://localhost:8085/mcp` 只能从您的机器访问。对于 Claude 桌面远程连接器,请使用公共 HTTPS(例如隧道/反向代理)。
</details>
## 🛠️ 可用工具
#### 服务器信息
- [`get_server_info`](): 获取详细的 Discord 服务器信息
#### 用户管理
- [`get_user_id_by_name`](): 通过用户名在公会中获取 Discord 用户的 ID,用于 ping 用法 `<@id>`
- [`send_private_message`](): 向特定用户发送私信
- [`edit_private_message`](): 编辑特定用户的私信
- [`delete_private_message`](): 删除特定用户的私信
- [`read_private_messages`](): 读取特定用户的私信历史(包括附件元数据,支持 `count` 1-100 和可选的光标:`before` 或 `after` 或 `around`)
#### 消息管理
- [`send_message`](): 向特定频道发送消息
- [`edit_message`](): 编辑特定频道的消息
- [`delete_message`](): 删除特定频道的消息
- [`read_messages`](): 读取特定频道的消息历史(包括附件元数据,支持 `count` 1-100 和可选的光标:`before` 或 `after` 或 `around`)
- [`add_reaction`](): 向特定消息添加反应(表情符号)
- [`remove_reaction`](): 从消息中删除指定的反应(表情符号)
#### 频道管理
- [`create_text_channel`](): 创建新的文本频道
- [`edit_text_channel`](): 编辑文本频道的设置(名称、主题、nsfw、slowmode、类别、位置)
- [`delete_channel`](): 删除频道
- [`find_channel`](): 通过名称和服务器 ID 查找频道类型和 ID
- [`list_channels`](): 所有频道的列表
- [`get_channel_info`](): 获取关于频道的详细信息
- [`move_channel`](): 将频道移动到另一个类别和/或更改其位置
#### 类别管理
- [`create_category`](): 创建新的类别用于频道
- [`edit_category`](): 编辑类别(重命名或移动位置)
- [`delete_category`](): 删除类别
- [`find_category`](): 通过名称和服务器 ID 查找类别 ID
- [`list_channels_in_category`](): 特定类别中的频道列表
#### Webhook 管理
- [`create_webhook`](): 在特定频道上创建新的 webhook
- [`delete_webhook`](): 删除 webhook
- [`list_webhooks`](): 特定频道上的 webhook 列表
- [`send_webhook_message`](): 通过 webhook 发送消息
#### 角色管理
- [`list_roles`](): 获取服务器上所有角色及其详细信息的列表
- [`create_role`](): 在服务器上创建新的角色
- [`edit_role`](): 修改现有角色的设置
- [`delete_role`](): 从服务器上永久删除角色
- [`assign_role`](): 将角色分配给用户
- [`remove_role`](): 从用户身上移除角色
#### 版主和用户管理
- [`kick_member`](): 将成员从服务器踢出
- [`ban_member`](): 禁止用户访问服务器
- [`unban_member`](): 移除对用户的禁令
- [`timeout_member`](): 禁用成员的通信一段指定的时间
- [`remove_timeout`](): 在超时到期前移除成员的超时(取消静音)
- [`set_nickname`](): 更改成员在服务器上的昵称
- [`get_bans`](): 返回服务器上被禁用的用户列表及其禁令原因
#### 语音和舞台频道管理
- [`create_voice_channel`](): 在公会中创建新的语音频道
- [`create_stage_channel`](): 为音频事件创建新的舞台频道
- [`edit_voice_channel`](): 编辑语音或舞台频道的设置(名称、比特率、用户限制、区域)
- [`move_member`](): 将成员移动到另一个语音频道
- [`disconnect_member`](): 从当前语音频道断开成员
- [`modify_voice_state`](): 在语音频道中对成员进行静音或解除静音
#### 预定事件管理
- [`create_guild_scheduled_event`](): 在服务器上安排新的事件(语音、舞台或外部)
- [`edit_guild_scheduled_event`](): 修改事件详细信息或更改其状态(开始、完成、取消)
- [`delete_guild_scheduled_event`](): 永久删除预定事件
- [`list_guild_scheduled_events`](): 列出服务器上的所有活动和预定事件
- [`get_guild_scheduled_event_users`](): 获取对预定事件感兴趣的用户列表
#### 频道权限覆盖
- [`list_channel_permission_overwrites`](): 列出频道的权限覆盖列表,包含角色/成员明细
- [`upsert_role_channel_permissions`](): 为频道的角色创建或更新权限覆盖
- [`upsert_member_channel_permissions`](): 为频道的成员创建或更新权限覆盖
- [`delete_channel_permission_overwrite`](): 删除频道的角色或成员的权限覆盖
#### 邀请管理
- [`create_invite`](): 为特定频道创建新的邀请链接
- [`list_invites`](): 列出服务器上的所有活动邀请及其统计信息
- [`delete_invite`](): 删除(撤销)邀请,使链接停止工作
- [`get_invite_details`](): 获取特定邀请的详细信息(适用于任何公开邀请)
#### 论坛管理
- [`create_forum_channel`](): 创建新的论坛频道
- [`edit_forum_channel`](): 编辑论坛频道的设置(名称、主题、nsfw、slowmode、类别、位置、默认排序、默认布局)
- [`list_forum_channels`](): 列出服务器上的所有论坛频道
- [`get_forum_channel_info`](): 获取关于论坛频道的详细信息,包括标签和设置
- [`list_forum_tags`](): 列出论坛频道的所有可用标签
- [`create_forum_post`](): 在论坛频道中创建新的论坛帖子(线程)并附上初始消息
- [`list_forum_posts`](): 列出论坛频道中的活动帖子(线程)
- [`modify_forum_post`](): 修改论坛帖子:锁定/解锁、存档/取消存档、固定/取消固定或更改应用的标签
#### 表情管理
- [`list_emojis`](): 列出服务器上的所有自定义表情符号
- [`get_emoji_details`](): 获取特定自定义表情符号的详细信息
- [`create_emoji`](): 上传新的自定义表情符号到服务器(base64 或图像 URL,最大 256KB)
- [`edit_emoji`](): 编辑现有表情符号的名称或角色限制
- [`delete_emoji`](): 从服务器上永久删除自定义表情符号
> 如果设置了 `DISCORD_GUILD_ID`,则上述所有工具的 `guildId` 参数变为可选。
<hr>
更多示例可在 [Wiki](https://github.com/SaseQ/discord-mcp/wiki) 中找到。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器