datasette/datasette-mcp

GitHub: datasette/datasette-mcp

为 Datasette 实例添加 MCP 服务器端点,使 LLM 客户端能够以只读方式查询数据库 schema 和执行 SQL。

Stars: 2 | Forks: 0

# datasette-mcp [![PyPI](https://img.shields.io/pypi/v/datasette-mcp.svg)](https://pypi.org/project/datasette-mcp/) [![更新日志](https://img.shields.io/github/v/release/datasette/datasette-mcp?include_prereleases&label=changelog)](https://github.com/datasette/datasette-mcp/releases) [![测试](https://static.pigsec.cn/wp-content/uploads/repos/cas/ce/ce733292a922c08274cf5a2096f8fa4cf01023bfa51a36ef6beecaaef371a9d9.svg)](https://github.com/datasette/datasette-mcp/actions/workflows/test.yml) [![许可证](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/datasette/datasette-mcp/blob/main/LICENSE) 为任何 Datasette 实例添加一个 /-/mcp MCP 服务器 ## 安装说明 在与 Datasette 相同的环境中安装此插件。 ``` datasette install datasette-mcp ``` ## 用法 正常启动 Datasette,然后配置 MCP 客户端连接到: ``` http://localhost:8001/-/mcp ``` 该 endpoint 默认使用 MCP Streamable HTTP,并暴露三个只读工具: - `list_databases` 列出当前 Datasette actor 可用的数据库。 - `get_database_schema` 返回数据库的完整 SQL schema,包括表、索引、视图和触发器。 - `execute_sql` 执行一条只读 SQL 语句,并返回结构化的列、行和截断指示符。 每次工具调用都会强制执行 Datasette 数据库可见性和 `execute-sql` 权限。SQL 使用与 Datasette 自定义 SQL 接口相同的 `validate_sql_select()` 和只读 `Database.execute()` 路径。 ## 注册额外的 MCP 工具 其他 Datasette 插件可以通过实现 `register_mcp_tools(datasette, mcp)` 插件 hook 来向此 MCP 服务器添加工具。`mcp` 参数是该 Datasette 实例对应的 `MCPServer`,因此实现方式可以使用 MCP Python SDK 常规的 `@mcp.tool()` 装饰器: ``` from datasette import hookimpl @hookimpl def register_mcp_tools(datasette, mcp): @mcp.tool() async def database_count() -> int: """Return the number of user-facing databases.""" return len( [name for name in datasette.databases if name != "_internal"] ) ``` 该 hook 本身是同步的,因为工具是在 MCP 服务器构建期间注册的。工具函数可以是同步或异步的,并且可以使用 MCP Python SDK 提供的所有输入、输出、上下文和注解功能。 datasette-mcp 通过这个相同的 hook 注册了 `list_databases`、`get_database_schema` 和 `execute_sql`。 ## 开发 要在本地设置此插件,请首先检出代码。您可以像这样确认它是否可用: ``` cd datasette-mcp # 确认插件可见 uv run datasette plugins ``` 要运行测试: ``` uv run pytest ```
标签:AI集成, Datasette, MCP, Python, 安全规则引擎, 插件, 数据库工具, 无后门, 逆向工具