使用说明
断开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设置
- 转到 Discord开发者门户
- 创建新应用程序
- 转到“Bot”部分
- 创建一个机器人并复制令牌
- 启用必要的意图:
- 消息内容意图
- 服务器成员意图
- 帮派意图
- 以适当的权限邀请机器人到您的服务器
🔧 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:用户的唯一标识符
- 权限:只读、读写或审核访问
- 帮派/频道限制:可选访问限制
- 有效期:自动密钥过期
- 速率限制:按密钥费率限制
权限级别
- 只读:可以检索消息和频道信息
- 读写:可以发送消息和检索数据
- 适度:可以执行审核操作(删除、禁止等)
🧪 测试
运行测试套件:
# 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工具
- 在中定义工具功能
src/mcp/server.py - 使用
@mcp_server.tool()装饰器 - 添加适当的错误处理和日志记录
- 更新API文档
贡献
- 分叉存储库
- 创建要素分支
- 添加新功能的测试
- 确保所有测试通过
- 提交拉取请求
📜 许可证
该项目根据MIT许可证获得许可。有关详细信息,请参阅LICENSE文件。
🆘 支持
有关支持和问题:
- 检查文档和示例
- 审查使用模式的测试用例
- 在GitHub上打开一个问题
- 加入我们的Discord社区
🔗 相关项目
- FastMCP -快速MCP服务器实施
- Discord.py -Discord API包装
- 模型上下文协议 -MCP规范
由以下材料制成❤️ 对于Discord和MCP社区