使用说明
SQLite MCP服务器
提供SQLite数据库操作的模型上下文协议(MCP)服务器。支持两者 标准 (适用于克劳德桌面、光标等)以及 可流式传输的HTTP (对于远程客户端)传输。
特性
- 内存或基于文件的SQLite数据库
- 双传输:stdio和流式HTTP
- 具有输入验证和注入保护的SQL操作
- 表管理(CREATE、DROP、LIST、DESCRIBE)
- 数据库架构作为MCP资源公开
- 业务洞察备忘录跟踪
- Docker支持
快速开始
Stdio(克劳德桌面、光标等)
npm install && npm run build
node build/index.js
添加到您的Claude桌面配置(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"]
}
}
}
流式HTTP(远程客户端)
node build/index.js --http
服务器在以下位置公开了一个端点 http://localhost:3000/mcp 遵循MCP流式HTTP规范。默认情况下,它绑定到 127.0.0.1。要从其他主机或容器访问它,请设置 HOST=0.0.0.0 --但请阅读 安全 第一节:HTTP传输没有身份验证。
码头工人
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 |
使用流式HTTP传输而不是stdio | stdio |
| 第一个非标志参数 | SQLite数据库文件的路径 | :memory: |
SQLITE_DB_PATH |
数据库路径(env-var替代) | :memory: |
PORT |
HTTP服务器端口(仅限HTTP模式) | 3000 |
HOST |
在HTTP模式下绑定的接口。使用 0.0.0.0 在本地主机之外公开 |
127.0.0.1 |
MCP_ALLOWED_HOSTS |
逗号分隔 Host DNS重新绑定保护的标头允许列表 |
localhost:$PORT,127.0.0.1:$PORT |
MCP_AUTH_TOKEN |
所有人都需要持有代币 /mcp 请求(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 |
引导式演练:创建表、插入示例数据、运行给定主题的查询 |
远程连接
可流式传输的HTTP
将任何兼容MCP的客户端连接到 http://your-host:3000/mcp。服务器支持:
POST /mcp--发送MCP消息(初始化时创建的会话)GET /mcp--会话可恢复性的SSE流DELETE /mcp--终止会话GET /health--健康检查终点
会话通过 Mcp-Session-Id 头球
认证
集 MCP_AUTH_TOKEN 要求在每个 /mcp 请求(/health 保持开放):
MCP_AUTH_TOKEN=$(openssl rand -hex 32) HOST=0.0.0.0 node build/index.js --http
然后客户端发送 Authorization: Bearer <token>.何时 MCP_AUTH_TOKEN 未设置,身份验证被禁用——对于仅本地主机绑定很好,但如果没有它,就不要公开服务器。
安全
- 查询验证:每个工具只接受其预期的SQL语句类型
- 多语句注入被阻止:堆叠语句被拒绝,字符串文字和注释在检查前被删除
- 表名已验证
^[a-zA-Z_][a-zA-Z0-9_]*$ - 默认情况下启用外键
- HTTP传输绑定到
127.0.0.1默认情况下,具有DNS重新绑定保护(MCP_ALLOWED_HOSTS) - 通过以下方式在HTTP传输上进行可选的承载令牌身份验证
MCP_AUTH_TOKEN(定时安全检查)
集 MCP_AUTH_TOKEN 在将HTTP传输暴露到localhost之外之前。 对于生产环境,还可以使用终止TLS的反向代理对其进行前端处理。看 安全.md 了解完整模型以及如何报告漏洞。
发展
npm install
npm run build
npm test # build + run the validator test suite
npm start # stdio mode
npm run start:http # HTTP mode