使用 MCP Toolbox 将 SQLite 接入 IDE:MCP 数据库工具服务器完整配置指南
【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox
本指南基于 MCP Toolbox for Databases(Google 开源的数据库 MCP 服务器)讲解如何将 SQLite 数据库通过 Model Context Protocol (MCP) 暴露给主流 AI 开发工具。读完本文后,你将掌握 Toolbox 二进制的下载与安装、SQLite 预置工具集的加载原理,以及 Cursor、Windsurf、VS Code (Copilot)、Cline、Claude Desktop、Claude Code、Gemini CLI、Gemini Code Assist 等 8 种客户端的完整配置方法,让 LLM 助手直接对本地 SQLite 文件执行list_tables与execute_sql。
背景:为什么用 MCP 连接 SQLite
Model Context Protocol 是一种开放协议,用于将大语言模型(LLM)与 SQLite 等数据源连接起来。它定义了一套标准化的"工具(tool)"调用方式,使 AI 助手可以像调用函数一样安全、受控地访问数据库:读取表结构、执行查询、写入数据,而无需把数据库凭据或查询逻辑硬编码进提示词。
MCP Toolbox for Databases 在协议之上做了两层封装:
- Source(数据源):抽象数据库连接,例如 SQLite 的
type: sqlite就指向一个.db文件路径; - Tool(工具):抽象可执行操作,例如
sqlite-execute-sql、sqlite-sql两种工具类型,分别用于任意 SQL 执行和模板化查询。
下文从零开始,完成"数据库准备 → 安装 Toolbox → 配置客户端 → 使用工具"的完整链路。
第一步:准备 SQLite 数据库文件
首先创建或选择一个 SQLite 数据库文件,本文示例使用项目根目录下的sample.db:
sqlite3 sample.db "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, email TEXT);"如果本机没有sqlite3CLI,也可以从 SQLite 官网下载命令行工具,或直接让后续接入的 AI 助手通过 MCP 工具来建表(execute_sql支持任意 DDL/DML 语句)。文件的相对路径(如./sample.db)将在客户端配置中通过SQLITE_DATABASE环境变量传给 Toolbox。
第二步:安装 MCP Toolbox
从官方 Release 下载与操作系统、CPU 架构匹配的二进制文件。要求 Toolbox 版本不低于 V0.10.0;当前仓库cmd/version.txt记录的版本为1.11.0,本文下载地址与之一致。按平台选择对应的curl命令:
| 平台 | 命令 |
|---|---|
| linux/amd64 | curl -O https://storage.googleapis.com/mcp-toolbox-for-databases/v1.11.0/linux/amd64/toolbox |
| darwin/arm64(Apple Silicon) | curl -O https://storage.googleapis.com/mcp-toolbox-for-databases/v1.11.0/darwin/arm64/toolbox |
| darwin/amd64(Intel Mac) | curl -O https://storage.googleapis.com/mcp-toolbox-for-databases/v1.11.0/darwin/amd64/toolbox |
| windows/amd64 | curl -O https://storage.googleapis.com/mcp-toolbox-for-databases/v1.11.0/windows/amd64/toolbox.exe |
| windows/arm64 | curl -O https://storage.googleapis.com/mcp-toolbox-for-databases/v1.11.0/windows/arm64/toolbox.exe |
下载后(Linux/macOS)赋予执行权限并验证版本:
chmod +x toolbox ./toolbox --version验证输出会包含语义版本号与构建元数据。从源码看,版本号由version.txt与编译期信息(构建类型、GOOS、GOARCH、commit)拼接而成,参见 cmd/root.go,因此输出形如v1.11.0+binary.linux.amd64.<sha>。
第三步:理解预置配置与两个关键参数
所有客户端配置都使用同一组核心参数,理解其含义后再动手会更顺利:
--prebuilt sqlite:告诉 Toolbox 加载 SQLite 的预置工具配置。预置配置以 YAML 形式内嵌在二进制中,由 internal/prebuiltconfigs/prebuiltconfigs.go 通过go:embed加载,sqlite即对应 internal/prebuiltconfigs/tools/sqlite.yaml;--stdio:以标准输入输出(stdio)模式启动 MCP 服务器,这是桌面 IDE 类 MCP 客户端最常用的传输方式。Toolbox 会根据该标志选择ServeStdio而非 HTTP 监听(参见 cmd/root.go 与 cmd/internal/serve/command.go);env.SQLITE_DATABASE:SQLite 数据库文件的路径。它会被注入预置配置中的${SQLITE_DATABASE}占位符。配置解析器 cmd/internal/config.go 支持${VAR}与${VAR:default}两种语法:前者在环境变量缺失时报错,后者提供默认值兜底。因此你也可以不依赖客户端 env,直接在配置中写死路径或使用默认值语法。
第四步:配置 MCP 客户端
下文按客户端逐一给出配置步骤。除 VS Code 使用servers顶层键外,其余客户端统一使用mcpServers键,且配置内容一致——替换./PATH/TO/toolbox为你的二进制实际路径,替换./sample.db为你的数据库文件路径即可。
Claude Code
- 安装 Claude Code;
- 在项目根目录创建
.mcp.json(如不存在); - 写入以下配置并保存:
{ "mcpServers": { "sqlite": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt", "sqlite", "--stdio"], "env": { "SQLITE_DATABASE": "./sample.db" } } } }- 重启 Claude Code 使配置生效。
Claude Desktop
- 打开 Claude Desktop,进入Settings;
- 在Developer标签页点击Edit Config打开配置文件;
- 写入与上文相同的
mcpServers配置并保存; - 重启 Claude Desktop;
- 新建对话时,输入框旁会出现锤子(MCP)图标,其中即可看到新的 MCP 服务器。
Cline(VS Code 扩展)
- 在 VS Code 中打开 Cline 扩展,点击MCP Servers图标;
- 点击Configure MCP Servers打开配置文件;
- 写入上述
mcpServers配置并保存; - 服务器连接成功后,状态会显示为绿色 active。
Cursor
- 在项目根目录创建
.cursor目录(如不存在); - 创建并打开
.cursor/mcp.json; - 写入上述
mcpServers配置并保存; - 打开 Cursor,进入Settings > Cursor Settings > MCP,连接成功后可见绿色 active 状态。
Visual Studio Code(GitHub Copilot)
注意:VS Code 的 MCP 配置文件使用顶层键servers(而非mcpServers)。
- 打开 VS Code,在项目根目录创建
.vscode目录(如不存在); - 创建并打开
.vscode/mcp.json; - 写入以下配置并保存:
{ "servers": { "sqlite": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","sqlite","--stdio"], "env": { "SQLITE_DATABASE": "./sample.db" } } } }Windsurf
- 打开 Windsurf,进入 Cascade 助手界面;
- 点击锤子(MCP)图标,再点击Configure打开配置文件;
- 写入
mcpServers配置并保存:
{ "mcpServers": { "sqlite": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","sqlite","--stdio"], "env": { "SQLITE_DATABASE": "./sample.db" } } } }Gemini CLI
- 安装 Gemini CLI;
- 在工作目录创建
.gemini文件夹,并在其中创建settings.json; - 写入
mcpServers配置并保存:
{ "mcpServers": { "sqlite": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","sqlite","--stdio"], "env": { "SQLITE_DATABASE": "./sample.db" } } } }Gemini Code Assist
- 在 VS Code 中安装 Gemini Code Assist 扩展;
- 在 Gemini Code Assist 聊天中启用Agent Mode;
- 在工作目录创建
.gemini文件夹,并创建settings.json; - 写入
mcpServers配置并保存:
{ "mcpServers": { "sqlite": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","sqlite","--stdio"], "env": { "SQLITE_DATABASE": "./sample.db" } } } }第五步:LLM 可用的工具集
连接成功后,AI 助手即可调用以下两个 SQLite 工具(定义见 internal/prebuiltconfigs/tools/sqlite.yaml):
- list_tables:列出数据库中的表及其描述信息;
- execute_sql:执行任意 SQL 语句。
list_tables:模板化信息查询
list_tables由type: sqlite-sql工具实现(源码见 internal/tools/sqlite/sqlitesql/sqlitesql.go),其特点是"预置 SQL 语句 + 模板参数"。该工具在预置配置中声明了两个templateParameters:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
output_format | string | detailed | simple仅返回表名;detailed返回完整的信息模式(列、约束、索引、触发器) |
table_names | string | 空 | 逗号分隔的表名列表;为空时列出所有用户可访问的表 |
其底层 SQL 通过{{.output_format}}、{{.table_names}}两个 Go 模板占位符拼接,动态构造查询:simple模式只输出{"name": 表名},detailed模式则从sqlite_master与pragma_table_info、pragma_foreign_key_list、pragma_index_list等 PRAGMA 视图中聚合出每张表的列定义、主键/外键/唯一约束、索引和触发器,再以 JSON 对象返回。
execute_sql:任意 SQL 执行
execute_sql由type: sqlite-execute-sql工具实现(源码见 internal/tools/sqlite/sqliteexecutesql/sqliteexecutesql.go),只接收一个必填参数:
| 参数 | 类型 | 说明 |
|---|---|---|
sql | string | 要执行的 SQL 语句,不能为空 |
调用时工具会校验sql参数非空,将语句交给数据源的RunSQL执行,结果按行以有序 map 返回,并将 JSON 类型的列自动反序列化(参见 internal/sources/sqlite/sqlite.go)。
工具集(toolset)
预置配置末尾将上述两个工具聚合为sqlite_database_tools工具集(toolset):
kind: toolset name: sqlite_database_tools tools: - execute_sql - list_tables这使客户端可按集合粒度管理工具;若想只暴露其中某个工具,也可以使用--prebuilt sqlite/<toolset名>形式按工具集过滤加载(逻辑见 cmd/internal/options.go)。
底层原理:SQLite Source 的连接与执行链
当你运行toolbox --prebuilt sqlite --stdio时,背后发生的事可以概括为三条链路:
1. 配置解析:预置 YAML 被读取、经环境变量替换(${SQLITE_DATABASE}→ 实际路径)后,分别注册一个名为sqlite-source的 source 与两个 tool(参见 cmd/internal/config.go)。
2. 数据源初始化:source 类型sqlite在 internal/sources/sqlite/sqlite.go 中通过init()注册。初始化时使用纯 Go 实现的modernc.org/sqlite驱动(无需 CGO,跨平台友好)打开数据库文件,并做了两个关键设置(sqlite.go):
SetMaxOpenConns(1):SQLite 同一时刻只允许一个写者,串行化连接以避免锁竞争;SetMaxIdleConns(1):保持单个空闲连接。
3. 工具调用:execute_sql通过Invoke拿到sql参数后调用source.RunSQL;list_tables则先用ResolveTemplateParams把output_format、table_names渲染进预置 SQL,再走同一执行路径。若某个 source 与工具类型不兼容(例如把 SQLite 工具指向 PostgreSQL source),ValidateSource会直接报错(见 sqlitesql.go)。单元测试 internal/tools/sqlite/sqlitesql/sqlitesql_test.go 与 internal/tools/sqlite/sqliteexecutesql/sqliteexecutesql_test.go 覆盖了配置解析与参数绑定路径。
第六步:验证与使用
在任意已配置的客户端中,尝试向 AI 助手发出如下指令:
- "列出当前数据库中的所有表"(触发
list_tables); - "创建一个名为 products 的表,包含 id、name、price 三列"(触发
execute_sql执行 DDL); - "往 products 插入几条示例数据并查询"(触发
execute_sql执行 DML/查询)。
所有语句都会经由 MCP 服务器安全地转发到SQLITE_DATABASE指向的数据库文件执行,结果以结构化数据返回给 LLM。
注意事项
- 工具集版本稳定性:预置工具仍处于 pre-1.0 阶段,不同版本之间工具定义可能有变动。由于 LLM 会根据实际暴露的工具清单自适应调用,通常不影响大多数用户的使用;
- 使用场景边界:预置配置面向"构建期"场景(Agent 协助可信开发者编写代码),官方在加载预置配置时会输出警告:它们对"运行期"场景(Agent 与潜在不可信用户交互)而言不够安全(见 cmd/internal/options.go)。若需对外提供服务,建议基于自定义
kind: source+kind: tool配置并自行控制暴露面; - 路径与权限:
command中的二进制路径必须是绝对路径或以./开头的相对路径,并确保已执行chmod +x;SQLITE_DATABASE指向的文件必须对 Toolbox 进程可读写(execute_sql支持写入操作); - 版本要求:务必使用 V0.10.0 及以上版本,旧版本不包含本文所述的
--prebuilt与--stdio组合能力。
【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考