使用 MCP Toolbox 将 SQLite 接入 IDE:MCP 数据库工具服务器完整配置指南
2026/9/14 11:30:14 网站建设 项目流程

使用 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_tablesexecute_sql

背景:为什么用 MCP 连接 SQLite

Model Context Protocol 是一种开放协议,用于将大语言模型(LLM)与 SQLite 等数据源连接起来。它定义了一套标准化的"工具(tool)"调用方式,使 AI 助手可以像调用函数一样安全、受控地访问数据库:读取表结构、执行查询、写入数据,而无需把数据库凭据或查询逻辑硬编码进提示词。

MCP Toolbox for Databases 在协议之上做了两层封装:

  1. Source(数据源):抽象数据库连接,例如 SQLite 的type: sqlite就指向一个.db文件路径;
  2. Tool(工具):抽象可执行操作,例如sqlite-execute-sqlsqlite-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/amd64curl -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/amd64curl -O https://storage.googleapis.com/mcp-toolbox-for-databases/v1.11.0/windows/amd64/toolbox.exe
windows/arm64curl -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与编译期信息(构建类型、GOOSGOARCH、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

  1. 安装 Claude Code;
  2. 在项目根目录创建.mcp.json(如不存在);
  3. 写入以下配置并保存:
{ "mcpServers": { "sqlite": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt", "sqlite", "--stdio"], "env": { "SQLITE_DATABASE": "./sample.db" } } } }
  1. 重启 Claude Code 使配置生效。

Claude Desktop

  1. 打开 Claude Desktop,进入Settings
  2. Developer标签页点击Edit Config打开配置文件;
  3. 写入与上文相同的mcpServers配置并保存;
  4. 重启 Claude Desktop;
  5. 新建对话时,输入框旁会出现锤子(MCP)图标,其中即可看到新的 MCP 服务器。

Cline(VS Code 扩展)

  1. 在 VS Code 中打开 Cline 扩展,点击MCP Servers图标;
  2. 点击Configure MCP Servers打开配置文件;
  3. 写入上述mcpServers配置并保存;
  4. 服务器连接成功后,状态会显示为绿色 active。

Cursor

  1. 在项目根目录创建.cursor目录(如不存在);
  2. 创建并打开.cursor/mcp.json
  3. 写入上述mcpServers配置并保存;
  4. 打开 Cursor,进入Settings > Cursor Settings > MCP,连接成功后可见绿色 active 状态。

Visual Studio Code(GitHub Copilot)

注意:VS Code 的 MCP 配置文件使用顶层键servers(而非mcpServers)。

  1. 打开 VS Code,在项目根目录创建.vscode目录(如不存在);
  2. 创建并打开.vscode/mcp.json
  3. 写入以下配置并保存:
{ "servers": { "sqlite": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","sqlite","--stdio"], "env": { "SQLITE_DATABASE": "./sample.db" } } } }

Windsurf

  1. 打开 Windsurf,进入 Cascade 助手界面;
  2. 点击锤子(MCP)图标,再点击Configure打开配置文件;
  3. 写入mcpServers配置并保存:
{ "mcpServers": { "sqlite": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","sqlite","--stdio"], "env": { "SQLITE_DATABASE": "./sample.db" } } } }

Gemini CLI

  1. 安装 Gemini CLI;
  2. 在工作目录创建.gemini文件夹,并在其中创建settings.json
  3. 写入mcpServers配置并保存:
{ "mcpServers": { "sqlite": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","sqlite","--stdio"], "env": { "SQLITE_DATABASE": "./sample.db" } } } }

Gemini Code Assist

  1. 在 VS Code 中安装 Gemini Code Assist 扩展;
  2. 在 Gemini Code Assist 聊天中启用Agent Mode
  3. 在工作目录创建.gemini文件夹,并创建settings.json
  4. 写入mcpServers配置并保存:
{ "mcpServers": { "sqlite": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","sqlite","--stdio"], "env": { "SQLITE_DATABASE": "./sample.db" } } } }

第五步:LLM 可用的工具集

连接成功后,AI 助手即可调用以下两个 SQLite 工具(定义见 internal/prebuiltconfigs/tools/sqlite.yaml):

  1. list_tables:列出数据库中的表及其描述信息;
  2. execute_sql:执行任意 SQL 语句。

list_tables:模板化信息查询

list_tablestype: sqlite-sql工具实现(源码见 internal/tools/sqlite/sqlitesql/sqlitesql.go),其特点是"预置 SQL 语句 + 模板参数"。该工具在预置配置中声明了两个templateParameters

参数类型默认值说明
output_formatstringdetailedsimple仅返回表名;detailed返回完整的信息模式(列、约束、索引、触发器)
table_namesstring逗号分隔的表名列表;为空时列出所有用户可访问的表

其底层 SQL 通过{{.output_format}}{{.table_names}}两个 Go 模板占位符拼接,动态构造查询:simple模式只输出{"name": 表名}detailed模式则从sqlite_masterpragma_table_infopragma_foreign_key_listpragma_index_list等 PRAGMA 视图中聚合出每张表的列定义、主键/外键/唯一约束、索引和触发器,再以 JSON 对象返回。

execute_sql:任意 SQL 执行

execute_sqltype: sqlite-execute-sql工具实现(源码见 internal/tools/sqlite/sqliteexecutesql/sqliteexecutesql.go),只接收一个必填参数:

参数类型说明
sqlstring要执行的 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.RunSQLlist_tables则先用ResolveTemplateParamsoutput_formattable_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 +xSQLITE_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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询