@@ -2,7 +2,7 @@ import DetailsWrap from '@site/src/components/DetailsWrap';
2
2
3
3
# 适用于 Databend 的 MCP Server
4
4
5
- [ mcp-databend] ( https://github.com/databendlabs/mcp-databend ) 是一个 MCP(Model Context Protocol)服务器,它让 AI 助手能够使用自然语言直接与您的 Databend 数据库交互。
5
+ [ mcp-databend] ( https://github.com/databendlabs/mcp-databend ) 是一个 MCP(Model Context Protocol)服务器,使 AI 助手能够使用自然语言直接与你的 Databend 数据库交互。
6
6
7
7
## mcp-databend 能做什么
8
8
@@ -13,28 +13,47 @@ import DetailsWrap from '@site/src/components/DetailsWrap';
13
13
14
14
## 构建 ChatBI 工具
15
15
16
- 本教程将演示如何使用 mcp-databend 和 Agno 框架构建一个对话式商业智能 (Business Intelligence)工具。您将创建一个本地 Agent,能够用自然语言回答数据问题。
16
+ 本教程将展示如何使用 mcp-databend 和 Agno 框架构建对话式商业智能 (Business Intelligence)工具。你将创建一个本地 Agent,能够用自然语言回答数据问题。
17
17
18
18
![ Databend MCP ChatBI] ( @site/static/img/connect/databend-mcp-chatbi.png )
19
19
20
+ ## 前置条件
21
+
22
+ 开始前,你需要:
23
+
24
+ 1 . ** Databend 数据库** - 可选择 [ Databend Cloud] ( https://app.databend.cn ) (提供免费套餐)或自托管实例
25
+ 2 . ** DeepSeek API Key** - 从 [ https://platform.deepseek.com/api_keys ] ( https://platform.deepseek.com/api_keys ) 获取
26
+
20
27
## 分步教程
21
28
22
29
### 第 1 步:配置 Databend 连接
23
30
24
- 首先,您需要一个可连接的 Databend 数据库:
31
+ 如果还没有 Databend 数据库:
32
+
33
+ 1 . ** 注册 [ Databend Cloud] ( https://app.databend.cn ) ** (免费套餐可用)
34
+ 2 . ** 创建 Warehouse 和数据库**
35
+ 3 . ** 在控制台获取连接字符串**
36
+
37
+ 有关 DSN 格式和示例,参阅[ 连接字符串文档] ( https://docs.databend.cn/developer/drivers/#connection-string-dsn ) 。
25
38
26
- 1 . ** 注册 [ Databend Cloud] ( https://app.databend.cn ) ** (提供免费套餐)
27
- 2 . ** 创建 Warehouse 和 Database**
28
- 3 . ** 在控制台获取连接字符串(Connection String)**
39
+ | 部署方式 | 连接字符串示例 |
40
+ | ------------------ | ------------------------------------------------------------- |
41
+ | ** Databend Cloud** | ` databend://user:pwd@host:443/database?warehouse=wh ` |
42
+ | ** 自托管** | ` databend://user:pwd@localhost:8000/database?sslmode=disable ` |
29
43
30
- 有关 DSN 格式和示例的详细信息,请参阅 [ 连接字符串文档 ] ( https://docs.databend.cn/developer/drivers/#connection-string-dsn ) 。
44
+ ### 第 2 步:配置 API Key 和环境变量
31
45
32
- | 部署方式 | 连接字符串示例 |
33
- | ------------------ | ------------------------------------------------------------ |
34
- | ** Databend Cloud** | ` databend://user:pwd@host:443/database?warehouse=wh ` |
35
- | ** 自托管** | ` databend://user:pwd@localhost:8000/database?sslmode=disable ` |
46
+ 设置 API Key 和数据库连接:
36
47
37
- ### 第 2 步:安装依赖
48
+ ``` bash
49
+ # 设置 DeepSeek API Key
50
+ export DEEPSEEK_API_KEY=" your-deepseek-api-key"
51
+
52
+ # 设置 Databend 连接字符串
53
+ export DATABEND_DSN=" your-databend-connection-string"
54
+ ```
55
+
56
+ ### 第 3 步:安装依赖
38
57
39
58
创建虚拟环境并安装所需包:
40
59
@@ -44,18 +63,14 @@ python3 -m venv .venv
44
63
source .venv/bin/activate
45
64
46
65
# 安装包
47
- pip install packaging openai agno openrouter sqlalchemy fastapi mcp-databend
66
+ pip install packaging openai agno sqlalchemy fastapi mcp-databend
48
67
```
49
68
50
- ### 第 3 步:创建 ChatBI Agent
69
+ ### 第 4 步:创建 ChatBI Agent
51
70
52
- 现在创建 ChatBI Agent,它将使用 mcp-databend 与您的数据库交互 。
71
+ 现在创建 ChatBI Agent,它将使用 mcp-databend 与数据库交互 。
53
72
54
73
创建文件 ` agent.py ` :
55
- <DetailsWrap >
56
-
57
- <details >
58
- <summary >点击查看 agent.py 代码</summary >
59
74
60
75
``` python
61
76
from contextlib import asynccontextmanager
@@ -67,17 +82,16 @@ from agno.agent import Agent
67
82
from agno.playground import Playground
68
83
from agno.storage.sqlite import SqliteStorage
69
84
from agno.tools.mcp import MCPTools
70
- from agno.models.openrouter import OpenRouter
85
+ from agno.models.deepseek import DeepSeek
71
86
from fastapi import FastAPI
72
87
73
88
logging.basicConfig(level = logging.INFO )
74
89
logger = logging.getLogger(__name__ )
75
90
76
91
def check_env_vars ():
77
- """ 检查必需的环境变量"""
78
92
required = {
79
93
" DATABEND_DSN" : " https://docs.databend.cn/developer/drivers/#connection-string-dsn" ,
80
- " OPENROUTER_API_KEY " : " https://openrouter.ai/settings/keys "
94
+ " DEEPSEEK_API_KEY " : " https://platform.deepseek.com/api_keys "
81
95
}
82
96
83
97
missing = [var for var in required if not os.getenv(var)]
@@ -86,7 +100,7 @@ def check_env_vars():
86
100
print (" ❌ 缺少环境变量:" )
87
101
for var in missing:
88
102
print (f " • { var} : { required[var]} " )
89
- print (" \n 示例:export DATABEND_DSN='...' OPENROUTER_API_KEY ='...'" )
103
+ print (" \n 示例:export DATABEND_DSN='...' DEEPSEEK_API_KEY ='...'" )
90
104
sys.exit(1 )
91
105
92
106
print (" ✅ 环境变量检查通过" )
@@ -121,16 +135,13 @@ databend = DatabendTool()
121
135
122
136
agent = Agent(
123
137
name = " ChatBI" ,
124
- model = OpenRouter(
125
- id = os.getenv(" MODEL_ID" , " anthropic/claude-sonnet-4" ),
126
- api_key = os.getenv(" OPENROUTER_API_KEY" )
127
- ),
138
+ model = DeepSeek(),
128
139
tools = [],
129
140
instructions = [
130
141
" 你是 ChatBI - 专为 Databend 打造的商业智能助手。" ,
131
142
" 帮助用户使用自然语言探索和分析数据。" ,
132
- " 始终先探索可用的数据库和表 。" ,
133
- " 以清晰、易读的表格格式展示查询结果 。" ,
143
+ " 始终从探索可用数据库和表开始 。" ,
144
+ " 将查询结果格式化为清晰易读的表格 。" ,
134
145
" 在分析中提供见解和解释。"
135
146
],
136
147
storage = SqliteStorage(table_name = " chatbi" , db_file = " chatbi.db" ),
@@ -145,7 +156,7 @@ agent = Agent(
145
156
async def lifespan (app : FastAPI):
146
157
tool = databend.create()
147
158
if not await databend.init():
148
- logger.error(" Databend 初始化失败 " )
159
+ logger.error(" 初始化 Databend 失败 " )
149
160
raise RuntimeError (" Databend 连接失败" )
150
161
151
162
agent.tools.append(tool)
@@ -165,23 +176,10 @@ playground = Playground(
165
176
app = playground.get_app(lifespan = lifespan)
166
177
167
178
if __name__ == " __main__" :
168
- print (" 🤖 正在启动 Databend 的 MCP Server" )
179
+ print (" 🤖 正在为 Databend 启动 MCP Server" )
169
180
print (" 打开 http://localhost:7777 开始聊天!" )
170
181
playground.serve(app = " agent:app" , host = " 127.0.0.1" , port = 7777 )
171
- ```
172
-
173
- </details >
174
- </DetailsWrap >
175
- ### 第 4 步:配置环境
176
-
177
- 设置您的 API 密钥和数据库连接:
178
182
179
- ``` bash
180
- # 设置 OpenRouter API 密钥
181
- export OPENROUTER_API_KEY=" your-openrouter-key"
182
-
183
- # 设置 Databend 连接字符串
184
- export DATABEND_DSN=" your-databend-connection-string"
185
183
```
186
184
187
185
### 第 5 步:启动 ChatBI Agent
@@ -192,22 +190,22 @@ export DATABEND_DSN="your-databend-connection-string"
192
190
python agent.py
193
191
```
194
192
195
- 您将看到 :
193
+ 你将看到 :
196
194
197
195
```
198
196
✅ 环境变量检查通过
199
- 🤖 正在启动 Databend 的 MCP Server
197
+ 🤖 正在为 Databend 启动 MCP Server
200
198
打开 http://localhost:7777 开始聊天!
201
- INFO Starting playground on http://127.0.0.1:7777
199
+ INFO 正在 http://127.0.0.1:7777 启动 playground
202
200
INFO: Started server process [189851]
203
- INFO: Waiting for application startup.
201
+ INFO: 等待应用启动。
204
202
INFO:agent:✓ 已连接到 Databend
205
203
INFO:agent:ChatBI 初始化成功
206
- INFO: Application startup complete.
207
- INFO: Uvicorn running on http://127.0.0.1:7777 (Press CTRL+C to quit)
204
+ INFO: 应用启动完成。
205
+ INFO: Uvicorn 运行在 http://127.0.0.1:7777(按 CTRL+C 退出)
208
206
```
209
207
210
- ### 第 6 步:设置 Web 界面
208
+ ### 第 6 步:配置 Web 界面
211
209
212
210
为获得更佳体验,可配置 Agno 的 Web 界面:
213
211
@@ -219,11 +217,11 @@ npx create-agent-ui@latest
219
217
cd agent-ui && npm run dev
220
218
```
221
219
222
- ** 连接到您的 Agent:**
220
+ ** 连接到 Agent:**
223
221
224
222
1 . 打开 [ http://localhost:3000 ] ( http://localhost:3000 )
225
223
2 . 选择 "localhost:7777" 作为端点
226
- 3 . 开始提问关于您的数据 !
224
+ 3 . 开始提问关于数据的问题 !
227
225
228
226
** 试试这些查询:**
229
227
@@ -234,7 +232,7 @@ cd agent-ui && npm run dev
234
232
235
233
## 资源
236
234
237
- - ** GitHub 仓库** : [ databendlabs/mcp-databend] ( https://github.com/databendlabs/mcp-databend )
238
- - ** PyPI 包** : [ mcp-databend] ( https://pypi.org/project/mcp-databend )
239
- - ** Agno 框架** : [ Agno MCP] ( https://docs.agno.com/tools/mcp/mcp )
240
- - ** Agent UI** : [ Agent UI] ( https://docs.agno.com/agent-ui/introduction )
235
+ - ** GitHub 仓库** : [ databendlabs/mcp-databend] ( https://github.com/databendlabs/mcp-databend )
236
+ - ** PyPI 包** : [ mcp-databend] ( https://pypi.org/project/mcp-databend )
237
+ - ** Agno 框架** : [ Agno MCP] ( https://docs.agno.com/tools/mcp/mcp )
238
+ - ** Agent UI** : [ Agent UI] ( https://docs.agno.com/agent-ui/introduction )
0 commit comments