Offers containerized deployment of the SQLite MCP server with volume mounting for data persistence, enabling easy setup and configuration through Docker Compose and environment variables.
Supports configuration through environment variables with example configuration files, allowing customization of database paths, initialization scripts, and operational parameters.
Includes Git integration for project setup and version control with .gitignore configuration for managing repository content.
Built on Python with comprehensive module structure, virtual environment support, and dependency management through requirements.txt.
Provides tools for performing SQL operations on SQLite databases, including executing queries, managing tables, updating data, and supporting natural language interactions with the database. Features include transaction management, table creation/modification, and concurrent access control.
SQLite MCP 服务器
一个基于Python实现的SQLite标准MCP(Model Context Protocol)服务器,支持数据库的读写操作,使用Docker进行容器化部署,以stdio模式运行,支持自然语言交互。
功能特性
- 🔍 SQL查询执行: 支持SELECT查询语句
- ✏️ 数据更新操作: 支持INSERT、UPDATE、DELETE语句
- 📋 表管理: 列出所有表、查看表结构、创建新表
- 🗣️ 自然语言交互: 支持中文自然语言建表和查询
- 🔒 并发控制: 支持多Agent并发访问和事务管理
- 🐳 Docker部署: 完整的容器化支持
- ⚙️ 配置管理: 灵活的环境变量配置
- 📝 日志记录: 完整的操作日志记录
- 🧪 测试覆盖: 完整的测试和演示脚本
- 🌐 stdio模式: 标准MCP协议,支持自然语言交互
- 📋 初始化脚本: 支持配置文件方式启动和初始化
- 🚀 一键启动: Docker拉起即可使用,无需额外脚本
项目结构
快速开始
方法1: Docker启动(推荐)
- 克隆项目
- 启动服务器
- 服务器将自动初始化数据库并进入stdio模式
方法2: 本地启动
方法3: 直接Docker调用
方法4: 本地开发
- 创建虚拟环境
- 安装依赖
- 运行测试
服务器模式
1. 标准模式 (main.py)
- 基本的SQL操作
- 单线程安全
- 适合单Agent使用
2. 增强模式 (main_enhanced.py)
- 支持多Agent并发
- 事务管理和乐观锁
- 一致性控制
- 适合多Agent协作
3. 自然语言模式 (main_natural_language.py)
- 支持中文自然语言建表
- 自然语言查询和更新
- 自动SQL生成
- 适合非技术用户
自然语言功能
自然语言建表
生成的SQL:
自然语言查询
生成的SQL:
自然语言插入
生成的SQL:
配置说明
环境变量
变量名 | 默认值 | 说明 |
---|---|---|
DATABASE_PATH | data/sqlite.db | 数据库文件路径 |
INIT_SCRIPT | init/init.sql | 初始化SQL脚本路径 |
LOG_LEVEL | INFO | 日志级别 |
AGENT_ID | 自动生成 | Agent唯一标识符 |
USE_THREAD_SAFE | false | 是否使用线程安全模式 |
初始化脚本
服务器启动时会自动执行 init/init.sql
脚本,用于:
- 创建数据库表结构
- 插入初始数据
- 设置数据库约束
示例初始化脚本:
使用方法
简化查询脚本
使用 query.sh
脚本进行快速查询:
直接Docker调用
MCP工具说明
标准模式工具
1. sql_query
执行SQL查询语句,返回查询结果。
参数:
query
(string, 必需): SQL查询语句params
(array, 可选): 查询参数列表
示例:
2. sql_update
执行SQL更新语句(INSERT、UPDATE、DELETE)。
参数:
query
(string, 必需): SQL更新语句params
(array, 可选): 更新参数列表
示例:
3. list_tables
列出数据库中的所有表。
参数: 无
4. describe_table
描述指定表的结构。
参数:
table_name
(string, 必需): 表名
5. create_table
创建新表。
参数:
table_name
(string, 必需): 表名columns
(string, 必需): 列定义SQL语句
6. database_info
获取数据库基本信息。
参数: 无
增强模式工具
除了标准工具外,还包含:
7. sql_transaction
执行事务操作。
参数:
operations
(array, 必需): 操作列表isolation_level
(string, 可选): 隔离级别
8. agent_status
获取当前Agent状态。
参数: 无
9. transaction_history
获取事务历史记录。
参数:
limit
(integer, 可选): 返回记录数量限制
自然语言模式工具
10. natural_language_query
使用自然语言进行查询。
参数:
description
(string, 必需): 自然语言查询描述
11. natural_language_create_table
使用自然语言创建表。
参数:
description
(string, 必需): 自然语言表结构描述
12. natural_language_insert
使用自然语言插入数据。
参数:
description
(string, 必需): 自然语言插入描述
13. natural_language_update
使用自然语言更新数据。
参数:
description
(string, 必需): 自然语言更新描述
并发控制
多Agent并发
- 支持多个MCP Agent同时访问数据库
- 使用文件锁和事务管理确保数据一致性
- 支持乐观锁和悲观锁机制
事务隔离
- 支持不同的事务隔离级别
- 防止脏读、不可重复读和幻读
- 自动冲突检测和解决
开发指南
添加新工具
- 在对应的服务器类中添加工具定义
- 实现工具的处理方法
- 在
_call_tool
方法中添加路由
扩展自然语言功能
- 在
natural_language_server.py
中添加新的解析方法 - 更新字段类型映射
- 添加相应的测试用例
测试
运行测试
测试覆盖
- 基本SQL操作
- 自然语言解析
- 并发控制
- 错误处理
- 性能测试
部署
Docker部署
生产环境
- 使用持久化存储
- 配置日志轮转
- 设置监控告警
- 定期备份数据
贡献
欢迎提交Issue和Pull Request!
开发环境设置
- Fork项目
- 创建功能分支
- 提交更改
- 创建Pull Request
许可证
MIT License
更新日志
v2.0.0
- 添加自然语言建表功能
- 支持多Agent并发控制
- 增强事务管理
- 改进错误处理
v1.0.0
- 基础SQLite MCP服务器
- Docker容器化支持
- 基本CRUD操作
Related MCP Servers
- -securityFlicense-qualityAn MCP server that provides safe, read-only access to SQLite databases through MCP. This server is built with the FastMCP framework, which enables LLMs to explore and query SQLite databases with built-in safety features and query validation.Last updated -49Python
- -securityAlicense-qualityAn MCP server that allows managing Docker containers through natural language, enabling users to compose, introspect, and debug containers without running commands themselves.Last updated -468PythonGPL 3.0
- -security-license-qualityAn MCP server that allows working with MySQL databases by providing tools for executing read-only SQL queries, getting table schemas, and listing database tables.Last updated -1JavaScript
- -securityAlicense-qualityA lightweight MCP server that provides read-only access to SQLite databases, allowing users to execute SELECT queries, list tables, and describe table schemas.Last updated -PythonMIT License