返回市场
discord代理mcp

discord代理mcp

作者:aj-geddes2 星标更新:2025-10-24

项目介绍

Discord MCP 服务器

用于AI辅助的Discord管理和自动化的生产就绪型模型上下文协议(MCP)服务器。通过MCP协议提供71种工具,实现全面的Discord API集成。

特性

  • 71个Discord工具:涵盖消息、频道、线程、角色、成员、管理、表情符号、贴纸、预定事件、自动管理以及应用命令的完整API支持。
  • 符合MCP协议:完全实现了模型上下文协议,以集成AI助手。
  • 持久连接:具有自动重连功能的强大Discord.js客户端。
  • 生产就绪:使用TypeScript,具备全面的错误处理和结构化日志记录。
  • 灵活部署:可以在本地运行、Docker容器或Kubernetes集群中运行。
  • 多种传输模式:支持HTTP和stdio模式。
  • Claude Code原生集成:与Anthropic的Claude Code CLI的一级集成。

目录

开始使用

先决条件

  • Node.js >= 20.0.0
  • Discord机器人令牌 - 请参阅Discord机器人设置
  • npm 或 yarn 用于依赖项管理

快速克隆并运行

# 克隆仓库
git clone https://github.com/aj-geddes/discord-agent-mcp.git
cd discord-agent-mcp

# 安装依赖项
npm install

# 创建您的配置
cp .env.example .env
# 编辑 .env 并添加您的 DISCORD_TOKEN

# 构建项目
npm run build

# 启动MCP服务器
npm start

服务器默认将在 http://localhost:3000 上启动。

Discord机器人设置

在使用此MCP服务器之前,您需要创建一个Discord机器人并将其邀请到您的服务器。

1. 创建Discord应用程序

  1. 访问Discord开发者门户
  2. 点击**“新建应用”**并为其命名
  3. 在左侧边栏导航到**“机器人”**部分
  4. 点击**“添加机器人”**并确认

2. 获取您的机器人令牌

  1. 机器人部分,点击**“重置令牌”**生成新的令牌
  2. 复制该令牌 - 您将在.env文件中需要它
  3. ⚠️ 切勿公开分享此令牌 - 就像密码一样对待它

3. 配置机器人权限

机器人部分,启用这些特权网关意图

  • 存在意图(可选 - 用于成员状态)
  • 服务器成员意图(必需 - 用于成员管理)
  • 消息内容意图(必需 - 用于读取消息)

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

  1. 转到OAuth2 > URL生成器部分
  2. 选择范围:
    • bot
    • applications.commands
  3. 选择机器人权限(或选择管理员以获得完全访问权限):
    • 管理频道
    • 管理角色
    • 管理消息
    • 读取消息/查看频道
    • 发送消息
    • 管理线程
    • 管理成员
  4. 复制生成的URL并在浏览器中打开
  5. 选择您的服务器并点击授权

5. 配置您的环境

# 在您的 discord-agent-mcp 目录中
cp .env.example .env

编辑.env并添加您的令牌:

DISCORD_TOKEN=your_bot_token_here
TRANSPORT_MODE=http
HTTP_PORT=3000
LOG_LEVEL=info
LOG_FORMAT=json

本地使用

在本地运行服务器

MCP服务器可以直接在您的机器上运行,无需Docker或Kubernetes。

# 开发模式(带自动重新加载)
npm run dev

# 生产模式
npm run build
npm start

服务器将记录其启动:

{"level":"info","message":"正在启动Discord MCP服务器","version":"2.0.0","transportMode":"http"}
{"level":"info","message":"Discord客户端连接成功"}
{"level":"info","message":"MCP服务器正在运行于 http://localhost:3000/mcp"}

测试服务器

# 健康检查
curl http://localhost:3000/health

# 列出可用工具
curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq

使用任何MCP客户端

服务器实现了标准的MCP协议,并且可以与任何兼容MCP的客户端一起工作:

// 示例:使用MCP客户端库
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const client = new Client({
  name: "my-discord-client",
  version: "1.0.0"
});

await client.connect({
  url: "http://localhost:3000/mcp",
  transport: "http"
});

// 列出可用工具
const tools = await client.listTools();

// 调用工具
const result = await client.callTool({
  name: "send_message",
  arguments: {
    channelId: "your-channel-id",
    content: "来自MCP的问候!"
  }
});

Claude Code集成

使用Claude Code CLI设置

  1. 在本地启动MCP服务器:

    npm start
    # 服务器运行于 http://localhost:3000/mcp
    
  2. 将服务器添加到Claude Code:

    claude mcp add --transport http discord-agent http://localhost:3000/mcp
    
  3. 验证连接:

    claude mcp list
    # 应显示:discord-agent: http://localhost:3000/mcp (HTTP)
    
  4. 在Claude Code中使用:

    • 打开Claude Code
    • 输入 /mcp 查看可用服务器
    • 现有71个Discord工具现在可以通过 mcp__discord-agent__ 前缀使用

替代方案:项目特定配置

在项目根目录创建 .mcp.json

{
  "mcpServers": {
    "discord-agent": {
      "type": "http",
      "url": "http://localhost:3000/mcp"
    }
  }
}

在Claude Code中的示例使用

一旦配置完成,您可以在Claude Code对话中直接使用Discord工具:

您: "向频道123456789发送一条消息说'团队,你好!'"

Claude: 我会使用discord-agent MCP服务器来发送这条消息。
[使用 mcp__discord-agent__send_message 工具]

Claude: ✅ 消息已成功发送到频道123456789
您: "列出服务器中的所有频道"

Claude: 让我为您获取服务器频道。
[使用 mcp__discord-agent__list_channels 工具]

Claude: 找到了25个频道:
- 📢 公告 (文本)
- 💬 通用 (文本)
- 🗣️ 语音聊天 (语音)
...

Docker部署

使用Docker构建和运行

# 构建镜像
docker build -t discord-mcp-server:latest .

# 运行容器
docker run -d \
  --name discord-mcp \
  -p 3000:3000 \
  -e DISCORD_TOKEN=your_token_here \
  discord-mcp-server:latest

# 查看日志
docker logs -f discord-mcp

# 停止容器
docker stop discord-mcp

使用Docker Compose

创建 docker-compose.yml

version: '3.8'
services:
  discord-mcp:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DISCORD_TOKEN=${DISCORD_TOKEN}
      - TRANSPORT_MODE=http
      - HTTP_PORT=3000
      - LOG_LEVEL=info
    restart: unless-stopped

运行:

docker-compose up -d

Kubernetes部署

先决条件

  • Kubernetes集群(K3s、K3d、minikube或云提供商)
  • 配置好的 kubectl

部署到Kubernetes

  1. 构建并加载镜像(对于本地集群如K3d):

    docker build -t discord-mcp-server:latest .
    k3d image import discord-mcp-server:latest -c your-cluster-name
    
  2. 创建包含您的机器人令牌的秘密:

    cp k8s/secret.yaml.example k8s/secret.yaml
    # 编辑 k8s/secret.yaml 并替换 YOUR_DISCORD_BOT_TOKEN_HERE
    
  3. 部署到集群:

    kubectl apply -f k8s/namespace.yaml
    kubectl apply -f k8s/secret.yaml
    kubectl apply -f k8s/configmap.yaml
    kubectl apply -f k8s/deployment.yaml
    kubectl apply -f k8s/service.yaml
    
  4. 验证部署:

    kubectl get pods -n discord-agent-mcp
    kubectl logs -n discord-agent-mcp -l app=discord-mcp-server -f
    
  5. 访问服务器:

    # 端口转发到localhost
    kubectl port-forward -n discord-agent-mcp svc/discord-mcp-server 3000:3000
    
    # 测试连接
    curl http://localhost:3000/health
    

可用工具(71个)

消息(10个工具)

  • send_message - 向频道发送文本消息
  • send_rich_message - 发送带有图片和样式的格式化嵌入
  • send_message_with_file - 发送带有附件的消息
  • read_messages - 从频道检索消息历史
  • edit_message - 编辑现有消息
  • delete_message - 删除特定消息
  • bulk_delete_messages - 一次性删除多个消息(最多100条)
  • add_reaction - 向消息添加表情反应
  • pin_message - 固定重要消息
  • unpin_message - 解除固定消息

频道管理(10个工具)

  • list_channels - 列出服务器中的所有频道
  • get_channel_details - 获取详细的频道信息
  • create_text_channel - 创建新的文本频道
  • create_voice_channel - 创建新的语音频道
  • create_category - 创建类别以组织频道
  • create_forum_channel - 创建讨论论坛频道
  • create_stage_channel - 创建活动舞台频道
  • modify_channel - 更新频道设置(名称、主题、慢速模式)
  • delete_channel - 删除频道
  • set_channel_permissions - 配置频道特定权限

线程管理(3个工具)

  • find_threads - 按名称搜索论坛中的线程
  • create_thread - 在频道中创建新线程
  • archive_thread - 归档并锁定线程

服务器管理(6个工具)

  • get_server_info - 获取详细的服务器信息
  • modify_server - 更新服务器名称、描述、设置
  • get_audit_logs - 检索审核日志条目
  • list_webhooks - 列出服务器中的所有网络钩子
  • create_webhook - 创建新的网络钩子
  • get_invites - 列出活跃的邀请链接
  • create_invite - 创建新的邀请链接

成员管理(3个工具)

  • get_member_info - 获取详细的成员信息
  • list_members - 列出所有成员,可选过滤
  • set_nickname - 更改成员的服务器昵称

角色管理(6个工具)

  • assign_role - 向成员分配角色
  • remove_role - 从成员移除角色
  • create_role - 创建具有权限的新角色
  • delete_role - 删除角色
  • modify_role - 更新角色设置和权限
  • list_roles - 列出服务器中的所有角色
  • get_role_info - 获取详细的角色信息

管理(5个工具)

  • kick_member - 移除成员(他们可以重新加入)
  • ban_member - 将成员从服务器中禁言
  • unban_member - 移除禁言
  • timeout_member - 暂时禁言成员
  • remove_timeout - 移除成员的禁言
  • get_bans - 列出所有被禁言的用户

表情符号管理(4个工具) 🆕

  • list_guild_emojis - 获取服务器的所有自定义表情符号
  • create_emoji - 从base64或文件路径上传自定义表情符号
  • modify_emoji - 更新表情符号名称或角色限制
  • delete_emoji - 删除自定义表情符号

贴纸管理(4个工具) 🆕

  • list_guild_stickers - 获取服务器的所有自定义贴纸
  • create_sticker - 上传自定义贴纸(PNG/APNG/Lottie)
  • modify_sticker - 更新贴纸名称、描述或标签
  • delete_sticker - 删除自定义贴纸

预定事件(6个工具)

  • list_scheduled_events - 获取服务器的所有预定事件
  • get_event_details - 获取特定事件的详细信息
  • create_scheduled_event - 创建舞台、语音或外部事件
  • modify_scheduled_event - 更新事件属性和状态
  • delete_scheduled_event - 删除或取消事件
  • get_event_users - 获取对事件感兴趣的用户列表

自动管理(5个工具) 🆕

  • list_automod_rules - 获取服务器的所有自动管理规则
  • get_automod_rule - 获取特定规则的详细信息
  • create_automod_rule - 创建关键词、垃圾邮件或提及过滤规则
  • modify_automod_rule - 更新规则设置、关键词或操作
  • delete__automod_rule - 删除自动管理规则

应用命令(6个工具) 🆕

  • list_application_commands - 列出所有斜杠命令(服务器或全局)
  • get_application_command - 获取命令的详细信息
  • create_application_command - 创建斜杠命令或上下文菜单
  • modify_application_command - 更新命令属性
  • delete_application_command - 删除斜杠命令
  • bulk_overwrite_commands - 一次同步所有命令

资源

  • discord://guilds - 列出机器人连接的所有服务器

注意:动态的服务器特定资源(频道、角色、成员)将在未来的发布中添加,当MCP SDK支持URI模板时。使用相应的工具(list_channels、list_roles、list_members等)来访问服务器特定数据。

提示(总计8个) 🆕

  • moderate-channel - 交互式频道管理助手
  • create-announcement - 分步公告创建指南
  • setup-server - 组织新服务器结构的交互式向导
  • create-scheduled-event - 引导事件创建,包括时间选择和类型选择
  • configure-automod-rule - 自动管理规则设置(第3阶段预览)
  • audit-permissions - 安全审计和权限分析
  • setup-welcome-automation - 配置欢迎消息和自动角色

配置

环境变量

创建一个.env文件(使用.env.example作为模板):

变量必需默认值描述
DISCORD_TOKEN-您的Discord机器人令牌
TRANSPORT_MODEhttp传输模式:httpstdio
HTTP_PORT3000HTTP服务器端口
LOG_LEVELinfo日志级别:debuginfowarnerror
LOG_FORMATjson日志格式:jsonpretty

传输模式

HTTP模式(默认):

  • 服务器监听HTTP端口
  • 适用于远程连接
  • 与Claude Code HTTP传输兼容
  • 支持多个并发客户端

Stdio模式

  • 通过stdin/stdout通信
  • 适用于本地进程集成
  • 对本地客户端延迟较低
  • 只支持单个客户端

开发

项目结构

discord-agent-mcp/
├── src/
│   ├── server/          # MCP服务器实现
│   │   ├── index.ts    # 主服务器入口点
│   │   └── config.ts   # 配