TiDB非官方DXT/MCP服务器
一种桌面扩展(DXT),为TiDB数据库操作提供模型上下文协议(MCP)服务器。该扩展使AI助手能够通过一套全面的数据库管理工具与TiDB数据库进行交互。
MCP服务器同时支持这两种功能 标准 (默认)和 流式HTTP 传输,使其与各种MCP客户端和集成场景兼容。
特性
- 数据库管理:列出数据库,在数据库之间切换
- 表操作:显示当前数据库中的表
- SQL执行:在完全支持SQL的情况下执行查询和操作
- 用户管理:创建和删除数据库用户
- 矢量搜索:完全支持TiDB的矢量搜索功能
- 事务支持:在事务中执行多个操作
- 安全配置:环境变量和用户配置支持
安装
- 克隆或下载此存储库
- 安装依赖项:
npm install- 构建扩展:
npm run build配置
可以使用环境变量或DXT用户配置来配置扩展。
环境变量
创建一个 .env 根目录中的文件:
# Option 1: Use a full database URL
TIDB_DATABASE_URL=mysql://username:password@gateway01.us-west-2.prod.aws.tidbcloud.com:4000/database
# Option 2: Use individual connection parameters
TIDB_HOST=gateway01.us-west-2.prod.aws.tidbcloud.com
TIDB_PORT=4000
TIDB_USERNAME=your_username
TIDB_PASSWORD=your_password
TIDB_DATABASE=test
# HTTP Server Configuration (optional)
MCP_HTTP_PORT=3000 # HTTP server port (default: 3000)
MCP_CORS_ORIGIN=* # CORS origin (default: *)DXT用户配置
安装扩展时,您可以配置以下选项:
host:TiDB主机地址(默认:gateway01.us-west-2.prod.aws.tidbcloud.com)port:TiDB端口号(默认值:4000)username:TiDB用户名password:TiDB密码database:默认数据库名称(默认:test)
可用工具
show_databases
显示TiDB集群中的所有数据库。
switch_database
切换到具有可选凭据的特定数据库。
db_name(必填):要切换到的数据库的名称username(可选):新连接的用户名password(可选):新连接的密码
show_tables
显示当前数据库中的所有表。
db_query
在TiDB数据库上执行SELECT查询。最适合只读操作。
sql_stmt(必填):要执行的SQL查询语句
db_execute
执行INSERT、UPDATE、DELETE、CREATE、DROP操作。可以处理事务中的单个语句或语句数组。
sql_stmts(必填):要执行的SQL语句(字符串或数组)
db_create_user
创建新的数据库用户。
username(必填):新用户的用户名password(必填):新用户的密码
db_remove_user
从TiDB集群中删除数据库用户。
username(必填):要删除的用户名
使用示例
基本查询操作
-- Show all databases
SHOW DATABASES;
-- Show tables in current database
SHOW TABLES;
-- Query data with limit
SELECT * FROM users LIMIT 10;
-- Insert data
INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');矢量搜索(特定于TiDB)
-- Create a table with vector column
CREATE TABLE documents (
id INT PRIMARY KEY,
content TEXT,
embedding VECTOR(768),
VECTOR INDEX idx_embedding ((VEC_COSINE_DISTANCE(embedding)))
);
-- Insert vector data
INSERT INTO documents (id, content, embedding) VALUES
(1, 'Sample document', '[0.1, 0.2, 0.3, ...]');
-- Search for similar vectors
SELECT id, content, 1 - VEC_COSINE_DISTANCE(embedding, '[0.1, 0.2, 0.3, ...]') AS similarity
FROM documents
ORDER BY similarity DESC
LIMIT 5;发展
建筑
npm run build开发模式
npm run dev # Watch mode for development运行服务器
MCP服务器可以在两种模式下运行:
1.标准模式(默认)
npm start此模式由MCP Studio和其他基于stdio的客户端使用。
2.流式HTTP模式
npm run start:http或者使用自定义端口:
MCP_HTTP_PORT=8080 npm run start:httpStreamable HTTP服务器提供基于会话的有状态通信协议:
- 主要终点:
http://localhost:{port}/mcp - 支持客户端到服务器请求的POST
- 支持服务器到客户端通知的GET(服务器发送事件)
- 支持删除以终止会话
- 会话管理通过
mcp-session-id头球
测试
要在本地测试扩展:
- 构建扩展:
npm run build - 设置您的
.env具有有效TiDB凭据的文件 - 以首选模式(stdio或HTTP)运行服务器
- 运行测试:
npm test
可用测试命令
npm test # Run all tests
npm run test:basic # Run basic operations tests
npm run test:connector # Run connector tests
npm run test:server # Run stdio server integration tests
npm run test:http # Run HTTP server integration tests安全
- 始终使用环境变量或安全配置作为数据库凭据
- 该扩展支持参数化查询,以防止SQL注入
- 用户管理操作仅限于TiDB中当前用户的角色
故障排除
连接问题
- 验证您的TiDB凭据
- 检查数据库URL格式是否正确
- 确保您的IP在TiDB云控制台中列入白名单
权限错误
- 验证您的用户是否具有您尝试的操作所需的权限
- 对于用户管理操作,请确保您具有管理员权限
许可证
MIT许可证
贡献
欢迎投稿!请随时提交问题和拉取请求。
