sqlite阅读器mcp
用于读取SQLite数据库的MCP服务器。
概述
sqlite-reader-mcp 是一个轻量级的MCP服务器,提供对SQLite数据库的只读访问。它允许用户执行SELECT查询、列出表和描述表模式。
特性
- 只读访问:通过只允许读取操作(SELECT查询)来确保数据完整性。
- 安全路径处理:限制对预先批准的绝对文件路径和目录的数据库访问。
- SQL验证:解析和验证SQL查询,只允许
SELECT和WITH防止意外操作的声明。 - 异步操作:利用
aiosqlite用于非阻塞数据库交互。 - 行限制:自动限制查询返回的行数,以防止过度的数据检索。
- MCP工具:
- read_query:在指定的SQLite数据库上执行SELECT SQL查询。 - list_tables:列出给定SQLite数据库中的所有表。 - describe_table:获取特定表的架构信息(列名、类型等)。
需求
- Python 3.13+
aiosqlite >= 0.21.0fastmcp >= 2.6.1sqlparse >= 0.5.3
安装
建议的安装方法是 uv:
uv tool install git+https://github.com/abhinavnatarajan/sqlite-reader-mcp用法
sqlite-reader-mcp --paths /path/to/your/database.db /path/to/another/allowed_directory论据:
--paths(或-p):服务器可以访问的SQLite数据库文件或包含这些文件的目录的绝对路径列表。
服务器运行后,您可以使用以下工具使用FastMCP客户端与之交互:
read_query
对指定的SQLite数据库文件执行SELECT查询。
- 参数:
- file_path (str):SQLite数据库文件的绝对路径。 - query (str):要执行的SELECT SQL查询。 - params (可选\[List\[Any\]\]):查询的可选参数列表。 - fetch_all (bool):如果 True (默认),获取所有结果。如果 False,取一行。 - row_limit (int):要返回的最大行数(默认值为1000)。
- 退货:字典列表,其中每个字典代表查询结果中的一行。
list_tables
列出指定SQLite数据库文件中的所有表。
- 参数:
- file_path (str):SQLite数据库文件的绝对路径。
- 退货:表名(字符串)列表。
describe_table
为SQLite数据库中的特定表提供详细的模式信息。
- 参数:
- file_path (str):SQLite数据库文件的绝对路径。 - table_name (str):要描述的表的名称。
- 退货:字典列表,每个字典描述一列(例如,名称、类型、非空、默认值、主键状态)。
安全
- 只读的:服务器是严格只读的。不
INSERT,UPDATE,DELETE,或允许其他数据修改SQL命令。 - 路径白名单:访问仅限于位于通过显式提供的路径中的SQLite文件
--paths命令行参数。路径必须是绝对存在的。 - 查询验证:解析所有SQL查询。仅
SELECT语句(包括使用通用表表达式的语句WITH)是允许的。单个查询字符串中的多个语句被拒绝。尾随的分号会自动删除。
发展
该项目是使用 setuptools。配置在 pyproject.toml.
