SQLite数据库操作服务器

一个基于Model Context Protocol (MCP)的SQLite数据库操作服务器,提供完整的数据库读写功能。

  • by lkpkkk123
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 lkpkkk123/sqlite_mcp

使用说明

SQLite MCP Server

一个基于Model Context Protocol (MCP)的SQLite数据库操作服务器,提供完整的数据库读写功能。

功能特性

  • read_query: 执行SELECT查询以从数据库中读取数据
  • write_query: 执行INSERT、UPDATE或DELETE查询以修改数据库中的数据
  • create_table: 在数据库中创建新表
  • list_tables: 获取数据库中所有表的列表
  • describe_table: 查看特定表的模式信息

安装

  1. 克隆或下载此项目
  2. 安装依赖:
pip install -r requirements.txt

使用方法

快速开始

1. 启动服务器

默认数据库 (database.db):

./start.sh
# 或
python main.py

指定数据库文件:

# 使用位置参数
python main.py my_project.db

# 使用 --db 标志
python main.py --db my_project.db

# 使用绝对路径
python main.py /path/to/my/database.db

查看所有选项:

python main.py --help

2. 在VS Code中配置和使用

快速配置(推荐):

./configure_vscode.sh

手动配置: 详见 VS Code配置指南

使用示例: 详见 使用示例文档

直接启动服务器

python main.py

工具说明

1. read_query

执行SELECT查询以从数据库中读取数据。

输入参数:

  • query (字符串): 需要执行的SELECT SQL查询语句

返回:

  • 查询结果作为对象数组

示例:

SELECT * FROM users WHERE age > 18

2. write_query

执行INSERT、UPDATE或DELETE查询以修改数据库中的数据。

输入参数:

  • query (字符串): 需要执行的SQL修改查询语句

返回:

  • { affected_rows: number } 表示受影响的行数

示例:

INSERT INTO users (name, age) VALUES ('张三', 25)
UPDATE users SET age = 26 WHERE name = '张三'
DELETE FROM users WHERE age < 18

3. create_table

在数据库中创建新表。

输入参数:

  • query (字符串): CREATE TABLE SQL语句

返回:

  • 确认表格创建的信息

示例:

CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    age INTEGER,
    email TEXT UNIQUE
)

4. list_tables

获取数据库中所有表的列表。

输入参数:

  • 无

返回:

  • 包含表名的数组

5. describe_table

查看特定表的模式信息。

输入参数:

  • table_name (字符串): 要描述的表名

返回:

  • 列定义的数组,包括列名、类型、是否为空、默认值等信息

安全特性

  • 线程安全的数据库连接管理
  • SQL查询类型验证(防止在read_query中执行修改操作)
  • 连接池管理
  • 错误处理和日志记录

数据库文件

默认情况下,SQLite数据库文件将在当前目录下创建为database.db。您可以通过修改SQLiteManager的初始化参数来更改数据库文件位置。

技术栈

  • Python 3.7+
  • SQLite3
  • Model Context Protocol (MCP)
  • asyncio (异步I/O)

注意事项

  1. 确保SQL查询语法正确
  2. read_query只允许SELECT语句
  3. write_query只允许INSERT、UPDATE、DELETE语句
  4. create_table只允许CREATE TABLE语句
  5. 数据库操作是线程安全的
  6. 建议在生产环境中添加更多的安全验证和错误处理

开发

如需扩展功能,可以在SQLiteManager类中添加新的方法,并在MCP服务器中注册相应的工具。