使用说明
💬 断开MCP服务器
概述
Discord MCP服务器使AI代理能够通过模型上下文协议(MCP)与Discord平台进行交互。此服务器提供对Discord功能的全面访问,包括消息传递、频道管理、论坛操作、反应和webhook管理。
通过实施MCP,该服务器允许大型语言模型(LLM)读取和发送消息,管理频道和论坛,处理反应,并直接通过其上下文窗口与Webhook交互,从而弥合了AI和Discord社区之间的差距。
服务器通过采样功能支持双向通信,允许机器人监听消息并在被提及时自动响应。
特性
- 消息管理:在Discord频道中发送、阅读和删除消息
- 渠道运作:创建和删除具有自定义主题的文本频道
- 论坛支持:使用标签支持创建、阅读、回复和删除论坛帖子
- 反应处理:向消息添加单个或多个反应
- Webhook集成:通过webhooks创建、编辑、删除和发送消息
- 服务器信息:检索详细的服务器信息,包括频道和成员计数
安装
使用npx(推荐)
要使用此服务器而不全局安装,请执行以下操作:
npx @iqai/mcp-discord --config ${DISCORD_TOKEN}
从源代码构建
git clone https://github.com/IQAIcom/mcp-discord.git
cd mcp-discord
pnpm install
pnpm run build
使用MCP客户端运行
将以下配置添加到MCP客户端设置中(例如。, claude_desktop_config.json).
最小配置
{
"mcpServers": {
"discord": {
"command": "npx",
"args": ["-y", "@iqai/mcp-discord", "--config", "YOUR_DISCORD_TOKEN"]
}
}
}
高级配置(本地构建)
{
"mcpServers": {
"discord": {
"command": "node",
"args": ["/absolute/path/to/mcp-discord/dist/index.js"],
"env": {
"DISCORD_TOKEN": "your_discord_bot_token",
"SAMPLING_ENABLED": "true",
"TRANSPORT": "stdio"
}
}
}
}
配置(环境变量)
| 变量 | 必填 | 描述 | 默认值 |
|---|---|---|---|
DISCORD_TOKEN |
是 | 来自开发者门户的Discord机器人令牌 | - |
SAMPLING_ENABLED |
否 | 启用双向消息采样 | true |
TRANSPORT |
否 | 运输方式: stdio 或 http |
stdio |
HTTP_PORT |
否 | HTTP传输端口 | 8080 |
DEFAULT_RATE_LIMIT_SECONDS |
无 | 每个用户采样请求的速率限制(秒) | 2 |
DEFAULT_MESSAGE_CHUNK_SIZE |
否 | 采样响应的最大消息块大小 | 2000 |
RESPOND_TO_MENTIONS_ONLY |
否 | 仅回复提及机器人的消息 | true |
BLOCK_DMS |
否 | 阻止向机器人发送直接消息 | true |
BLOCKED_GUILDS |
否 | 要阻止的以逗号分隔的公会ID列表 | "" |
BANNED_USERS |
否 | 要禁止的逗号分隔的用户ID列表 | "" |
REACTION_SAMPLING_ENABLED |
否 | 启用AI生成的上下文反应 | false |
REACTION_TIMEOUT_MS |
否 | 反应采样请求超时(ms) | 3000 |
REACTION_FALLBACK_EMOJI |
否 | 反应采样失败时回退表情符号 | "🤔" |
先决条件
在使用此MCP服务器之前,您需要:
- 具有适当权限的Discord机器人 Discord开发者门户
- 启用以下意图:消息内容、服务器成员、状态
- 使用所需权限将机器人添加到您的服务器(管理员建议,或频道、消息、Webhook的特定权限)
用法示例
消息操作
- “向#general频道发送一条消息,说‘大家好!’”
- “阅读公告频道的最后10条消息”
- “从#垃圾邮件通道中删除ID为123456789的邮件”
渠道管理
- 创建一个名为“项目更新”的新文本频道,主题为“项目状态更新”
- “删除频道#旧频道”
- “获取所有服务器信息,包括频道列表”
论坛运营
- “列出此服务器中的所有论坛频道”
- “创建一个名为“功能请求”的新论坛帖子,其中包含有关新功能的内容”
- “用状态更新回复论坛上关于bug的帖子”
反应处理
- “在#feedback中为最新消息添加竖起大拇指的反应”
- “添加多种反应(🎉 🚀 ✅) 到公告消息“
- “从该消息中删除我的反应”
Webhook管理
- “在#alerts频道中创建一个名为‘Notifications Bot’的webhook”
- “通过webhook发送消息以发布‘系统警报’”
- “从#旧通知中删除未使用的webhook”
MCP工具
discord_add_multiple_reactions
同时向Discord消息添加多个表情符号反应
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
channelId |
string | ✅ | |
messageId |
string | ✅ | |
emojis |
数组 | ✅ |
discord_add_reaction
将表情符号反应添加到特定的Discord消息中
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
channelId |
string | ✅ | |
messageId |
string | ✅ | |
emoji |
string | ✅ |
discord_create_category
在Discord服务器中创建新类别。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
guildId |
string | ✅ | |
name |
string | ✅ | |
position |
编号 | ||
reason |
字符串 |
discord_create_forum_post
在Discord论坛频道中创建带有可选标签的新帖子
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
forumChannelId |
string | ✅ | |
title |
string | ✅ | |
content |
string | ✅ | |
tags |
数组 |
discord_create_text_channel
在Discord服务器中创建具有可选主题的新文本频道
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
guildId |
string | ✅ | |
channelName |
string | ✅ | |
topic |
字符串 |
discord_create_webhook
为Discord频道创建新的webhook
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
channelId |
string | ✅ | |
name |
string | ✅ | |
avatar |
字符串 | ||
reason |
字符串 |
discord_delete_category
按ID删除Discord类别。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
categoryId |
string | ✅ | |
reason |
字符串 |
discord_delete_channel
删除带有可选原因的Discord频道
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
channelId |
string | ✅ | |
reason |
字符串 |
discord_delete_forum_post
删除带有可选原因的论坛帖子或帖子
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
threadId |
string | ✅ | |
reason |
字符串 |
discord_delete_message
从Discord文本频道删除特定消息
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
channelId |
string | ✅ | |
messageId |
string | ✅ | |
reason |
字符串 |
discord_delete_webhook
删除Discord频道的现有webhook
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
webhookId |
string | ✅ | |
webhookToken |
字符串 | ||
reason |
字符串 |
discord_edit_category
编辑现有的Discord类别(名称和位置)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
categoryId |
string | ✅ | |
name |
字符串 | ||
position |
编号 | ||
reason |
字符串 |
discord_edit_webhook
编辑Discord频道的现有webhook
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
webhookId |
string | ✅ | |
webhookToken |
字符串 | ||
name |
字符串 | ||
avatar |
字符串 | ||
channelId |
字符串 | ||
reason |
字符串 |
discord_get_forum_channels
列出指定Discord服务器(公会)中的所有论坛频道
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
guildId |
string | ✅ |
discord_get_forum_post
检索论坛帖子的详细信息,包括其消息
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
threadId |
string | ✅ |
discord_get_server_info
检索有关Discord服务器的详细信息,包括频道和成员计数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
guildId |
string | ✅ |
discord_login
使用配置的令牌登录Discord
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
token |
字符串 |
discord_read_messages
使用可配置的限制从Discord文本通道检索消息
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
channelId |
string | ✅ | ||
limit |
数字 | 50 |
discord_remove_reaction
从Discord消息中删除特定的表情符号反应
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
channelId |
string | ✅ | |
messageId |
string | ✅ | |
emoji |
string | ✅ | |
userId |
字符串 |
discord_reply_to_forum
向现有论坛帖子或帖子添加回复
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
threadId |
string | ✅ | |
message |
string | ✅ |
discord_send
向指定的Discord文本频道发送消息
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
channelId |
string | ✅ | |
message |
string | ✅ |
discord_send_webhook_message
使用webhook向Discord频道发送消息
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
webhookId |
string | ✅ | |
webhookToken |
string | ✅ | |
content |
string | ✅ | |
username |
字符串 | ||
avatarURL |
字符串 | ||
threadId |
字符串 |
发展
建设项目
pnpm run build
开发模式(观看)
pnpm run watch
装订和格式化
pnpm run lint
pnpm run format
项目结构
src/tools/:个人工具处理人员src/tool-list.ts:MCP工具定义src/schemas.ts:Zod验证模式src/sampling.ts:双向采样功能src/index.ts:服务器入口点
资源
免责声明
本项目是一个非官方工具,不直接隶属于Discord股份有限公司。用户有责任确保其机器人程序的使用符合Discord的服务条款和开发者条款。