SQLite MCP Server

使用说明

项目简介

SQLite MCP Server 是一个基于 Model Context Protocol (MCP) 的后端服务器,它使用 Python 编写,旨在为语言模型 (LLM) 提供访问 SQLite 数据库中数据的能力。该服务器通过 MCP 协议定义了资源 (Resources)工具 (Tools)Prompt 模板 (Prompts),使得 LLM 客户端可以方便地查询数据库结构、执行 SQL 查询以及生成数据分析相关的 Prompt。

主要功能点

  • 资源 (Resources)
    • 'schema://sqlite/{table}':获取指定 SQLite 表的 Schema 信息。
    • 'schema://sqlite/all':获取所有 SQLite 表的 Schema 信息。
  • 工具 (Tools)
    • 'sql_query':执行只读的 SQL 查询语句(仅限 SELECT 语句)。
  • Prompt 模板 (Prompts)
    • 'analyze_table_prompt':生成用于分析指定表的 Prompt,引导 LLM 进行数据分析。
    • 'describe_query_prompt':生成用于解释 SQL 查询语句的 Prompt,帮助 LLM 理解 SQL 查询。
  • 通信协议
    • 支持 STDIO (标准输入输出) 协议,易于集成到各种 MCP 客户端,如 Claude Desktop。
    • 支持 SSE (Server-Sent Events) 协议,可通过 HTTP 连接为客户端提供服务。

安装步骤

  1. 创建 SQLite 数据库
    • 运行 'create_sample_db.py' 脚本创建示例 SQLite 数据库 'startups.db'。
    python create_sample_db.py
  2. 创建虚拟环境 (推荐):
    python -m venv venv
    source venv/bin/activate  # macOS/Linux
    # venv\Scripts\activate  # Windows
  3. 安装依赖
    pip install "mcp[cli]"
  4. 运行 MCP 服务器
    • STDIO 协议服务器:运行 'sqlite_sdio_mcp_server.py' 脚本启动 STDIO 版本的 MCP 服务器。
      python sqlite_sdio_mcp_server.py
    • SSE 协议服务器:运行 'sqlite_sse_mcp_server.py' 脚本,并使用 Uvicorn 启动 SSE 版本的 MCP 服务器。
      uvicorn sqlite_sse_mcp_server:app --host 0.0.0.0 --port 8000

服务器配置

配置 STDIO 服务器 (sqlite_sdio_mcp_server.py) 到 MCP 客户端 (例如 Claude Desktop):

MCP 客户端需要配置服务器的启动命令和参数。以下是配置示例,假设 'sqlite_sdio_mcp_server.py' 脚本的绝对路径为 '/absolute/path/to/sqlite_sdio_mcp_server.py'。

{
  "mcpServers": {
    "sqlite_sdio_server": {  // 服务器名称,客户端用于识别和调用
      "command": "python",  // 启动服务器的命令,这里使用 python 解释器
      "args": ["-u", "/absolute/path/to/sqlite_sdio_mcp_server.py"] // 启动参数,-u 参数用于禁用输出缓冲,确保日志及时输出
    }
  }
}

配置 SSE 服务器 (sqlite_sse_mcp_server.py) 到 MCP 客户端:

SSE 服务器通过 HTTP 提供服务,MCP 客户端需要能够通过 HTTP 连接到服务器。具体的配置方式取决于 MCP 客户端的支持情况,通常需要提供服务器的 URL。

基本使用方法

  • 访问资源 (Resources)
    • 获取所有表 Schema:'schema://sqlite/all'
    • 获取指定表 (例如 startups 表) Schema:'schema://sqlite/startups'
  • 调用工具 (Tools)
    • 执行 SQL 查询:可以使用 'sql_query' 工具执行 SQL SELECT 语句,例如查询 funding_amount 大于 10000000 的 startup:
      SELECT * FROM startups WHERE funding_amount > 10000000;
  • 使用 Prompt 模板 (Prompts)
    • 使用 'analyze_table_prompt' 生成分析 startups 表的 Prompt。
    • 使用 'describe_query_prompt' 生成解释 SQL 查询语句的 Prompt。

请参考仓库中的 'README.md' 和测试脚本 'sqlite_mcp_client_tests.py' 获取更详细的使用信息。

服务器信息