1+ import DetailsWrap from '@site/src /components/DetailsWrap';
2+
13# 适用于 Databend 的 MCP 服务器
24
3- [ 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 数据库交互。
46
57## mcp-databend 能做什么
68
79- ** execute_sql** - 执行带超时保护的 SQL 查询
810- ** show_databases** - 列出所有可用数据库
9- - ** show_tables** - 列出数据库中的表(可带可选过滤 )
11+ - ** show_tables** - 列出数据库中的表(支持可选过滤 )
1012- ** describe_table** - 获取详细的表结构信息
1113
1214## 构建 ChatBI 工具
1315
14- 本教程将演示如何使用 mcp-databend 和 Agno 框架构建对话式商业智能工具。你将创建一个本地代理,用自然语言回答数据问题 。
16+ 本教程将演示如何使用 mcp-databend 和 Agno 框架构建对话式商业智能(Business Intelligence,BI)工具。你将创建一个本地 Agent,能够用自然语言回答数据问题 。
1517
1618![ Databend MCP ChatBI] ( @site/static/img/connect/databend-mcp-chatbi.png )
1719
1820## 分步教程
1921
20- ### 第 1 步 :配置 Databend 连接
22+ ### 步骤 1 :配置 Databend 连接
2123
2224首先,你需要一个可连接的 Databend 数据库:
2325
24261 . ** 注册 [ Databend Cloud] ( https://app.databend.cn ) ** (提供免费套餐)
25- 2 . ** 创建计算集群和数据库 **
27+ 2 . ** 创建 Warehouse 和数据库 **
26283 . ** 在控制台获取连接字符串**
2729
28- 有关 DSN 格式和示例的详细信息,请参阅[ 连接字符串文档] ( https://docs.databend.cn/developer/drivers/#connection-string-dsn ) 。
30+ 有关 DSN 格式和示例的详细信息,请参阅 [ 连接字符串文档] ( https://docs.databend.cn/developer/drivers/#connection-string-dsn ) 。
2931
30- | 部署方式 | 连接字符串示例 |
31- | ------------| ---------------------------|
32- | ** Databend Cloud** | ` databend://user:pwd@host:443/database?warehouse=wh ` |
33- | ** 自托管** | ` databend://user:pwd@localhost:8000/database?sslmode=disable ` |
32+ | 部署方式 | 连接字符串示例 |
33+ | ------------------ | ------------------------------------------------------------- |
34+ | ** Databend Cloud** | ` databend://user:pwd@host:443/database?warehouse=wh ` |
35+ | ** 自托管** | ` databend://user:pwd@localhost:8000/database?sslmode=disable ` |
3436
35- ### 第 2 步 :安装依赖
37+ ### 步骤 2 :安装依赖
3638
3739创建虚拟环境并安装所需包:
3840
@@ -45,11 +47,12 @@ source .venv/bin/activate
4547pip install packaging openai agno openrouter sqlalchemy fastapi mcp-databend
4648```
4749
48- ### 第 3 步 :创建 ChatBI 代理
50+ ### 步骤 3 :创建 ChatBI Agent
4951
50- 现在创建使用 mcp-databend 与数据库交互的 ChatBI 代理 。
52+ 现在创建 ChatBI Agent,它将使用 mcp-databend 与数据库交互 。
5153
5254创建文件 ` agent.py ` :
55+ <DetailsWrap >
5356
5457<details >
5558<summary >点击查看 agent.py 代码</summary >
@@ -76,16 +79,16 @@ def check_env_vars():
7679 " DATABEND_DSN" : " https://docs.databend.cn/developer/drivers/#connection-string-dsn" ,
7780 " OPENROUTER_API_KEY" : " https://openrouter.ai/settings/keys"
7881 }
79-
82+
8083 missing = [var for var in required if not os.getenv(var)]
81-
84+
8285 if missing:
8386 print (" ❌ 缺少环境变量:" )
8487 for var in missing:
8588 print (f " • { var} : { required[var]} " )
8689 print (" \n 示例:export DATABEND_DSN='...' OPENROUTER_API_KEY='...'" )
8790 sys.exit(1 )
88-
91+
8992 print (" ✅ 环境变量检查通过" )
9093
9194check_env_vars()
@@ -94,7 +97,7 @@ class DatabendTool:
9497 def __init__ (self ):
9598 self .mcp = None
9699 self .dsn = os.getenv(" DATABEND_DSN" )
97-
100+
98101 def create (self ):
99102 env = os.environ.copy()
100103 env[" DATABEND_DSN" ] = self .dsn
@@ -104,7 +107,7 @@ class DatabendTool:
104107 timeout_seconds = 300
105108 )
106109 return self .mcp
107-
110+
108111 async def init (self ):
109112 try :
110113 await self .mcp.connect()
@@ -124,7 +127,7 @@ agent = Agent(
124127 ),
125128 tools = [],
126129 instructions = [
127- " 你是 ChatBI - Databend 的商业智能助手。" ,
130+ " 你是 ChatBI —— Databend 的商业智能助手。" ,
128131 " 帮助用户使用自然语言探索和分析数据。" ,
129132 " 始终从探索可用数据库和表开始。" ,
130133 " 将查询结果格式化为清晰易读的表格。" ,
@@ -144,12 +147,12 @@ async def lifespan(app: FastAPI):
144147 if not await databend.init():
145148 logger.error(" 初始化 Databend 失败" )
146149 raise RuntimeError (" Databend 连接失败" )
147-
150+
148151 agent.tools.append(tool)
149152 logger.info(" ChatBI 初始化成功" )
150-
153+
151154 yield
152-
155+
153156 if databend.mcp:
154157 await databend.mcp.close()
155158
@@ -162,14 +165,15 @@ playground = Playground(
162165app = playground.get_app(lifespan = lifespan)
163166
164167if __name__ == " __main__" :
165- print (" 🤖 正在启动 Databend 的 MCP 服务器" )
168+ print (" 🤖 正在为 Databend 启动 MCP 服务器" )
166169 print (" 打开 http://localhost:7777 开始聊天!" )
167170 playground.serve(app = " agent:app" , host = " 127.0.0.1" , port = 7777 )
168171```
169172
170173</details >
174+ </DetailsWrap >
171175
172- ### 第 4 步 :配置环境
176+ ### 步骤 4 :配置环境
173177
174178设置 API 密钥和数据库连接:
175179
@@ -181,31 +185,32 @@ export OPENROUTER_API_KEY="your-openrouter-key"
181185export DATABEND_DSN=" your-databend-connection-string"
182186```
183187
184- ### 第 5 步 :启动 ChatBI 代理
188+ ### 步骤 5 :启动 ChatBI Agent
185189
186- 运行代理以启动本地服务器 :
190+ 运行 Agent 启动本地服务器 :
187191
188192``` bash
189193python agent.py
190194```
191195
192196你将看到:
197+
193198```
194199✅ 环境变量检查通过
195- 🤖 正在启动 Databend 的 MCP 服务器
200+ 🤖 正在为 Databend 启动 MCP 服务器
196201打开 http://localhost:7777 开始聊天!
197- INFO 正在 http://127.0.0.1:7777 启动 playground
198- INFO: 已启动服务器进程 [189851]
199- INFO: 等待应用程序启动。
202+ INFO Starting playground on http://127.0.0.1:7777
203+ INFO: Started server process [189851]
204+ INFO: Waiting for application startup.
200205INFO:agent:✓ 已连接到 Databend
201206INFO:agent:ChatBI 初始化成功
202- INFO: 应用程序启动完成。
203- INFO: Uvicorn 正在 http://127.0.0.1:7777 运行(按 CTRL+C 退出)
207+ INFO: Application startup complete.
208+ INFO: Uvicorn running on http://127.0.0.1:7777 (Press CTRL+C to quit)
204209```
205210
206- ### 第 6 步 :设置 Web 界面
211+ ### 步骤 6 :设置 Web 界面
207212
208- 为获得更好体验,可设置 Agno 的 Web 界面:
213+ 为获得更佳体验,可配置 Agno 的 Web 界面:
209214
210215``` bash
211216# 创建 Agent UI
@@ -215,20 +220,22 @@ npx create-agent-ui@latest
215220cd agent-ui && npm run dev
216221```
217222
218- ** 连接到代理:**
223+ ** 连接到 Agent:**
224+
2192251 . 打开 [ http://localhost:3000 ] ( http://localhost:3000 )
2202262 . 选择 "localhost:7777" 作为端点
221- 3 . 开始提问关于数据的问题 !
227+ 3 . 开始提问你的数据 !
222228
223229** 试试这些查询:**
230+
224231- "显示所有数据库"
225232- "我有哪些表?"
226233- "描述我的表结构"
227- - "运行查询显示示例数据 "
234+ - "运行查询展示示例数据 "
228235
229236## 资源
230237
231- - ** GitHub 仓库** : [ databendlabs/mcp-databend] ( https://github.com/databendlabs/mcp-databend )
232- - ** PyPI 包** : [ mcp-databend] ( https://pypi.org/project/mcp-databend )
233- - ** Agno 框架** : [ Agno MCP] ( https://docs.agno.com/tools/mcp/mcp )
234- - ** Agent UI** : [ Agent UI] ( https://docs.agno.com/agent-ui/introduction )
238+ - ** GitHub 仓库** : [ databendlabs/mcp-databend] ( https://github.com/databendlabs/mcp-databend )
239+ - ** PyPI 包** : [ mcp-databend] ( https://pypi.org/project/mcp-databend )
240+ - ** Agno 框架** : [ Agno MCP] ( https://docs.agno.com/tools/mcp/mcp )
241+ - ** Agent UI** : [ Agent UI] ( https://docs.agno.com/agent-ui/introduction )
0 commit comments