SQLite数据库交互服务器

一个通过MCP协议使LLM能够与SQLite数据库交互的服务器,提供只读访问、模式检查和SQL查询执行功能。

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

使用说明

SQLite MCP服务器

MCP(模型上下文协议)服务器,使LLM能够与SQLite数据库交互。此服务器通过一组用于模式检查和SQL查询执行的工具提供对任何SQLite数据库的只读访问。

内置于 async/await 图案使用 aiosqlite 用于非阻塞数据库操作。

特性

  • list_tables -获取数据库中的所有表名
  • describe_table -获取特定表的列详细信息、类型和关系
  • get_schema -通过CREATE TABLE语句获取完整的数据库架构
  • 怎么翻译 -执行只读SQL查询(仅限SELECT)

先决条件

安装

  1. 克隆此存储库
  2. 安装依赖项:
uv sync

快速开始使用示例数据

该项目包括一个用于演示目的的CRM示例数据库。

1.创建数据库并为其添加种子

uv run seed_database.py

这创造了 crm.db 使用示例CRM数据:

  • 5名用户(销售团队)
  • 20家公司
  • 40个联系人
  • 25笔交易
  • 30活动

2.运行MCP服务器

看 运行服务器 在......下面

运行服务器

服务器使用 crm.db 与脚本位于同一目录中(硬编码)。

开发模式(MCP检查器)

uv run mcp dev sqlite_mcp_server.py

这将启动 MCP检查员 -基于web的调试UI http://localhost:5173 您可以在哪里:

  • 查看所有已注册的工具
  • 使用自定义输入交互式测试每个工具
  • 检查JSON响应
  • 连接LLM之前的调试问题

生产模式(LLM集成)

uv run sqlite_mcp_server.py

这将在中启动服务器 stdio模式,已准备好连接LLM客户端。

客户端配置

示例:克劳德桌面

添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "sqlite": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/sqlite-mcp-server",
        "run",
        "sqlite_mcp_server.py"
      ]
    }
  }
}

工具参考

list_tables

返回数据库中的所有表名。

示例响应:

{
  "tables": ["activities", "companies", "contacts", "deals", "users"]
}

describe_table

获取有关表结构的详细信息。

参数:

  • table_name (string):要描述的表的名称

示例响应:

{
  "table": "contacts",
  "columns": [
    {"name": "id", "type": "INTEGER", "nullable": false, "primary_key": true},
    {"name": "first_name", "type": "TEXT", "nullable": false, "primary_key": false},
    {"name": "email", "type": "TEXT", "nullable": true, "primary_key": false}
  ],
  "foreign_keys": [
    {"column": "company_id", "references_table": "companies", "references_column": "id"}
  ],
  "indexes": []
}

get_schema

以CREATE TABLE语句返回完整的数据库架构。

示例响应:

{
  "schema": {
    "users": "CREATE TABLE users (...)",
    "companies": "CREATE TABLE companies (...)"
  }
}

怎么翻译

执行只读SQL查询。只允许使用SELECT语句。

参数:

  • sql (string):SELECT SQL语句

示例响应:

{
  "columns": ["name", "email"],
  "rows": [
    ["John Doe", "john@example.com"],
    ["Jane Smith", "jane@example.com"]
  ],
  "row_count": 2
}

安全: 服务器通过以下方式验证查询是否为只读:

  1. 确保查询以SELECT或with开头
  2. 阻止INSERT、UPDATE、DELETE、DROP等关键字。

使用自己的数据库

服务器被硬编码使用 crm.db 在脚本目录中。要使用其他数据库,请执行以下操作:

  1. 替换 crm.db 使用数据库文件(保持相同名称),或
  2. 修改 DB_PATH 持续在 sqlite_mcp_server.py