如何使用 ClickHouse MCP Server 构建 SlackBot 代理
在本指南中,您将学习如何构建一个 SlackBot 代理。 这个机器人允许您在 Slack 中使用自然语言直接查询您的 ClickHouse 数据。它基于 ClickHouse MCP Server 和 PydanticAI。
示例项目
此示例的代码可以在 examples 仓库 中找到。
前置条件
- 您需要安装
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 服务器或 ClickHouse Cloud 实例。
使用机器人
-
启动机器人:
-
在 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 以及答案的查找摘要。