SQLite自然语言查询服务器

一个基于模型上下文协议(MCP)的服务,允许兼容MCP的客户端通过自然语言查询和可视化SQLite数据库。

  • by aktnk
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 aktnk/sqlite-mcp-server

使用说明

sqlite-mcp服务器

A. 模型上下文协议(MCP) 使MCP兼容客户端(例如Claude Desktop)能够使用自然语言查询和可视化SQLite数据库的服务器。

特性

  • list_data --执行SELECT查询并以JSON格式返回结果
  • export_csv --执行SELECT查询并以CSV格式返回结果
  • visualize_data --执行SELECT查询并将条形图、折线图或散点图渲染为PNG图像

需求

安装

git clone https://github.com/aktnk/sqlite-mcp-server.git
cd sqlite-mcp-server
uv sync

MCP客户端设置

复制 config.sample.json 到 config.json 并更新路径:

{
  "mcpServers": {
    "sqlite-explorer": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/sqlite-mcp-server",
        "run",
        "main.py"
      ],
      "env": {
        "SQLITE_MCP_ALLOWED_DIRS": "/path/to/your/databases"
      }
    }
  }
}

然后将内容添加到MCP客户端的配置文件中。

克劳德桌面:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json

配置

环境变量 默认值 描述
SQLITE_MCP_ALLOWED_DIRS 当前工作目录 允许服务器访问的目录的冒号分隔列表(例如。, /data:/tmp/dbs)

发展

# Create a sample database for testing
uv run setup_db.py

# Run the server directly
uv run main.py

# Run with MCP Inspector (interactive tool testing)
uv run mcp dev main.py

安全

所有数据库访问都是严格只读的。以下保护措施已到位:

层 它阻止了什么
只读连接(?mode=ro) 插入/更新/删除/删除
SQLite授权人(set_authorizer) 附加数据库,模式更改, load_extension
路径验证 路径遍历(../),在允许的目录之外访问,非-.db 文件
行限制(10000行) 通过大型结果集拒绝服务

许可证

MIT许可证 ©2026田中明