使用说明
项目简介
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 连接为客户端提供服务。
安装步骤
- 创建 SQLite 数据库:
- 运行 'create_sample_db.py' 脚本创建示例 SQLite 数据库 'startups.db'。
python create_sample_db.py - 创建虚拟环境 (推荐):
python -m venv venv source venv/bin/activate # macOS/Linux # venv\Scripts\activate # Windows - 安装依赖:
pip install "mcp[cli]" - 运行 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' 脚本启动 STDIO 版本的 MCP 服务器。
服务器配置
配置 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;
- 执行 SQL 查询:可以使用 'sql_query' 工具执行 SQL SELECT 语句,例如查询 funding_amount 大于 10000000 的 startup:
- 使用 Prompt 模板 (Prompts):
- 使用 'analyze_table_prompt' 生成分析 startups 表的 Prompt。
- 使用 'describe_query_prompt' 生成解释 SQL 查询语句的 Prompt。
请参考仓库中的 'README.md' 和测试脚本 'sqlite_mcp_client_tests.py' 获取更详细的使用信息。
信息
分类
数据库与文件