MCP Slack Bot 设置指南
一个与MCP(模型上下文协议)服务器集成的Slack机器人,用于提供智能查询响应。
特点/功能
先决条件
- Python 3.9或更高版本
- Docker 和 Docker Compose
- 拥有管理员访问权限的Slack工作区
- Ollama(用于本地大型语言模型)或OpenAI API密钥
快速入门
1. 克隆仓库
git clone https://github.com/Saliha067/mcp_slack_bot.git
cd mcp_slack_bot2. 安装Python依赖项
pip install -r requirements.txt3. 创建Slack应用
- 访问 https://api.slack.com/apps
- 点击“创建新应用”→“从头开始”
- 为您的应用命名并选择工作区
- 首选 OAuth & 权限:
- 添加机器人令牌范围: - app_mentions:read - chat:write - im:history - im:read - channels:history - 将应用程序安装到工作区 - 复制 机器人用户OAuth令牌 (以……开始 xoxb-)
- 首选 套接字模式:
- 启用套接字模式 - 生成 应用级令牌 和;与;带有 connections:write 范围 - 复制令牌(以...开头 xapp-)
- 首选 事件订阅:
- 启用事件 - 订阅: app_mention, message.im
4. 配置环境
创造 .env 文件:
SLACK_BOT_TOKEN=xoxb-your-bot-token
SLACK_APP_TOKEN=xapp-your-app-token
OPENAI_API_KEY=sk-your-openai-key
LLM_MODEL=qwen2.5:7b
ENVIRONMENT=prod环境选项:
ENVIRONMENT=prod- 仅支持HTTP/可流式传输的MCP服务器ENVIRONMENT=dev- 所有MCP服务器类型(HTTP + stdio)
5. 配置MCP服务器
编辑 servers_config.json:
{
"servers": [
{
"name": "VictoriaMetrics",
"type": "http",
"url": "http://localhost:3000/mcp",
"allowedTools": ["query", "metrics", "labels"]
}
]
}6. 启动Docker服务
docker-compose up -d这开始于:
- VictoriaMetrics(指标数据库)运行在8428端口
- MCP-VictoriaMetrics(MCP 服务器)在端口 3000 上运行
7. 加载测试数据(可选)
chmod +x scripts/load_test_data.sh
./scripts/load_test_data.sh8. 启动机器人
python main.py使用方法
在Slack中
提及该机器人:
@your-bot What's the CPU usage on server1?直接消息:
List all available metrics多服务器查询:
What's the Bitcoin price and show me CPU metrics?生成示例问题
python scripts/generate_sample_questions.py配置
服务器类型
HTTP/可流式传输(生产环境):
{
"name": "VictoriaMetrics",
"type": "http",
"url": "http://localhost:3000/mcp",
"allowedTools": ["query", "metrics"]
}Stdio(仅限开发):
{
"name": "LocalFilesystem",
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
"allowedTools": []
}工具过滤
允许特定工具:
"allowedTools": ["query", "metrics", "labels"]允许所有工具:
"allowedTools": []监测
检查日志:
# Look for tool filtering
grep "Loaded.*tools"
grep "Blocked execution"
grep "Executing allowed tool"预期输出:
✅ Loaded VictoriaMetrics (http) server
📦 Loaded 7 tools from 'VictoriaMetrics'
✅ Executing allowed tool: query with args: {...}
🚫 Blocked execution of disallowed tool: active_queriesDocker 命令
# Start services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
# Restart services
docker-compose restart故障排除
机器人未响应:
- 检查Slack令牌
.env - 验证是否提到了机器人或在私信中
- 检查机器人是否已被邀请加入频道
MCP服务器连接失败:
- 验证正在运行的Docker容器:
docker-compose ps - 检查MCP服务器URL
servers_config.json - 测试端点:
curl http://localhost:3000/mcp
工具执行被阻止:
- 检查
allowedTools在servers_config.json - 审查日志以过滤消息
- 验证工具名称是否完全匹配
项目结构
mcp_slackbot/
├── main.py # Bot entry point
├── .env # Environment variables
├── servers_config.json # MCP server configuration
├── docker-compose.yml # Docker services
├── requirements.txt # Python dependencies
├── utils/
│ ├── slack_bot.py # Slack integration
│ ├── server.py # MCP server client
│ ├── chatbot.py # LLM integration
│ ├── config.py # Configuration loader
│ ├── tool.py # Tool definitions
│ └── prompt_manager.py # Prompt management
├── scripts/
│ ├── load_test_data.sh # Load sample metrics
│ └── generate_sample_questions.py # Generate test queries
└── prompts/
└── prompts_config.yaml # LLM prompts
添加新的MCP服务器
- 添加到
servers_config.json:
{
"name": "MyServer",
"type": "http",
"url": "http://localhost:8000/mcp",
"allowedTools": ["tool1", "tool2"]
}- 重启机器人:
python main.py- 生成问题:
python scripts/generate_sample_questions.py安全注意事项
- 使用
ENVIRONMENT=prod在生产环境中(仅限HTTP) - 配置
allowedTools限制工具访问 - 永远不要承诺
.env文件 - 在生产环境中使用密钥管理
- 定期审查工具执行日志
支持
- 问题:https://github.com/Saliha067/mcp_slack_bot/issues
- MCP 文档:https://modelcontextprotocol.io/
- Slack API: https://api.slack.com/
