news 2026/4/24 13:14:28

05_TiDB MCP Server实战:将数据库能力接入AI工具生态

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
05_TiDB MCP Server实战:将数据库能力接入AI工具生态

05_TiDB MCP Server 实战:将数据库能力接入 AI 工具生态

标签:TiDBMCPClaude CodeCursorAI编程数据库工具Model Context Protocol

关键词:TiDB MCP Server、Model Context Protocol、Claude Code集成、Cursor集成、pytidb MCP、AI数据库工具、自然语言查询、tidb-mcp-server、MCP配置


一、从"对话编程"到"对话数据库"

2024年以来,Claude Code、Cursor、GitHub Copilot 这类 AI 编程工具改变了很多开发者的工作方式——写代码可以用自然语言描述意图了。但数据库操作这一块,始终有一道墙:你得切换到数据库客户端,手写 SQL,看结果,再回来改代码。

TiDB MCP Server 的出现打破了这道墙。通过 Model Context Protocol(MCP),AI 助手可以直接"看到"数据库里有什么,用自然语言就能完成查询、建表、分析数据——全程不用切换工具,不用手写 SQL。

本文从 MCP 协议原理出发,完整讲解 TiDB MCP Server 的配置、使用和最佳实践。


二、Model Context Protocol:AI 工具集成的通用语言

2.1 MCP 要解决什么问题

在 MCP 出现之前,每个 AI 工具想要集成外部数据源,都要自己实现一套接口——OpenAI 的 Function Calling、Anthropic 的 Tool Use、各种私有 Plugin 协议。开发者苦不堪言:换一个 AI 工具,就要重写一套集成代码。

MCP(Model Context Protocol)是 Anthropic 于 2024 年底发布的开放标准,设计目标是:让 AI 工具和外部系统之间有一套统一的通信协议,类似于数据库连接的 JDBC/ODBC。

没有 MCP 的世界: Claude --> 自定义API --> 数据库 Cursor --> 不同API --> 数据库 Copilot --> 又一套 --> 数据库 有 MCP 的世界: Claude --| Cursor --|-- MCP Protocol --> MCP Server --> 数据库 Copilot-|

2.2 MCP 的工作原理

MCP 采用 Client-Server 架构:

AI 工具(MCP Client) MCP Server | | | 工具发现请求 | |------------------------------>| | | | 返回:工具列表 | |<------------------------------| | | | 调用工具:查询数据库 | |------------------------------>| | | | 执行 SQL | | +----------v----------+ | | TiDB 数据库 | | +----------+----------+ | | | 返回:查询结果 | |<------------------------------| | |

MCP Server 通过 stdio 或 SSE 与 AI 工具通信,暴露一组"工具"(Tools)供 AI 调用。TiDB MCP Server 提供的工具包括:数据库元数据发现、SQL 执行、Schema 管理等。


三、TiDB MCP Server 安装配置

3.1 前置条件

# 安装 uv(Python 包管理器,uvx 命令来自 uv)pipinstalluv# 或者用 Homebrew(macOS)brewinstalluv# 验证安装uvx--version

3.2 Claude Code 集成配置

方法一:命令行配置(推荐,快速上手)

# 在终端中配置 TiDB MCP Serverclaude mcpaddTiDB uvx\--from"pytidb[mcp]"tidb-mcp-server\-eTIDB_HOST="gateway01.eu-central-1.prod.aws.tidbcloud.com"\-eTIDB_PORT="4000"\-eTIDB_USERNAME="your_username"\-eTIDB_PASSWORD="your_password"\-eTIDB_DATABASE="your_database"# 验证配置是否成功claude mcp list

方法二:.mcp.json 配置文件(团队共享推荐)

在项目根目录创建.mcp.json(添加到.gitignore,避免密码泄露):

{"mcpServers":{"TiDB":{"type":"stdio","command":"uvx","args":["--from","pytidb[mcp]","tidb-mcp-server"],"env":{"TIDB_HOST":"gateway01.eu-central-1.prod.aws.tidbcloud.com","TIDB_PORT":"4000","TIDB_USERNAME":"your_username.root","TIDB_PASSWORD":"your_password","TIDB_DATABASE":"your_database","TIDB_SSL_CA":"/path/to/ca.pem"}}}}

TiDB Cloud SSL 证书获取:

# TiDB Cloud Serverless 需要 SSL 连接# 在 TiDB Cloud Console -> 集群详情 -> 连接信息 -> 下载 CA 证书# 证书默认路径:~/.tidb/ca.pem

3.3 Cursor 集成配置

在 Cursor 的 MCP 配置界面(Settings -> MCP),添加配置:

{"mcpServers":{"tidb":{"command":"uvx","args":["--from","pytidb[mcp]","tidb-mcp-server"],"env":{"TIDB_HOST":"your_tidb_host","TIDB_PORT":"4000","TIDB_USERNAME":"your_user","TIDB_PASSWORD":"your_password","TIDB_DATABASE":"your_db"}}}}

3.4 本地 TiDB Self-Managed 配置

{"mcpServers":{"TiDB-local":{"type":"stdio","command":"uvx","args":["--from","pytidb[mcp]","tidb-mcp-server"],"env":{"TIDB_HOST":"127.0.0.1","TIDB_PORT":"4000","TIDB_USERNAME":"root","TIDB_PASSWORD":"","TIDB_DATABASE":"test"}}}}

四、TiDB MCP Server 能力详解

4.1 工具列表

TiDB MCP Server 注册了以下工具,AI 可以按需调用:

工具名功能描述
list_databases列出所有数据库
list_tables列出指定数据库的所有表
describe_table查看表结构(字段、类型、注释、索引)
execute_sql执行任意 SQL 语句
create_table根据描述生成并执行建表语句
show_create_table查看完整的 CREATE TABLE 语句

4.2 元数据发现能力

这是 MCP Server 在开发场景中最有价值的能力。当 Claude Code 连接 TiDB 后,你可以直接问:

你:数据库里有哪些表?每个表大概是做什么的? Claude:我来查看一下数据库结构... [调用 list_tables,获取所有表名] [调用 describe_table,逐一查看表结构] 数据库中有以下表: 1. users(用户表)- 存储用户基本信息,包含 id, username, email, created_at 等字段 2. orders(订单表)- 存储订单数据,关联 users 表,包含 order_status, total_amount 等 3. order_items(订单明细表)- 存储订单商品明细,关联 orders 和 products 4. products(商品表)- 商品信息,包含 category, price, stock 等 5. doc_embeddings(向量文档表)- 知识库向量数据,embedding 列为 VECTOR(1536) 整体看起来是一个电商系统...

这种上下文感知能力,让 Claude Code 可以在不切换工具的情况下,理解整个数据库架构并直接编写针对性代码。


五、实战案例:Claude Code + TiDB 智能开发

5.1 案例一:AI 辅助数据库设计

场景:新建一个用户收藏功能的表 你:我需要设计一个用户收藏商品的表,要求: 1. 支持软删除 2. 收藏时可以加备注 3. 要考虑到用户查看自己收藏列表的查询性能 Claude:[调用 list_tables 查看现有表结构] 了解到已有 users 表和 products 表后,我建议如下设计: CREATE TABLE user_favorites ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT NOT NULL COMMENT '用户ID', product_id BIGINT NOT NULL COMMENT '商品ID', note VARCHAR(500) COMMENT '用户备注', is_deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '软删除标记', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted_at DATETIME COMMENT '删除时间', -- 用户查看收藏列表的核心索引 INDEX idx_user_active (user_id, is_deleted, created_at DESC), -- 防止重复收藏(排除已删除的) UNIQUE KEY uk_user_product (user_id, product_id), FOREIGN KEY fk_user (user_id) REFERENCES users(id), FOREIGN KEY fk_product (product_id) REFERENCES products(id) ) COMMENT='用户商品收藏表' ENGINE=InnoDB; 是否要我直接执行这个建表语句?

5.2 案例二:自然语言数据探索

你:帮我看一下我们数据库里向量搜索的表现如何, 比如 doc_embeddings 表有多少条数据,向量维度是多少 Claude:[调用 execute_sql] SQL: SELECT COUNT(*) AS total_rows FROM doc_embeddings; 结果:total_rows = 1,247,832 [调用 execute_sql] SQL: SELECT VEC_DIMS(embedding) AS dims FROM doc_embeddings LIMIT 1; 结果:dims = 1536 [调用 describe_table(doc_embeddings)] 发现 embedding 列类型为 VECTOR(1536),无向量索引 数据库中有 124 万条向量数据,维度 1536(OpenAI text-embedding-3-small)。 我注意到 embedding 列**没有创建向量索引**,这对于 124 万条数据的查询性能 会有很大影响。建议执行: ALTER TABLE doc_embeddings ADD VECTOR INDEX idx_embedding_cosine ((VEC_COSINE_DISTANCE(embedding))); 这个操作在后台执行,不影响在线查询。要执行吗?

这个例子展示了 MCP Server 的真正价值:AI 不只是回答问题,而是主动发现潜在问题(无向量索引),并给出具体的优化建议,甚至可以直接执行修复。

5.3 案例三:AI 生成完整应用代码

你:帮我写一个 Python 函数,查询知识库中和给定文本语义最相近的 5 篇文档, 要先按 category 过滤 Claude:[调用 describe_table(doc_embeddings) 查看表结构] 了解到字段有 id, doc_id, title, content, category, embedding 好的,基于表结构生成代码: ```python import openai import pymysql from typing import Optional, List, Dict def semantic_search( query: str, category: Optional[str] = None, top_k: int = 5, conn: pymysql.Connection = None ) -> List[Dict]: """ 语义搜索知识库 :param query: 查询文本 :param category: 文档类别过滤(可选) :param top_k: 返回前 K 个结果 :param conn: TiDB 数据库连接 """ client = openai.OpenAI() # 生成查询向量 resp = client.embeddings.create( model="text-embedding-3-small", input=query ) vec = resp.data[0].embedding vec_str = "[" + ",".join(str(v) for v in vec) + "]" # 构建查询 sql = """ SELECT id, doc_id, title, content, category, VEC_COSINE_DISTANCE(embedding, %s) AS distance FROM doc_embeddings {where_clause} ORDER BY distance ASC LIMIT %s """.format( where_clause="WHERE category = %s" if category else "" ) with conn.cursor(pymysql.cursors.DictCursor) as cursor: if category: cursor.execute(sql, (vec_str, category, top_k)) else: cursor.execute(sql, (vec_str, top_k)) return cursor.fetchall()

这个函数已经考虑了:

  1. 向量维度匹配(1536维,对应 text-embedding-3-small)
  2. 按 category 的可选过滤
  3. 使用余弦距离(适合文本语义)
  4. 参数化查询防 SQL 注入
### 5.4 案例四:SQL 性能优化建议

你:这条查询执行很慢,帮我分析一下
SELECT * FROM orders WHERE DATE(created_at) = ‘2024-01-15’

Claude:[调用 execute_sql]
EXPLAIN SELECT * FROM orders WHERE DATE(created_at) = ‘2024-01-15’;
– 发现:type=ALL,表示全表扫描,没有用到索引

[调用 describe_table(orders)]
– 发现 created_at 字段没有索引

发现问题了:

  1. WHERE DATE(created_at) = ‘…’ 对 created_at 使用了函数,
    导致索引失效(即使有索引也用不上)

  2. created_at 字段目前没有索引

优化方案:

– 方案1:添加索引并改写查询(推荐)
CREATE INDEX idx_created_at ON orders(created_at);

– 改写查询(避免对索引列使用函数)
SELECT * FROM orders
WHERE created_at >= ‘2024-01-15 00:00:00’
AND created_at < ‘2024-01-16 00:00:00’;

– 方案2:使用函数索引(TiDB 5.0+ 支持)
CREATE INDEX idx_date_created ON orders ((DATE(created_at)));
– 然后原查询可以用

要执行优化吗?

--- ## 六、安全配置最佳实践 MCP Server 拥有直接执行 SQL 的权限,生产环境需要严格的安全控制。 ### 6.1 使用只读账户 ```sql -- 创建只读 MCP 专用账户 CREATE USER 'mcp_readonly'@'%' IDENTIFIED BY 'strong_password'; GRANT SELECT ON your_database.* TO 'mcp_readonly'@'%'; -- 不授予 INSERT/UPDATE/DELETE/DROP 等写权限 FLUSH PRIVILEGES;
{"env":{"TIDB_USERNAME":"mcp_readonly","TIDB_PASSWORD":"strong_password"}}

6.2 敏感数据脱敏

如果数据库包含用户隐私数据,在给 AI 使用时需要在 MCP Server 层做脱敏处理,或者创建专门的视图:

-- 创建脱敏视图供 MCP 使用CREATEVIEWv_users_safeASSELECTid,CONCAT(LEFT(username,2),'***')ASusername,CONCAT(LEFT(email,3),'***@***.com')ASemail,created_atFROMusers;-- 只给 MCP 账户 v_users_safe 的访问权限GRANTSELECTONyour_db.v_users_safeTO'mcp_readonly'@'%';REVOKESELECTONyour_db.usersFROM'mcp_readonly'@'%';

6.3 .mcp.json 安全管理

# .mcp.json 不能提交到 Git(包含数据库密码)echo".mcp.json">>.gitignore# 使用环境变量代替硬编码密码# .mcp.json 中引用环境变量
{"mcpServers":{"TiDB":{"command":"uvx","args":["--from","pytidb[mcp]","tidb-mcp-server"],"env":{"TIDB_HOST":"${TIDB_HOST}","TIDB_PASSWORD":"${TIDB_PASSWORD}"}}}}

七、常见问题排查

问题 1:uvx 命令找不到

# 错误:command not found: uvx# 解决:确认 uv 正确安装并在 PATH 中whichuvx# 如果找不到:pipinstalluvexportPATH="$HOME/.local/bin:$PATH"

问题 2:SSL 连接失败

# 错误:SSL connection error# 解决:下载 TiDB Cloud CA 证书并指定路径curl-Ohttps://letsencrypt.org/certs/isrgrootx1.pem# 在 env 中指定"TIDB_SSL_CA":"/path/to/isrgrootx1.pem"

问题 3:工具调用超时

MCP Server 默认超时 30 秒,大查询可能超时。建议在 SQL 中加 LIMIT 限制返回行数,或者优化慢查询后再通过 MCP 执行。


八、总结

TiDB MCP Server 让数据库能力真正融入 AI 开发工具生态,带来的不只是效率提升,更是工作方式的改变:

  1. MCP 协议是 AI 工具与外部系统集成的通用标准,TiDB 官方支持
  2. 安装配置简单uvx --from pytidb[mcp] tidb-mcp-server加环境变量即可
  3. 四大核心价值:元数据自动发现、自然语言查询、SQL 执行与调优、Schema 管理
  4. 安全第一:生产环境务必使用只读账户,敏感数据做脱敏视图
  5. 实际体验:结合 Claude Code,数据库设计、调优建议、代码生成效率提升 3 倍以上

下一篇我们进入 LangChain 和 LlamaIndex 集成,看 TiDB 如何在主流 AI 框架中扮演向量存储的角色,构建端到端 RAG 应用。


相关资源:

  • TiDB MCP Server 官方文档
  • Model Context Protocol 官网
  • pytidb GitHub
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 14:33:08

保姆级避坑指南:在Vue3 + TypeScript项目中优雅集成百度地图(去水印、异步加载、样式配置)

Vue3 TypeScript 百度地图深度集成实战&#xff1a;从安全配置到高级定制 在当今前端开发领域&#xff0c;地图功能已成为许多企业级应用的标配需求。百度地图作为国内领先的地图服务提供商&#xff0c;其稳定性和丰富的API生态使其成为众多开发者的首选。本文将从一个资深前端…

作者头像 李华
网站建设 2026/4/11 14:32:14

OBS多平台直播插件完全指南:一键实现多平台同时推流

OBS多平台直播插件完全指南&#xff1a;一键实现多平台同时推流 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 还在为每次直播只能选择一个平台而烦恼吗&#xff1f;你是否希望将精彩内…

作者头像 李华
网站建设 2026/4/11 14:32:06

终极英雄联盟智能工具箱:如何用League Akari轻松提升游戏体验

终极英雄联盟智能工具箱&#xff1a;如何用League Akari轻松提升游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟繁琐的…

作者头像 李华
网站建设 2026/4/11 14:30:17

艾尔登法环存档迁移终极指南:轻松实现角色数据无缝转移

艾尔登法环存档迁移终极指南&#xff1a;轻松实现角色数据无缝转移 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 还在为《艾尔登法环》存档丢失而烦恼吗&#xff1f;这款免费开源工具EldenRingSaveCopier能…

作者头像 李华
网站建设 2026/4/11 14:30:15

2025/1/7 从零部署tRNAscan-SE-2.0:Anaconda环境下的生物信息学工具实战

1. 为什么选择Anaconda部署tRNAscan-SE-2.0&#xff1f; 如果你正在研究非编码RNA&#xff0c;特别是tRNA的结构和功能&#xff0c;那么tRNAscan-SE-2.0这个工具你一定不陌生。作为目前最权威的tRNA预测工具之一&#xff0c;它能够快速准确地识别基因组序列中的tRNA基因。但很多…

作者头像 李华
网站建设 2026/4/11 14:30:12

Zemax非序列模式新手入门:从零搭建一个抛物面反射镜系统(含灯丝光源与探测器设置)

Zemax非序列模式实战&#xff1a;构建抛物面反射镜系统的完整指南 光学仿真软件Zemax的非序列模式为复杂光学系统设计提供了强大支持&#xff0c;尤其适合处理光线在自由空间传播、多次反射或散射的场景。本文将带您从零开始&#xff0c;在非序列模式下搭建一个完整的抛物面反射…

作者头像 李华