关于 mcp-sqlite
mcp-sqlite 是一个用于 SQLite 数据库文件的 MCP 服务,可向 AI Agent 提供表结构目录和 SQL 查询能力,无需连接外部系统。它兼容 Datasette 的元数据格式,使人与 Agent 可以基于同一份数据和元数据进行探索。
主要功能
- 01通过 sqlite_get_catalog 获取表与列的目录
- 02使用 YAML 或 JSON 元数据补充描述信息
- 03通过 sqlite_execute 执行任意 SQL 查询
- 04将预定义查询转换为独立的 MCP 工具
- 05兼容 Datasette 元数据格式
适用场景
- 01让 AI Agent 查询本地 SQLite 数据文件
- 02为表和列添加描述以辅助 Agent 理解数据
- 03使用 MCP Inspector 或 Datasette 交互式浏览同一数据集
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 sqlite_get_catalog、sqlite_execute 等工具,并将元数据中定义的每个预设查询生成为一个工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-sqlite
为 AI Agent 提供有用的数据,而无需让它们访问外部系统。也兼容供人类用户使用的 Datasette!
功能
- AI Agent 可以通过一条命令获取 SQLite 数据库中所有表和列的结构:
sqlite_get_catalog。- 可以使用简单的 YAML 或 JSON 元数据文件,为目录中的表和列添加描述。
- 同一元数据文件还可以包含供 AI 使用的预设查询。
每个预设查询都会转换为一个单独的 MCP 工具
sqlite_execute_main_{tool name}。 - AI Agent 可以使用
sqlite_execute执行任意 SQL 查询。
使用 Visual Studio Code 快速入门
-
安装 uv。
-
如果尚未安装,请安装 Visual Studio Code。 启用 GitHub Copilot。
-
在 VS Code 中打开此仓库。 打开 GitHub Copilot Agent 模式聊天。 查看可用工具——你应该会看到 MCP Server:sqlite_sample,其中有三个可用工具。

-
你应该可以在 Agent 模式下向 Copilot 提问,例如“找出 28 岁的泰坦尼克号幸存者”,并获得回复。

-
使用示例 MCP 配置文件 mcp.json 和示例元数据文件 titanic.yml 作为你自己的配置起点。
使用 MCP Inspector 和 Datasette 交互式探索
可以使用相同的数据库和元数据文件,通过 MCP Inspector 和 Datasette 交互式探索数据。
| MCP Inspector | Datasette |
|---|---|
![]() | ![]() |
![]() | ![]() |
MCP Inspector
使用 MCP Inspector 控制面板,以与 AI Agent 相同的方式与 SQLite 数据库交互:
- 安装 npm。
- 运行:
npx @modelcontextprotocol/inspector uvx mcp-sqlite sample/titanic.db --metadata sample/titanic.yml
Datasette
由于 mcp-sqlite 元数据与 Datasette 元数据文件兼容,你也可以使用 Datasette 探索数据:
uvx datasette serve sample/titanic.db --metadata sample/titanic.yml
与 Datasette 兼容意味着 AI Agent 和人类都可以轻松探索相同的本地数据!
mcp-sqlite 提供的 MCP 工具
- sqlite_get_catalog():Agent 可以调用此工具,获取数据中数据库、表和列的完整目录,并与元数据文件中的元数据合并。
在
mcp-sqlite的早期版本中,这是一项资源,而不是工具,但资源的支持范围不够广泛,因此将其改为了工具。 如果你需要将目录作为资源使用,请提交 issue,我们会恢复此功能! - sqlite_execute(sql):Agent 可以调用此工具执行任意 SQL。表格结果以 HTML 格式返回。 如需了解 HTML 为何是大模型处理数据的最佳格式,请参阅 Siu et al。
- {canned query name}({canned query args}):元数据中的每个预设查询都会创建一个工具,使 Agent 无需编写 SQL 即可运行预定义查询。
使用方法
命令行选项
usage: mcp-sqlite [-h] [-m METADATA] [-p PREFIX] [-v] sqlite_file
CLI command to start an MCP server for interacting with SQLite data.
positional arguments:
sqlite_file Path to SQLite file to serve the MCP server for.
options:
-h, --help show this help message and exit
-m, --metadata METADATA
Path to Datasette-compatible metadata YAML or JSON file.
-p, --prefix PREFIX Prefix for MCP tools. Defaults to no prefix.
-v, --verbose Be verbose. Include once for INFO output, twice for DEBUG output.
元数据
隐藏表
使用 hidden: true 隐藏表 后,该表将不会显示在 MCP 工具 sqlite_get_catalog() 返回的目录中。
不过请注意,AI Agent 仍然可以访问该表!
切勿将从目录中隐藏表当作安全措施。
预置查询
mcp-sqlite 会将每个预置查询转换为一个单独的可调用 MCP 工具。
例如,名为 my_canned_query 的查询会变成一个名为 my_canned_query 的工具。
预置查询功能仍在积极开发中,近期计划推出更多功能:
路线图
| Datasette 查询功能 | mcp-sqlite 是否支持? |
|---|---|
| 在目录中显示 | ✅ |
| 可执行 | ✅ |
| 标题 | ✅ |
| 描述 | ✅ |
| 参数 | ✅ |
| 显式参数 | ❌(计划支持) |
| 隐藏 SQL | ✅ |
| 预置查询的写入限制 | ✅ |
| 分页 | ❌(计划支持) |
| 跨数据库查询 | ❌(计划支持) |
| 片段 | ❌(未计划支持) |
| 魔法参数 | ❌(未计划支持) |
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。



