尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何在内网配置 TiDB 数据库 Agent

如何在内网配置 TiDB 数据库 Agent 如何在内网配置 TiDB 数据库 Agent昨天的文章已经实现了通过FastAPI OpenAI pyTiDB的方式搭建 Agent 智能体也在文章结尾演示了在聊天框中操作数据库。但是因为此种方式要手写一个FastAPI http接口加上 Centos 7.9 的系统GCC和Python版本都较低操作相对复杂。因此这次我们使用 RockyLinux 的系统再配置一次 TiDB 数据库的 Agent这里我们就演示通过MCP SSE的方式先介绍和对比一下这两种方式。1. MCP VS FastAPI在将TiDB的能力接入Dify时主要有两种可选方案一种是原生MCP (SSE)模式达梦的此种方式弄了很久没搞成功; 另一种是FastAPI自定义桥接 OpenAPI的Custom Tool模式。 以下是二者对比与适用场景分析 核心多维度对比对比维度方式一原生 MCP (SSE) 模式方式二FastAPI OpenAPI 模式开发成本**极低零代码**直接运行官方打包好的工具开箱即用。**中等需写代码**需要用 Python 编写 FastAPI 后端、处理连接池及路由。Dify 接入复杂度极简在 Dify 中添加一个 MCP 地址所有数据库工具自动同步。中等需要将 FastAPI 生成的 OpenAPI JSON 复制并配置到 Dify 中。数据安全与权限控制**低大模型自由度高**AI 拥有执行任意只读 SQL或特定用户权限内 DDL/DML的权力。**极高代码级拦截**可以在 Python 代码中对 SQL 实施拦截、校验、硬编码过滤或仅暴露固定接口。业务逻辑定制性弱只能进行标准的数据库增删改查。极强可以在查库前后加入任何业务逻辑如查完 TiDB 再调用高德 API再返回给 Dify。维护成本低跟进 PingCAP 官方的 MCP 升级即可。高数据库表结构变动或接口增删时需要同步修改代码并重新导入 Dify。 适用场景分析与选型建议1. 优先选择 方式一原生 MCP (SSE) 模式内部 PoC / 快速原型验证希望以最快速度搭建演示系统验证LLM TiDB的 RAG 或 Data Agent 能力。数据分析/报表 Agent主要用于内部数据查询与分析允许 AI 灵活用 SQL 进行多维度探索。低代码/无代码团队缺乏足够的后端开发资源希望直接复用官方生态组件。2. 优先选择 方式二FastAPI OpenAPI 模式生产环境上线对数据安全、SQL 注入风险要求极高的线上业务。复杂业务流查询数据前需要鉴权/过滤或者查库后需要拼装第三方 API 数据如 API 聚合。面向终端用户的应用不希望大模型直接接触数据库底层结构仅暴露出特定的业务 API 。总结下来就是想省事、想快点用上就用 MCP 标准的模式想更安全、自己完全掌控就用 FastAPI OpenAPI 模式。Dify、FastAPI、MCP、Ollama等这些概念我们之前文章已经介绍了此次部署环境如下下面我们直接进行配置环节。机器IP配置大小部署组件备注192.168.182.164C8GDify/TiDB MCPRockyLinux 虚拟机192.168.182.314C8GTiDB-Server/PD/Tikv-ServerCentos7.9 虚拟机192.168.182.324C8GTiDB-Server/PD/Tikv-ServerCentos7.9 虚拟机192.168.182.334C8GTiDB-Server/PD/Tikv-ServerCentos7.9 虚拟机2. 安装 Dify2.1 基础环境准备# 1. 配置 Rocky Linux 阿里云源sudotee/etc/yum.repos.d/aliyun-rocky.repoEOF [baseos] nameRocky Linux $releasever - BaseOS - Aliyun baseurlhttps://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/ gpgcheck1 enabled1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial [appstream] nameRocky Linux $releasever - AppStream - Aliyun baseurlhttps://mirrors.aliyun.com/rockylinux/$releasever/AppStream/$basearch/os/ gpgcheck1 enabled1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial [extras] nameRocky Linux $releasever - Extras - Aliyun baseurlhttps://mirrors.aliyun.com/rockylinux/$releasever/extras/$basearch/os/ gpgcheck1 enabled1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial EOF# 2. 清理旧的 dockersudodnf remove-ypodmanruncdockerdocker-client docker-common docker-engine# 3. 配置 docker 的阿里云源sudodnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 4. 清缓存建缓存sudodnf clean allsudodnf makecache# 5. 终端配置代理可选为了方便 git 克隆cat/etc/profileEOF export http_proxyhttp://192.168.182.1:10811 export https_proxyhttp://192.168.182.1:10811 export no_proxylocalhost,127.0.0.1,*.aliyun.com,mirrors.aliyun.com EOF# 6. 使生效source/etc/profile# 7. 验证curl-Ihttps://google.com2.2 安装 docker# 1. 安装 docker sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 2. 配置 docker 里面的代理 sudo mkdir -p /etc/systemd/system/docker.service.d sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf EOF [Service] EnvironmentHTTP_PROXYhttp://126.168.182.1:10811 EnvironmentHTTPS_PROXYhttp://192.168.182.1:10811 EnvironmentNO_PROXYlocalhost,127.0.0.1,192.168.0.0/16,172.16.0.0/12,10.0.0.0/8,*.aliyun.com,://aliyun.com,*.aliyuncs.com,host.docker.internal EOF # 3. 重新加载配置并重启 Docker sudo systemctl daemon-reload sudo systemctl restart docker sudo systemctl status docker # 4. docker 安装验证 systemctl show docker --propertyEnvironment [rootlocalhost yum.repos.d]# docker --version Docker version 29.7.2, build a7dcaa6 [rootlocalhost yum.repos.d]# docker compose version Docker Compose version v5.5.02.3 安装 DifyDocker 和 Docker Compose已全部就绪。终端代理已通可以极速克隆 GitHub 源码。Docker 引擎代理已通可以无阻碍拉取 Docker Hub 上的 Dify 镜像。# 1. 使用 git 克隆 difysudodnfinstall-ygitgitclone https://github.com/langgenius/dify.git# 如果速度慢就直接下载压缩包解压到 opt 下面wgethttps://github.com/langgenius/dify/archive/refs/heads/main.zipunzipmain.zip-d/opt/# 2. 进入 Docker 编排目录cddify-main/docker# 3. 复制生成环境变量文件cp.env.example .env# 修改此参数SSRF_PROXY_ALLOW_PRIVATE_IPS127.0.0.1,172.17.0.0/16,192.168.0.0/16# 4. 一键拉起 Dify 服务集群dockercompose up-d至此 Dify 在内网已经部署好了下面我们开始配置 MCP 。3. TiDB MCP 配置# 1. 在 /opt 目录克隆 pytidb 项目[rootlocalhost opt]# git clone https://github.com/pingcap/pytidb正克隆到pytidb... remote: Enumerating objects:2363, done. remote: Counting objects:100%(1005/1005), done. remote: Compressing objects:100%(494/494), done. remote: Total2363(delta778), reused536(delta510), pack-reused1358(from3)接收对象中:100%(2363/2363),2.59MiB|953.00KiB/s, 完成. 处理 delta 中:100%(1367/1367), 完成.# 2. 安装相关依赖[rootlocalhost opt]# cd pytidb[rootlocalhost opt]# sudo dnf install -y gcc gcc-c make python3-devel --nogpgcheck# 3. uv 下载 Python 3.12要求大于 3.11 版本 并建立虚拟环境[rootlocalhost pytidb]# uv venv --python python3.12Using CPython3.12.14 Creating virtual environment at: .venv Activate with:source.venv/bin/activate# 4. 激活刚刚创建的虚拟环境[rootlocalhost pytidb]# source .venv/bin/activate# 5. 执行同步下载拉取全部 TiDB MCP 组件及依赖(pytidb)[rootlocalhost pytidb]# uv sync --extra mcpResolved200packagesin1ms Built pytidb file:///opt/pytidb Prepared170packagesin19m 34s Installed170packagesin1.29s aiohappyeyeballs2.6.1 aiohttp3.11.18 aiosignal1.3.2 annotated-doc0.0.5 annotated-types0.7.0...# 如果报错解决报错清理环境重新再创建虚拟环境rm-rf.venv/ uv cache clean# 6. 查看 venv 里是 mcp 2.x 还是 1.x(pytidb)[rootlocalhost pytidb]# .venv/bin/pip show mcp# 7. 要求安装 mcp 1.x 版本(pytidb)[rootlocalhost pytidb]# .venv/bin/pip install mcp2... Successfully installed httpx-sse-0.4.3 mcp-1.29.1# 8. 测试是否安装成功(pytidb)[rootlocalhost pytidb]# .venv/bin/python -c from mcp.server.fastmcp import FastMCP; print(OK)OK# 9. 创建配置文件 .env 的文件存放本地 TiDB 数据库集群凭证cat/opt/pytidb/.envEOF TIDB_HOST192.168.182.31 TIDB_PORT4000 TIDB_USERNAMEroot TIDB_PASSWORDroot TIDB_DATABASEtest EOF# 10. 启动前 source 一下(pytidb)[rootlocalhost pytidb]# set -a source .env set a# 11. 一键启动常驻的 SSE 后台服务(pytidb)[rootlocalhost pytidb]# .venv/bin/python -m pytidb.ext.mcp --transport sse --host 0.0.0.0 --port 80002026-08-29 07:53:40,840 - tidb_mcp_server - INFO - Starting tidb mcp server... INFO: Started server process[988751]INFO: Waitingforapplication startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000(Press CTRLC to quit)现在 MCP SSE 模式已经在监听了。接下来需要配置 MCP 客户端切换回 Dify 的网页后台。4. Dify 集成 MCP 和大模型4.1 安装MCP SSE插件Windows 中打开谷歌浏览器 输入 Dify 所在的虚拟机 IP 地址邮箱注册并登录。在 marketPlace 中 找到MCP SSE / StreamableHTTP可以 ctrl F 搜 sse点击安装。4.2 配置 MCP点击 集成选择工具插件选择刚刚安装的MCP SSE / StreamableHTTP配置 API Key 授权。输入如下代码。{ tidb: { transport: sse, url: http://172.17.0.1:8000/sse, headers: {}, timeout: 60, sse_read_timeout: 300 } }保存后提示操作成功。4.3 配置大模型在 marketPlace 中 找到 大模型厂商Deepseek、Gemini、OpenAI 都行这些都是在线大模型如果本地使用 Ollama 启动了大模型可以选择 Ollama如何安装和集成到 Dify请看上篇博客这里就直接配置和使用 Deep 在线大模型。4.4 打通数据链第一步创建一个 Agent智能体应用登录 Dify 后台点击左边导航栏的「Agents」。点击左侧或右上角的「创建空白应用]名称可以填TiDBAgent。点击「创建 (Create)」进入 Agent 编排画布。第二步为 Agent 配置“大脑”与“提示词”进入编排页面后在中间的配置面板中进行以下两步操作选择大模型 (LLM)在左上角的下拉菜单中选择你刚刚在第一步配好的大模型如你配置好的Gemini、DeepSeek或OpenAI。填写系统提示词 (Instructions)在左侧的提示词文本框中粘贴以下专门针对 TiDB MCP 优化的引导词# 角色 你是一个高级分布式数据库 TiDB 的数据分析专家。你能够完美理解用户的中文业务诉求并自动通过调用 TiDB 工具箱来获取真实数据。 # 核心工作流 1. 当用户让你查询、分析数据时如果不知道表结构请【必须】首先调用 show_tables或相关获取结构的工具查看有哪些表。 2. 理解表结构后根据用户的意图编写准确、高效且安全的 SQL 语句。 3. 调用 db_query 工具执行你编写的 SQL。 4. 拿到数据库返回的 JSON 数据后将数据用人性化的中文大白话或者 Markdown 表格/图表整理并回答给用户。 # 注意事项 - 只能执行只读查询严禁执行高危的删除或清空操作。 - 如果遇到 SQL 执行报错请根据错误信息自我纠正 SQL 并重新尝试直到查出结果。第三步为 Agent 注入 TiDB MCP 超能力这一步是把 MCP 工具挂载到大模型身上在配置面板中找到「工具 (Tools)」模块点击右侧的「 添加 ( Add)」按钮。在弹出的工具列表中找到刚刚添加的MCP SSE。5. Agent 测试现在已经打通了我们与 Agent 进行对话。5.1 场景1询问数据库集群信息5.2 场景2集群有多少个 raft group5.3 场景3test_db 下面有几张表数据量分别是多少5.4 场景4能否为tab_tidb 插入几行测试数据至此用 AI 来操作内网的TiDB数据库已经成功了这里由于我的Dify所在的Rocky Linux可以连公网我偷了个懒使用了DeepSeek在线大模型。如果内网部署了大模型如通过 Ollama就直接切换模型即可。Dify相比cursorDify支持团队协同和多端共享也就是办公室同事都可以使用。如果对概念定位还有点模糊可以翻一下之前的文章今天的实战就到这里。这里是《实战派K8SDB》更多干货敬请关注公众号。如果本文对你有所帮助欢迎点赞、推荐和转发也欢迎关注后续文章一起考证、一起学习 TiDB 分布式数据库。
返回列表