mcpField
M
mcp-sqlite-tools

mcp-sqlite-tools

本地服务
github.com/spences10数据库201 天前更新

关于 mcp-sqlite-tools

mcp-sqlite-tools 是一个用于本地 SQLite 数据库操作的 MCP 服务。它为 MCP 客户端提供读取、写入、结构管理、事务、CSV、备份和维护等明确分类的工具,便于客户端设置审批策略。

主要功能

  1. 01读取查询支持命名或位置参数与分页
  2. 02写入与结构变更使用独立工具
  3. 03支持带表头的 CSV 导入与导出
  4. 04支持嵌套保存点的事务
  5. 05通过配置限制数据库与 CSV 路径

适用场景

  1. 01让 MCP 客户端安全地查询本地 SQLite 数据库
  2. 02对只读工具免审批、对写入工具要求审批
  3. 03在结构变更或大批量导入前备份数据库

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 open_database、execute_read_query、import_csv 等数据库操作工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"spences10-mcp-sqlite-tools": {
"command": "npx",
"args": [
"-y",
"mcp-sqlite-tools"
]
}
}
}
启动命令npx -y mcp-sqlite-tools

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-sqlite-tools0.0.11

工具

19

收录的工具列表 · 更新于 2 周前

参数类型必填说明
pathstring是
createboolean否

详细介绍

mcp-sqlite-tools

用于安全执行本地 SQLite 数据库操作的模型上下文协议(MCP)服务。它为 MCP 客户端提供明确的读取、写入、架构、事务、CSV、备份和维护工具。

功能

  • 打开、创建、检查、备份、清理和关闭 SQLite 数据库
  • 列出、描述、创建和删除表
  • 使用命名或位置参数运行分页读取查询
  • 运行明确的写入和架构查询
  • 导入和导出带表头的 CSV 文件
  • 使用带嵌套保存点的事务
  • 将架构导出和导入为 SQL 或 JSON
  • 通过配置限制数据库和 CSV 路径
  • 将有破坏性的工具分类,以便客户端应用审批策略
  • 使用 Node 内置的 SQLite 驱动,无需依赖原生插件

要求

  • Node.js 24.12 或更高版本
  • 支持 stdio 服务的 MCP 客户端

配置 MCP 客户端

MCP 客户端通过 npx 启动此服务;无需全局安装。

使用 MCPick 安装

MCPick 可将此服务添加到受支持的客户端,无需手动编辑 JSON。默认情况下,此命令针对 Claude Code 的本地范围:

npx -y mcpick add \
  --name sqlite-tools \
  --command npx \
  --args "-y,mcp-sqlite-tools"

如有需要,可明确选择客户端和范围:

npx -y mcpick add \
  --name sqlite-tools \
  --command npx \
  --args "-y,mcp-sqlite-tools" \
  --client vscode \
  --scope project

add 命令支持 Claude Code、Gemini CLI、VS Code、Cursor、Windsurf、OpenCode 和 Pi。运行 npx mcpick clients,查看当前的客户端功能、范围和配置位置。

这些示例使用最新的软件包版本。若要使用可复现的配置,请将 --args 中的 mcp-sqlite-tools 替换为确切版本,例如 [email protected]。

手动配置

对于不受支持的客户端或高级配置,请手动添加此服务:

{
	"mcpServers": {
		"mcp-sqlite-tools": {
			"command": "npx",
			"args": ["-y", "mcp-sqlite-tools"],
			"env": {
				"SQLITE_DEFAULT_PATH": ".",
				"SQLITE_ALLOW_ABSOLUTE_PATHS": "true",
				"SQLITE_BUSY_TIMEOUT": "30000",
				"SQLITE_JOURNAL_MODE": "wal",
				"SQLITE_BACKUP_PATH": "./backups"
			}
		}
	}
}

VS Code 使用 servers 对象,而不是 mcpServers。更多面向特定客户端的示例,请参阅配置指南。

环境变量

变量用途默认值
SQLITE_DEFAULT_PATH数据库文件的基础目录.
SQLITE_ALLOW_ABSOLUTE_PATHS允许使用默认目录以外的路径true
SQLITE_BACKUP_PATH默认备份目录默认数据库路径
SQLITE_BUSY_TIMEOUTSQLite 锁忙超时时间(毫秒)30000
SQLITE_JOURNAL_MODEdelete、truncate、persist 或 walwal
DEBUG启用诊断日志false

当 SQLITE_ALLOW_ABSOLUTE_PATHS=false 时,相对路径和绝对路径都必须解析到 SQLITE_DEFAULT_PATH 内。不能使用符号链接逃出该目录。

对于文件同步目录中的数据库,请使用 SQLITE_JOURNAL_MODE=delete。不安全的 SQLite 模式 memory 和 off 不受支持。

SQLITE_MAX_QUERY_TIME 仍可作为已弃用的 SQLITE_BUSY_TIMEOUT 别名使用。它不会限制查询的实际运行时长。

工具

工具按用途分类,以便 MCP 客户端应用明确的审批规则。

安全且只读
工具用途
open_database打开现有数据库
close_database关闭一个数据库连接
list_databases查找目录中的数据库文件
database_info读取文件和 SQLite 元数据
list_tables列出表和视图
describe_table读取列和约束
backup_database创建一致的在线备份
export_csv导出表或只读查询结果
export_schema将架构导出为 SQL 或 JSON
execute_read_query执行一条 SQLite 只读语句
写入、架构和维护
工具用途
create_database创建新的数据库文件
create_table根据经过验证的列创建表
drop_table删除表及其数据
execute_write_query执行 INSERT、UPDATE 或 DELETE
execute_schema_query执行一条架构语句
bulk_insert分批插入记录
import_csv导入带表头的 CSV 文件
import_schema应用 SQL 或 JSON 架构对象
vacuum_database重建数据库以回收空间
begin_transaction开始事务或嵌套保存点
commit_transaction提交事务或释放保存点
rollback_transaction回滚事务或保存点

参数、响应、示例、分页和 CSV 选项请参阅完整 API 参考。

安全模型

此服务不会将所有 SQL 字符串一概而论:

  • execute_read_query 使用 SQLite 的授权器 API,拒绝写入、架构更改、不安全的 PRAGMA、附加数据库和多条语句。
  • 写入、架构、事务和破坏性管理操作使用独立工具,以便客户端请求审批。
  • 在访问数据库和 CSV 文件前,会解析并验证其路径。
  • 工具生成的标识符都会加引号。
  • 值会作为参数绑定,而不是插入 SQL。
  • 备份使用 SQLite 的在线备份 API,并包含已提交的 WAL 数据。

客户端可以允许使用只读工具,并要求对破坏性工具进行审批。批准更改前,请务必检查 SQL 和文件路径。更改架构、导入数据或进行大量写入前,请备份重要数据库。

为什么选择原生 SQLite?

使用 node:sqlite 可移除原生插件、其安装脚本及特定于平台的二进制文件。使用原生 SQLite 后,干净的生产环境安装大小从 better-sqlite3 的 31.3 MB 降至 3.6 MB,减少了 88.5%。npm 压缩包本身的大小则相近:原生版本为 63.1 KB,已发布版本为 60.0 KB。节省主要来自已安装的依赖树。

此次迁移还移除了 better-sqlite3 及其类型包。安装不再依赖预编译插件是否可用,也不再需要可用的原生编译器。

驱动基准测试

耗时越短越好。以下中位数使用 20,000 行数据,每个驱动预热两次并测量七次。每个样本都使用一个新数据库,且驱动顺序交替。除插入工作负载外,设置过程不计入测量范围。

工作负载node:sqlitebetter-sqlite3原生结果
插入事务11.13 ms23.78 ms快 2.14 倍
索引点查25.23 ms21.40 ms慢 17.9%
全行扫描6.39 ms3.29 ms慢 94.3%
更新事务8.04 ms15.40 ms快 1.92 倍
在线备份0.55 ms0.38 ms慢 45.0%

测试环境为 Linux x64、Node.js 24.15.0 和 AMD Ryzen AI 9 HX 370。Node 使用 SQLite 3.51.3;[email protected] 使用 SQLite 3.53.3。这些微基准测试展示的是驱动之间的权衡,并不能代表完整的 MCP 性能。测试未包含 MCP 传输和验证的开销。

开发

git clone https://github.com/spences10/mcp-sqlite-tools.git
cd mcp-sqlite-tools
pnpm install
pnpm run check
pnpm test
pnpm run build

有关模块职责及其他开发命令,请参阅 开发与架构。

文档

贡献

欢迎提交问题和拉取请求。

许可证

MIT 许可证。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。