如何使用 ClickHouse MCP 服务器构建 SlackBot 代理
在本指南中,您将学习如何构建一个 SlackBot 代理。 该机器人允许您直接从 Slack 使用自然语言询问有关 ClickHouse 数据的问题。它使用 ClickHouse MCP 服务器 和 PydanticAI。
示例项目
此示例的代码可以在 examples repository 中找到。
前提条件
- 您需要安装
uv - 您需要访问一个 Slack 工作区
- 您需要一个 Anthropic API 密钥,或来自其他 LLM 提供商的 API 密钥
创建 Slack 应用
- 访问 slack.com/apps 并点击
Create New App。 - 选择
From scratch选项并为您的应用命名。 - 选择您的 Slack 工作区。
将应用安装到您的工作区
接下来,您需要将上一步创建的应用添加到您的工作区。 您可以遵循 Slack 文档中有关 "Add apps to your Slack workspace" 的说明。
配置 Slack 应用设置
- 转到
App Home- 在
Show Tabs→Messages Tab:启用Allow users to send Slash commands and messages from the messages tab - 转到
Socket Mode- 启用
Socket Mode - 记录
Socket Mode Handler的值作为环境变量SLACK_APP_TOKEN
- 启用
- 转到
OAuth & Permissions- 添加以下
Bot Token Scopes:app_mentions:readassistant:writechat:writeim:historyim:readim:writechannels:history
- 将应用安装到您的工作区,并记录
Bot User OAuth Token的值作为环境变量SLACK_BOT_TOKEN。
- 添加以下
- 转到
Event Subscriptions- 启用
Events - 在
Subscribe to bot events下,添加:app_mentionassistant_thread_startedmessage:im
- 保存更改
- 启用
- 在
添加环境变量 (.env)
在项目根目录中创建一个 .env 文件,包含以下环境变量,
这些变量将允许您的应用连接到 ClickHouse 的 SQL playground。
如果您愿意,可以将 ClickHouse 变量调整为使用您自己的 ClickHouse 服务器或云实例。
使用机器人
- 启动机器人:
- 在 Slack 中:
- 在频道中提及机器人:
@yourbot Who are the top contributors to the ClickHouse git repo? - 回复线程中的提及:
@yourbot how many contributions did these users make last week? - 私聊机器人:
Show me all tables in the demo database.
- 在频道中提及机器人:
机器人会在线程中回复,使用所有之前线程消息作为上下文(如果适用)。
线程上下文: 在回复线程时,机器人会加载所有之前的消息(当前消息除外),并将其作为 AI 的上下文。
工具使用: 机器人仅使用通过 MCP 提供的工具(例如,架构发现、SQL 执行),并将始终显示使用的 SQL 及答案求解的摘要。