断开MCP服务器
Discord API操作MCP服务器。Cursor啊Claude Desktop从Discord进行动态观察时的轴心点。
机能
Phase 1: 基本机能(MVP)
工具|说明| |--------|------| | send_message 向指定频道发送消息(支持嵌入式) | get_messages 获取频道的最新消息 | list_channels 获取服务器中的频道列表 | add_reaction 在消息中添加反应
Phase 2: 扩张机能
工具|说明| |--------|------| | create_thread 从消息创建线程 | get_guild_members 获取服务器成员列表 | search_messages 查找信件
资源和提示
| 种类 | 名前 | 说明 |
|---|
资源 discord://persona 确认当前的语气设置 |提示| compose_message 支持根据佩尔索纳创建消息
安装,安装
1.安装相关性
uv sync2.设置环境变量
cp .env.example .env.env编辑文件Discord Bot Token设置:
DISCORD_BOT_TOKEN=your_bot_token_here
DISCORD_DEFAULT_GUILD_ID=your_default_guild_id_here # 任意:デフォルトサーバーID
DISCORD_BOT_PERSONA_FILE=persona.md # 任意:ペルソナ設定ファイル3.Persona设置(任意)
Bot的语调:
cp persona.md.example persona.mdpersona.md编辑,设定喜欢的语调。
首选项:
DISCORD_BOT_PERSONA_FILE-在文件路径中指定DISCORD_BOT_PERSONA-直接在环境变量中指定- 默认-友好语气
4. Discord Bot创建
- Discord开发者门户在中创建应用程序
- Bot在设置中启用:
- MESSAGE CONTENT INTENT(读取消息内容所需)
- 授予所需权限:
- 发送消息 - 读取消息历史记录 - 添加反应 - 创建公共线程 - 查看频道
- Bot Token复制ENV设置为
使用方法
MCP启动为服务器
uv run discord-mcpCursor设定
.cursor/mcp.json:
{
"mcpServers": {
"discord-mcp": {
"command": "uv",
"args": ["--project", "/path/to/discord-manage-mcp", "run", "discord-mcp"]
}
}
}备注:环境变量为 .env 中选择另一种天花板类型。机密情报mcp.json中描述的相应参数的值。Claude Desktop设定
claude_desktop_config.json:
{
"mcpServers": {
"discord-mcp": {
"command": "uv",
"args": ["--project", "/path/to/discord-manage-mcp", "run", "discord-mcp"]
}
}
}备注:DISCORD_DEFAULT_GUILD_ID对话框,您可以在此定义自定义格式list_channels、get_guild_members、search_messages的guild_id可以省略参数。
persona功能
概要
Bot中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。AI创建消息时,将根据设置的persona生成文章。
设定方法
persona.md.example复制persona.md创建- 记述喜欢的语调、角色设定
.env的DISCORD_BOT_PERSONA_FILE=persona.md添加
确认佩尔索纳
MCP资源 discord://persona 对较大场景进行渲染期间已观察到该故障。
信息制作支援
MCP提示 compose_message 中描述的场景,使用下列步骤创建明细表,以便在概念设计中分析体量的周长。
プロンプト: compose_message
引数: content = "伝えたい内容"工具详细信息
send_message
パラメータ:
- channel_id: str(必須)- 送信先チャンネルID
- content: str(必須)- メッセージ本文(最大2000文字)
- embed: dict(任意)- Embed形式のリッチメッセージ
戻り値:
- message_id: str
- success: bool获取消息
パラメータ:
- channel_id: str(必須)- チャンネルID
- limit: int(任意、デフォルト: 10)- 取得件数(1-100)
戻り値:
- messages: list
- id: str
- content: str
- author: str
- timestamp: strlist_channels
パラメータ:
- guild_id: str(任意)- サーバーID(未指定時はDISCORD_DEFAULT_GUILD_IDを使用)
戻り値:
- channels: list
- id: str
- name: str
- type: str(text / voice / category)add_reaction
パラメータ:
- channel_id: str(必須)
- message_id: str(必須)
- emoji: str(必須)- Unicode絵文字 or カスタム絵文字(name:id形式)
戻り値:
- success: boolcreate_thread
パラメータ:
- channel_id: str(必須)- スレッドを作成するチャンネルID
- message_id: str(必須)- スレッドの元メッセージID
- name: str(必須)- スレッド名(最大100文字)
- auto_archive_duration: int(任意)- 自動アーカイブまでの時間(分)(60, 1440, 4320, 10080)
戻り値:
- thread_id: str
- success: bool获取建筑成员
パラメータ:
- guild_id: str(任意)- サーバーID(未指定時はDISCORD_DEFAULT_GUILD_IDを使用)
- limit: int(任意、デフォルト: 100)- 取得件数(1-1000)
戻り値:
- members: list
- id: str
- username: str
- nickname: str
- roles: list搜索消息
パラメータ:
- query: str(必須)- 検索キーワード
- guild_id: str(任意)- サーバーID(未指定時はDISCORD_DEFAULT_GUILD_IDを使用)
- channel_id: str(任意)- チャンネルIDでフィルタ
- author_id: str(任意)- 投稿者IDでフィルタ
- limit: int(任意、デフォルト: 25)- 取得件数(1-25)
戻り値:
- messages: list
- id: str
- content: str
- author: str
- channel_id: str
- timestamp: str开発
测试运行
uv run pytest tests/ -v项目结构
discord-manage-mcp/
├── src/discord_mcp/
│ ├── __init__.py
│ ├── server.py # MCPサーバーエントリポイント
│ ├── tools.py # MCPツール定義
│ ├── discord_client.py # Discord REST APIクライアント
│ ├── models.py # データモデル
│ └── validators.py # 入力バリデーション
├── tests/
│ ├── test_discord_client.py
│ └── test_tools.py
├── pyproject.toml
├── .env.example
├── persona.md.example # ペルソナ設定のサンプル
└── README.md技术栈
- Python 3.11+
- FastMCP(MCP服务器框架)
- httpx(Discord API调用)
- pydantic(数据验证)
- python-dotenv(环境变数管理)
许可证
麻省理工学院
