Slack智能查询机器人

一个与MCP(Model Context Protocol)服务器集成的Slack机器人,提供智能查询响应。

  • by Saliha067
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Saliha067/mcp_slack_bot

使用说明

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_bot

2. 安装Python依赖项

pip install -r requirements.txt

3. 创建Slack应用

  1. 访问 https://api.slack.com/apps
  2. 点击“创建新应用”→“从头开始”
  3. 为您的应用命名并选择工作区
  4. 首选 OAuth & 权限:
    • 添加机器人令牌范围:
      • app_mentions:read
      • chat:write
      • im:history
      • im:read
      • channels:history
    • 将应用程序安装到工作区
    • 复制 机器人用户OAuth令牌 (以……开始 xoxb-)
  5. 首选 套接字模式:
    • 启用套接字模式
    • 生成 应用级令牌 和;与;带有 connections:write 范围
    • 复制令牌(以...开头 xapp-)
  6. 首选 事件订阅:
    • 启用事件
    • 订阅: 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.sh

8. 启动机器人

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_queries

Docker 命令

# 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服务器

  1. 添加到 servers_config.json:
{
  "name": "MyServer",
  "type": "http",
  "url": "http://localhost:8000/mcp",
  "allowedTools": ["tool1", "tool2"]
}
  1. 重启机器人:
python main.py
  1. 生成问题:
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/

致谢/制作人员名单

MCP 简单聊天机器人示例。