Discord MCP 服务器
项目简介
本项目实现一个基于 Dedalus MCP 框架的 MCP 服务器,让大型语言模型(LLM)客户端可以通过标准的 MCP JSON-RPC 请求,调用一组 Discord API 工具与服务,从而在 Discord 服务器内执行操作、获取上下文信息并进行互动。
主要功能点
- MCP 服务器实现与集成
- 使用 Dedalus MCP 框架的 MCPServer,支持注册工具、处理请求与响应、会话管理等核心能力。
- 工具集合(Discord 交互工具)
- send_message、read_messages、list_servers、get_server_info、list_channels、add_reaction、delete_message、get_user_info、list_members 等多种 Discord API 操作。
- 针对常见操作提供友好、扁平化的 JSON 返回,便于 MCP 客户端直接使用和解析。
- Discord REST API v9 封装
- discord_api.py 提供对 Discord REST API v9 的封装,处理认证、错误码、重试建议等,确保与 Discord 的合规通信。
- 环境变量驱动配置
- 依赖 DISCORD_TOKEN、APP_ID、PUBLIC_KEY、PORT 等环境变量进行运行配置,支持通过 .env 文件加载。
- 错误处理与日志
- 详细的错误信息与日志输出,帮助排查权限、认证、请求格式等常见问题。
- 简易部署与运行
- 通过 python3 -m src.main 启动服务器,监听端口(默认 8080,可通过 PORT 指定)。
安装步骤
- 克隆仓库并进入目录
- 安装依赖:pip3 install -r requirements.txt
- 配置环境变量(推荐使用 .env),包括 DISCORD_TOKEN、APP_ID、PUBLIC_KEY、PORT(默认 8080)
- 启动服务器:python3 -m src.main
- 服务器端口将监听指定端口,等待 MCP 客户端连接
服务器配置(MCP 客户端所需、示例为 JSON 形式)
以下为 MCP 客户端用来连接本 MCP 服务器的配置示例信息,具体由客户端读取并用于连接与启动。请以 JSON 格式提供,包含 server name、command、args 等字段(为便于理解,下面给出注释说明,实际传输请按 JSON 格式传输,不要包含代码块)。
{ "server_name": "discord-mcp", "command": ["python3", "-m", "src.main"], "args": [], "port": 8080, "notes": "服务器从环境变量读取 DISCORD_TOKEN、APP_ID、PUBLIC_KEY、PORT(若未设置 PORT 使用 8080)。确保已在 Discord 开发者后台开启必要的 Privileged Gateway Intents,并为机器人授予所需权限(查看频道、发送消息、读取历史、管理消息、添加表情等)。" }
解释
- server_name: MCP 客户端在管理和区分不同 MCP 服务器时使用的名称,应与实际运行的服务器名称一致。
- command: 启动服务器的执行命令与入口点,此处为 Python 运行入口 nohup 或直接执行均可。
- args: 启动命令的附加参数,当前实现不强制必需额外参数。
- port: MCP 服务器监听的端口,默认 8080,实际以 PORT 环境变量为准。
- notes: 重要的配置要点、权限要求及环境变量说明,便于客户端正确配置与后续运维。
基本使用方法
- 启动服务器:在具备所需环境变量的环境中执行启动命令(上面的 JSON 配置中的 command 与 args)。
- 连接客户端:MCP 客户端使用服务器名称、地址(本地通常为 http://localhost:8080,具体端口以 PORT 为准)以及可调用的工具清单,通过 JSON-RPC 进行请求与响应交互。
- 调用示例:通过 MCP 客户端请求调用 send_message、list_servers 等工具,服务端将返回扁平化的 JSON 结果,便于后续处理与推理。
- 运行中的注意事项:
- 确保 DISCORD_TOKEN、APP_ID、PUBLIC_KEY 等凭证在环境变量正确配置。 确保 Discord 机器人拥有所需权限(如 View Channels、Send Messages、Read Message History、Manage Messages、Add Reactions)。
- 如遇 403/401/429 等错误,根据返回信息调试权限或速率限制策略。