关于 SQLite MCP Server
SQLite MCP Server 为 MCP 客户端提供 SQLite 数据库操作,支持 stdio 和 Streamable HTTP。它还提供表管理、数据库结构资源和业务洞察记录,并对 SQL 输入进行校验。
主要功能
- 01执行读取与写入查询
- 02创建、删除和检查表
- 03通过资源公开数据库结构
- 04记录业务洞察
- 05支持 stdio 与 Streamable HTTP
- 06校验 SQL 并阻止多语句注入
适用场景
- 01通过 MCP 查询或更新 SQLite 数据
- 02检查表、列、索引和外键
- 03让远程客户端连接数据库服务
- 04累积分析中发现的业务洞察
MCP 相关
该服务通过 MCP 提供 SQL 查询、表管理等工具,以及数据库结构和洞察备忘录资源。支持 stdio 与 Streamable HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
SQLite MCP Server
一个用于执行 SQLite 数据库操作的模型上下文协议(MCP)服务。支持 stdio(用于 Claude Desktop、Cursor 等)和 Streamable HTTP(用于远程客户端)传输方式。
功能
- 内存或基于文件的 SQLite 数据库
- 双重传输方式:stdio 和 Streamable HTTP
- SQL 操作,带输入验证和注入防护
- 表管理(CREATE、DROP、LIST、DESCRIBE)
- 将数据库架构作为 MCP 资源公开
- 业务洞察备忘录跟踪
- 支持 Docker
快速开始
Stdio(Claude Desktop、Cursor 等)
npm install && npm run build
node build/index.js
添加到 Claude Desktop 配置文件(claude_desktop_config.json)中:
{
"mcpServers": {
"sqlite": {
"command": "node",
"args": ["/path/to/sqlite-mcp-server/build/index.js"]
}
}
}
使用基于文件的数据库:
{
"mcpServers": {
"sqlite": {
"command": "node",
"args": ["/path/to/sqlite-mcp-server/build/index.js", "/path/to/database.db"]
}
}
}
Streamable HTTP(远程客户端)
node build/index.js --http
服务在 http://localhost:3000/mcp 上公开单个端点,并遵循 MCP Streamable HTTP 规范。默认情况下,它绑定到 127.0.0.1。若要从其他主机或容器访问,请设置 HOST=0.0.0.0——但请先阅读安全部分:HTTP 传输方式没有身份验证。
Docker
docker build -t sqlite-mcp-server .
docker run -d -p 3000:3000 -e HOST=0.0.0.0 --name sqlite-mcp sqlite-mcp-server
必须设置 HOST=0.0.0.0,服务才能通过已发布的端口访问。通过 localhost:3000 从主机连接即可直接使用;若要通过其他主机名访问,请将该主机添加到 MCP_ALLOWED_HOSTS。
配置
| 选项 | 描述 | 默认值 |
|---|---|---|
--http | 使用 Streamable HTTP 传输方式代替 stdio | stdio |
| 第一个非标志参数 | SQLite 数据库文件路径 | :memory: |
SQLITE_DB_PATH | 数据库路径(环境变量替代方式) | :memory: |
PORT | HTTP 服务端口(仅限 HTTP 模式) | 3000 |
HOST | HTTP 模式下要绑定的接口。使用 0.0.0.0 可在 localhost 之外公开访问 | 127.0.0.1 |
MCP_ALLOWED_HOSTS | 以逗号分隔的 Host 标头允许列表,用于防护 DNS 重绑定 | localhost:$PORT,127.0.0.1:$PORT |
MCP_AUTH_TOKEN | 所有 /mcp 请求都必须提供的 Bearer 令牌(HTTP 模式)。未设置 = 禁用身份验证 | (无) |
示例:
# In-memory database on stdio
node build/index.js
# File-based database on stdio
node build/index.js ./data.db
# HTTP mode with custom port
PORT=8080 node build/index.js --http ./data.db
# Using environment variable
SQLITE_DB_PATH=./data.db node build/index.js --http
可用工具
| 工具 | 描述 |
|---|---|
read_query | 执行 SELECT、WITH(CTE)或 EXPLAIN 查询 |
write_query | 执行 INSERT、UPDATE、DELETE 或 REPLACE 查询 |
create_table | 使用 CREATE TABLE 语句创建新表 |
drop_table | 删除表(不可逆) |
list_tables | 列出所有用户创建的表 |
describe_table | 获取表架构:列、索引和外键 |
append_insight | 将业务洞察添加到备忘录资源 |
资源
| URI | 描述 |
|---|---|
sqlite://{db}/schema | 所有表的完整架构(CREATE 语句) |
memo://insights | 分析过程中积累的业务洞察 |
提示词
| 名称 | 描述 |
|---|---|
mcp-demo | 引导式演练:创建表、插入示例数据,并针对给定主题运行查询 |
远程连接
Streamable HTTP
将任何兼容 MCP 的客户端连接到 http://your-host:3000/mcp。服务支持:
POST /mcp— 发送 MCP 消息(初始化时创建会话)GET /mcp— 用于会话恢复的 SSE 流DELETE /mcp— 终止会话GET /health— 健康检查端点
会话通过 Mcp-Session-Id 标头管理。
身份验证
设置 MCP_AUTH_TOKEN,要求每个 /mcp 请求都携带 bearer 令牌(/health 保持开放):
MCP_AUTH_TOKEN=$(openssl rand -hex 32) HOST=0.0.0.0 node build/index.js --http
客户端随后发送 Authorization: Bearer <token>。未设置 MCP_AUTH_TOKEN 时,身份验证处于禁用状态——仅绑定到 localhost 时可以这样做,但请勿在未设置该变量的情况下将服务公开到公网。
安全性
- 查询验证:每个工具只接受其指定类型的 SQL 语句
- 阻止多语句注入:拒绝堆叠语句,并在检查前去除字符串字面量和注释
- 表名需符合
^[a-zA-Z_][a-zA-Z0-9_]*$ - 默认启用外键
- HTTP 传输默认绑定到
127.0.0.1,并启用 DNS 重绑定防护(MCP_ALLOWED_HOSTS) - HTTP 传输可选通过
MCP_AUTH_TOKEN启用 bearer 令牌身份验证(采用时序安全检查)
在将 HTTP 传输暴露到 localhost 之外之前,请先设置 MCP_AUTH_TOKEN。 在生产环境中,还应在服务前端部署一个负责终止 TLS 的反向代理。有关完整的安全模型以及如何报告漏洞,请参阅 SECURITY.md。
开发
npm install
npm run build
npm test # build + run the validator test suite
npm start # stdio mode
npm run start:http # HTTP mode
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。