README
🚀 SQLite MCP 服务器
本项目是一个用 Python 编写的 MCP(模型上下文协议)服务器,它能连接到包含初创公司融资数据的 SQLite 数据库。服务器会公开表结构作为资源,提供只读 SQL 查询工具,还能提供常见数据分析任务的提示模板。该服务器可与 MCP 客户端和大语言模型(LLMs)配合使用,通过 STDIO 协议进行通信。
🚀 快速开始
本 MCP 服务器使用 MCP Python SDK(带 CLI 额外功能),具备以下功能:
- 连接到 SQLite 数据库(如包含初创公司融资信息的数据库)。
- 公开特定表的结构作为 MCP 资源。
- 提供执行只读 SQL 查询的工具。
- 提供提示模板,助力语言模型生成数据分析见解。
- 通过 STDIO 协议通信,从标准输入读取 JSON - RPC 消息,并将响应写入标准输出。
✨ 主要特性
资源
schema://sqlite/{table}:返回特定表的 SQL 结构。schema://sqlite/all:返回所有表结构的 JSON 映射。
工具
sql_query:执行只读 SQL 查询,仅允许SELECT语句。
提示
analyze_table_prompt:生成特定表的分析提示。describe_query_prompt:生成解释 SQL 查询的提示。
STDIO 协议
从 stdin 读取,将响应写入 stdout,集成简单方便。
日志记录
使用 Python 的 logging 模块跟踪活动和调试错误。
📦 安装指南
创建示例 SQLite 数据库
将以下脚本保存为 create_db.py:
<同上>
运行命令:
python create_db.py
创建虚拟环境
python -m venv venv
激活环境:
- macOS/Linux:
source venv/bin/activate
- Windows:
venv\Scripts\activate
安装依赖项:
pip install "mcp[cli]"
运行 MCP 服务器
- 将服务器代码保存为
sqlite_mcp_server.py。 - 运行服务器:
python sqlite_mcp_server.py
使用 uv 可选:
uv run sqlite_mcp_server.py
安装到 Claude Desktop
将以下内容保存为 install_to_claude.py 并运行:
python install_to_claude.py
💻 使用示例
基础用法
从 MCP 服务器获取表结构
mcp server --host localhost:5000 --get schema://sqlite/sales
执行 SQL 查询
mcp server --host localhost:5000 --query "SELECT * FROM sales LIMIT 5"
生成查询描述
mcp server --host localhost:5000 --describe "SELECT COUNT(*) FROM customers WHERE state = 'CA'"
📚 详细文档
测试
使用 MCP CLI 工具测试服务器
- 安装 MCP CLI:
pip install mcp-cli
- 测试表结构获取:
mcp test --host localhost:5000 --test-get schema://sqlite/sales
- 测试 SQL 查询执行:
mcp test --host localhost:5000 --test-query "SELECT * FROM sales LIMIT 5"
日志记录
配置日志文件
在 logging_config.json 中添加以下内容:
{
"version": 1,
"handlers": {
"file_handler": {
"class": "logging.FileHandler",
"filename": "mcp_server.log",
"level": "INFO"
}
},
"root": {
"level": "INFO",
"handlers": ["file_handler"]
}
}
启用日志记录
在 sqlite_mcp_server.py 中添加以下内容:
import logging
from logging.config import fileConfig
fileConfig("logging_config.json")
logger = logging.getLogger()
def main():
# ...
logger.info("Starting MCP Server")
# ...
if __name__ == "__main__":
main()
📄 许可证
此项目受 MIT License 保护。
Scan to contact