项目简介
MCP SQLite 数据库工具服务器是基于 Model Context Protocol (MCP) 构建的后端服务,专门用于为大型语言模型(LLM)提供与本地SQLite数据库交互的能力。它将复杂的SQLite数据库操作封装成标准化的工具接口,允许LLM客户端通过JSON-RPC协议调用这些工具,实现数据库的创建、查询、数据修改、表结构管理及日常维护。该服务器通过为LLM提供丰富且安全的数据库操作功能,显著增强了LLM处理结构化数据的能力和应用范围。
主要功能点
- 数据库管理: 轻松打开、创建和关闭SQLite数据库文件,发现指定目录下的数据库文件,并获取数据库的详细元数据和统计信息。
- 表操作: 列出数据库中的所有表格和视图,获取表格的详细结构(Schema)信息,支持创建新表格并定义列属性(如数据类型、主键、是否允许为空),以及安全地删除现有表格。
- 查询操作: 提供分类的SQL查询执行接口,确保操作安全。包括:
- 只读查询: 用于执行SELECT、PRAGMA、EXPLAIN等不修改数据的查询。
- 数据修改查询: 用于执行INSERT、UPDATE、DELETE等修改数据库数据的操作。
- Schema修改查询: 用于执行CREATE TABLE、ALTER TABLE、DROP TABLE等修改数据库结构的操作。
- 数据库维护: 支持创建数据库备份以保障数据安全,并执行VACUUM操作来优化数据库存储和性能。
- 安全特性: 内置多层安全机制,包括查询分类(自动区分读、写、Schema操作)、路径验证和可配置的路径限制(防止目录遍历攻击)、以及全面的输入验证,确保LLM在操作数据库时的安全性和稳定性。
安装步骤
通过 npm 安装(推荐全局安装)
打开终端并运行以下命令:
npm install -g mcp-sqlite-tools
从源代码安装
首先克隆仓库,然后进入项目目录,安装依赖并构建:
git clone https://github.com/spences10/mcp-sqlite-tools.git cd mcp-sqlite-tools pnpm install pnpm run build
服务器配置
MCP SQLite 数据库工具服务器需要通过MCP客户端(如VS Code的MCP扩展、Claude Desktop或Cline等)进行配置才能被LLM使用。以下是典型的MCP客户端JSON配置示例,用户需要将其添加到MCP客户端的全局或工作区配置文件中(例如VS Code的'mcp.json'文件)。此配置指导MCP客户端如何启动和连接到服务器。
{ "servers": { "sqlite-tools": { "command": "npx", "args": ["-y", "mcp-sqlite-tools"], "env": { // SQLITE_DEFAULT_PATH: 默认的SQLite数据库文件存放目录。 // 例如:"./databases" 或 "${workspaceFolder}/data"。 // 默认为当前工作目录 "."。 "SQLITE_DEFAULT_PATH": "${workspaceFolder}/databases", // SQLITE_ALLOW_ABSOLUTE_PATHS: 是否允许使用数据库文件的绝对路径。 // "true" 表示允许,"false" 表示禁止。默认为 "true"。 "SQLITE_ALLOW_ABSOLUTE_PATHS": "true", // SQLITE_MAX_QUERY_TIME: 单个SQL查询的最大执行时间(毫秒)。 // 例如:"60000" 表示60秒。默认为 "30000" (30秒)。 "SQLITE_MAX_QUERY_TIME": "60000", // SQLITE_BACKUP_PATH: 数据库备份文件的默认存储目录。 // 例如:"./backups"。默认为 "./backups"。 "SQLITE_BACKUP_PATH": "${workspaceFolder}/backups", // DEBUG: 是否开启调试日志。 // "true" 开启,"false" 关闭。默认为 "false"。 "DEBUG": "false" } } } }
配置说明:
- '"sqlite-tools"': 这是您在MCP客户端中为该服务器定义的唯一名称。LLM客户端将通过此名称引用并调用该服务器提供的工具。
- '"command"': 用于启动MCP服务器进程的命令行工具。通常使用'npx'来运行已发布的Node.js包。
- '"args"': 传递给'command'的参数。'-y mcp-sqlite-tools'指示'npx'运行'mcp-sqlite-tools'这个包。
- '"env"': 用于设置MCP服务器运行时的环境变量,以自定义其行为。
- 'SQLITE_DEFAULT_PATH': 配置数据库文件(如'.db'文件)的默认存储目录。相对路径会根据客户端启动服务器时的当前工作目录解析。'"${workspaceFolder}"'是MCP客户端提供的特殊变量,会在运行时被替换为当前项目的工作区根目录。
- 'SQLITE_ALLOW_ABSOLUTE_PATHS': 这是一个重要的安全设置,决定是否允许在数据库操作中使用绝对文件路径。建议谨慎配置。
- 'SQLITE_MAX_QUERY_TIME': 设定任意单个SQL查询的最大执行时间,防止长时间运行的查询阻塞服务器。
- 'SQLITE_BACKUP_PATH': 指定生成数据库备份文件的默认存放位置。
- 'DEBUG': 开启后服务器会输出更详细的调试信息到标准错误流。
基本使用方法
配置并启动MCP客户端后,LLM将能够通过自然语言指令调用MCP SQLite 数据库工具服务器提供的工具。LLM客户端会将这些自然语言指令解析并转换为JSON-RPC请求,发送给服务器执行。以下是一些LLM可以执行的数据库操作示例:
- 打开/创建数据库: "打开或创建一个名为 'my_project.db' 的SQLite数据库。"
- 创建表格: "在 'my_project.db' 中创建一个名为 'tasks' 的表格,包含 'id' (整数, 主键, 非空), 'description' (文本, 非空), 'due_date' (文本) 和 'completed' (布尔值, 默认 'false') 这些列。"
- 插入数据: "向 'tasks' 表中添加一条新任务:'description' 是 '完成报告', 'due_date' 是 '2023-12-31', 'completed' 是 'false'。"
- 查询数据: "从 'tasks' 表中查询所有未完成任务的 'description' 和 'due_date'。"
- 更新数据: "将 'id' 为 '1' 的任务标记为已完成。"
- 备份数据库: "为 'my_project.db' 数据库创建一个备份。"
- 优化数据库: "对 'my_project.db' 数据库执行VACUUM操作以优化其性能和存储空间。"
LLM客户端将负责将上述指令转换为服务器可识别的工具调用(例如 'open_database'、'create_table'、'execute_write_query'、'execute_read_query'、'backup_database'、'vacuum_database'),并处理服务器返回的JSON格式结果。
信息
分类
数据库与文件