datasette/datasette-mcp
GitHub: datasette/datasette-mcp
为 Datasette 实例添加 MCP 服务器端点,使 LLM 客户端能够以只读方式查询数据库 schema 和执行 SQL。
Stars: 2 | Forks: 0
# datasette-mcp
[](https://pypi.org/project/datasette-mcp/)
[](https://github.com/datasette/datasette-mcp/releases)
[](https://github.com/datasette/datasette-mcp/actions/workflows/test.yml)
[](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, 安全规则引擎, 插件, 数据库工具, 无后门, 逆向工具