用于AI辅助的Discord管理和自动化的生产就绪型模型上下文协议(MCP)服务器。通过MCP协议提供71种工具,实现全面的Discord API集成。
# 克隆仓库
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 上启动。
在使用此MCP服务器之前,您需要创建一个Discord机器人并将其邀请到您的服务器。
.env文件中需要它在机器人部分,启用这些特权网关意图:
botapplications.commands# 在您的 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客户端库
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的问候!"
}
});
在本地启动MCP服务器:
npm start
# 服务器运行于 http://localhost:3000/mcp
将服务器添加到Claude Code:
claude mcp add --transport http discord-agent http://localhost:3000/mcp
验证连接:
claude mcp list
# 应显示:discord-agent: http://localhost:3000/mcp (HTTP)
在Claude Code中使用:
/mcp 查看可用服务器mcp__discord-agent__ 前缀使用在项目根目录创建 .mcp.json:
{
"mcpServers": {
"discord-agent": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}
一旦配置完成,您可以在Claude Code对话中直接使用Discord工具:
您: "向频道123456789发送一条消息说'团队,你好!'"
Claude: 我会使用discord-agent MCP服务器来发送这条消息。
[使用 mcp__discord-agent__send_message 工具]
Claude: ✅ 消息已成功发送到频道123456789
您: "列出服务器中的所有频道"
Claude: 让我为您获取服务器频道。
[使用 mcp__discord-agent__list_channels 工具]
Claude: 找到了25个频道:
- 📢 公告 (文本)
- 💬 通用 (文本)
- 🗣️ 语音聊天 (语音)
...
# 构建镜像
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.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
kubectl构建并加载镜像(对于本地集群如K3d):
docker build -t discord-mcp-server:latest .
k3d image import discord-mcp-server:latest -c your-cluster-name
创建包含您的机器人令牌的秘密:
cp k8s/secret.yaml.example k8s/secret.yaml
# 编辑 k8s/secret.yaml 并替换 YOUR_DISCORD_BOT_TOKEN_HERE
部署到集群:
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
验证部署:
kubectl get pods -n discord-agent-mcp
kubectl logs -n discord-agent-mcp -l app=discord-mcp-server -f
访问服务器:
# 端口转发到localhost
kubectl port-forward -n discord-agent-mcp svc/discord-mcp-server 3000:3000
# 测试连接
curl http://localhost:3000/health
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 - 解除固定消息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 - 配置频道特定权限find_threads - 按名称搜索论坛中的线程create_thread - 在频道中创建新线程archive_thread - 归档并锁定线程get_server_info - 获取详细的服务器信息modify_server - 更新服务器名称、描述、设置get_audit_logs - 检索审核日志条目list_webhooks - 列出服务器中的所有网络钩子create_webhook - 创建新的网络钩子get_invites - 列出活跃的邀请链接create_invite - 创建新的邀请链接get_member_info - 获取详细的成员信息list_members - 列出所有成员,可选过滤set_nickname - 更改成员的服务器昵称assign_role - 向成员分配角色remove_role - 从成员移除角色create_role - 创建具有权限的新角色delete_role - 删除角色modify_role - 更新角色设置和权限list_roles - 列出服务器中的所有角色get_role_info - 获取详细的角色信息kick_member - 移除成员(他们可以重新加入)ban_member - 将成员从服务器中禁言unban_member - 移除禁言timeout_member - 暂时禁言成员remove_timeout - 移除成员的禁言get_bans - 列出所有被禁言的用户list_guild_emojis - 获取服务器的所有自定义表情符号create_emoji - 从base64或文件路径上传自定义表情符号modify_emoji - 更新表情符号名称或角色限制delete_emoji - 删除自定义表情符号list_guild_stickers - 获取服务器的所有自定义贴纸create_sticker - 上传自定义贴纸(PNG/APNG/Lottie)modify_sticker - 更新贴纸名称、描述或标签delete_sticker - 删除自定义贴纸list_scheduled_events - 获取服务器的所有预定事件get_event_details - 获取特定事件的详细信息create_scheduled_event - 创建舞台、语音或外部事件modify_scheduled_event - 更新事件属性和状态delete_scheduled_event - 删除或取消事件get_event_users - 获取对事件感兴趣的用户列表list_automod_rules - 获取服务器的所有自动管理规则get_automod_rule - 获取特定规则的详细信息create_automod_rule - 创建关键词、垃圾邮件或提及过滤规则modify_automod_rule - 更新规则设置、关键词或操作delete__automod_rule - 删除自动管理规则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等)来访问服务器特定数据。
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_MODE | 否 | http | 传输模式:http或stdio |
HTTP_PORT | 否 | 3000 | HTTP服务器端口 |
LOG_LEVEL | 否 | info | 日志级别:debug、info、warn、error |
LOG_FORMAT | 否 | json | 日志格式:json或pretty |
HTTP模式(默认):
Stdio模式:
discord-agent-mcp/
├── src/
│ ├── server/ # MCP服务器实现
│ │ ├── index.ts # 主服务器入口点
│ │ └── config.ts # 配