Discord MCP服务器

一个全面的模型上下文协议(MCP)服务器,用于Discord集成,通过标准化的API接口提供对Discord功能的安全访问。

  • by mdmukhtarmohsin
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mdmukhtarmohsin/discord-mcp-server

使用说明

断开MCP服务器

用于Discord集成的综合模型上下文协议(MCP)服务器,通过标准化的API接口提供对Discord功能的安全访问。

🚀 特性

  • FastMCP集成:基于FastMCP构建,实现高效的MCP服务器实施
  • Discord机器人:功能齐全的Discord机器人,具有消息处理和审核功能
  • 身份验证和授权:API密钥管理的基于JWT的身份验证
  • 速率限制:基于Redis的速率限制,具有可配置的限制
  • 多租户技术:通过基于权限的访问控制支持多个用户
  • 审计日志:全面记录所有操作和API调用
  • 调节工具:内置内容审核和用户管理
  • 安全:基于哈希的API密钥存储和加密的JWT令牌

📋 需求

  • Python 3.9+
  • Redis服务器
  • Discord Bot令牌(来自Discord开发者门户)
  • 虚拟环境(推荐)

🛠️ 安装

1.克隆和设置环境

git clone <repository-url>
cd Discord-MCP-Server

# Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

2.安装依赖项

pip install -r requirements.txt

3.配置环境

运行交互式安装脚本:

python3 scripts/setup_env.py

或者手动创建 .env 文件基于 .env.example:

cp .env.example .env
# Edit .env with your configuration

4.启动Redis服务器

确保Redis在您的系统上运行:

# Ubuntu/Debian
sudo systemctl start redis

# macOS with Homebrew
brew services start redis

# Or run directly
redis-server

5.运行服务器

python3 scripts/run_server.py

对于调试模式的开发:

python3 scripts/run_server.py --debug

⚙️ 配置

环境变量

变量 描述 默认值
DISCORD_BOT_TOKEN 来自开发者门户的Discord机器人令牌 必需
JWT_SECRET_KEY JWT令牌签名的密钥 必需
REDIS_URL Redis连接URL redis://localhost:6379/0
MCP_SERVER_NAME MCP服务器的名称 discord-mcp-server
MCP_SERVER_HOST 服务器主机地址 127.0.0.1
MCP_SERVER_PORT 服务器端口 8000
LOG_LEVEL 日志记录级别 INFO
LOG_FORMAT 日志格式(json/控制台) console
CORS_ENABLED 启用CORS false
ALLOWED_ORIGINS 逗号分隔的允许原点 ``
RATE_LIMIT_REQUESTS 每个窗口的请求 100
RATE_LIMIT_WINDOW 速率限制窗口(秒) 60

Discord Bot设置

  1. 转到 Discord开发者门户
  2. 创建新应用程序
  3. 转到“Bot”部分
  4. 创建一个机器人并复制令牌
  5. 启用必要的意图:
    • 消息内容意图
    • 服务器成员意图
    • 帮派意图
  6. 以适当的权限邀请机器人到您的服务器

🔧 API使用

MCP工具

服务器提供以下MCP工具:

send_message

向Discord频道发送消息。

{
  "tool": "send_message",
  "arguments": {
    "channel_id": "123456789",
    "content": "Hello, world!",
    "embed": {
      "title": "Optional Embed",
      "description": "Embed content"
    }
  }
}

get_messages

从频道检索消息历史记录。

{
  "tool": "get_messages",
  "arguments": {
    "channel_id": "123456789",
    "limit": 50,
    "before": "2023-12-01T00:00:00Z",
    "after": "2023-11-01T00:00:00Z"
  }
}

get_channel_info

获取有关Discord频道的信息。

{
  "tool": "get_channel_info",
  "arguments": {
    "channel_id": "123456789"
  }
}

search_messages

使用各种过滤器搜索邮件。

{
  "tool": "search_messages",
  "arguments": {
    "query": "search term",
    "channel_id": "123456789",
    "author_id": "987654321",
    "limit": 100
  }
}

moderate_content

执行审核操作。

{
  "tool": "moderate_content",
  "arguments": {
    "action": "delete_message",
    "target_id": "message_id",
    "guild_id": "guild_id",
    "reason": "Spam content"
  }
}

REST API端点

  • GET / -服务器状态和信息
  • GET /health -健康检查端点
  • GET /mcp/tools -列出可用的MCP工具
  • GET /mcp/resources/discord://status -Discord机器人状态

🔐 认证

服务器使用API密钥进行基于JWT的身份验证。每个API密钥都有:

  • 用户ID:用户的唯一标识符
  • 权限:只读、读写或审核访问
  • 帮派/频道限制:可选访问限制
  • 有效期:自动密钥过期
  • 速率限制:按密钥费率限制

权限级别

  1. 只读:可以检索消息和频道信息
  2. 读写:可以发送消息和检索数据
  3. 适度:可以执行审核操作(删除、禁止等)

🧪 测试

运行测试套件:

# Install test dependencies
pip install pytest pytest-asyncio

# Run all tests
python3 -m pytest tests/

# Run specific test file
python3 -m pytest tests/test_auth.py -v

# Run with coverage
python3 -m pytest --cov=src tests/

📊 监控和日志记录

服务器提供具有可配置格式的结构化日志记录:

  • 控制台格式:人类可读的彩色输出
  • JSON格式:日志聚合的机器可读性

关键日志事件包括:

  • 身份验证尝试
  • API调用和响应
  • 不一致行为(消息、审核)
  • 速率限制事件
  • 错误和异常

🚨 安全考虑

  • API密钥:以SHA-256哈希存储在Redis中
  • JWT代币:使用强密钥签名
  • 速率限制:防止滥用和DoS攻击
  • 输入验证:所有输入都经过验证和消毒
  • 权限检查:细粒度访问控制
  • 审计日志:完成所有行动的审计跟踪

🔧 发展

项目结构

Discord-MCP-Server/
├── src/
│   ├── auth/               # Authentication and authorization
│   ├── bot/                # Discord bot implementation
│   ├── mcp/                # MCP server and tools
│   ├── models/             # Data models and schemas
│   ├── utils/              # Utility functions
│   └── main.py             # Application entry point
├── tests/                  # Test suite
├── scripts/                # Utility scripts
├── requirements.txt        # Python dependencies
├── .env.example           # Environment configuration template
└── README.md              # This file

添加新的MCP工具

  1. 在中定义工具功能 src/mcp/server.py
  2. 使用 @mcp_server.tool() 装饰器
  3. 添加适当的错误处理和日志记录
  4. 更新API文档

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 添加新功能的测试
  4. 确保所有测试通过
  5. 提交拉取请求

📜 许可证

该项目根据MIT许可证获得许可。有关详细信息,请参阅LICENSE文件。

🆘 支持

有关支持和问题:

  1. 检查文档和示例
  2. 审查使用模式的测试用例
  3. 在GitHub上打开一个问题
  4. 加入我们的Discord社区

🔗 相关项目


由以下材料制成❤️ 对于Discord和MCP社区