SQLite数据库操作服务

一个提供SQLite数据库操作的MCP服务器,支持stdio和HTTP传输方式,适用于本地和远程数据库管理。

  • by isaacgounton
  • JavaScript
  • 混合部署
  • 1 星标
  • 更新于
在 GitHub 查看 isaacgounton/sqlite-mcp-server

使用说明

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

许可证

ISC