使用说明

项目简介

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' 获取更详细的使用信息。

信息

分类

数据库与文件