内容
# 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相同的环境中安装此插件。
```bash
datasette install datasette-mcp
```
## 使用
像正常一样启动Datasette,然后配置MCP客户端连接到:
```
http://localhost:8001/-/mcp
```
该端点使用MCP Streamable HTTP,并默认暴露三个只读工具:
- `list_databases` 列出当前Datasette actor可用的数据库。
- `get_database_schema` 返回数据库的完整SQL架构,包括表、索引、视图和触发器。
- `execute_sql` 执行一个只读SQL语句,并返回结构化的列、行和截断指示符。
Datasette数据库可见性和`execute-sql`权限对每个工具调用强制执行。 SQL使用与Datasette自定义SQL接口相同的`validate_sql_select()`和只读`Database.execute()`路径。
## 注册额外的MCP工具
其他Datasette插件可以通过实现`register_mcp_tools(datasette, mcp)`插件钩子来为此MCP服务器添加工具。 `mcp`参数是该Datasette实例的`MCPServer`,因此实现使用MCP Python SDK的正常`@mcp.tool()`装饰器:
```python
from datasette import hookimpl
@hookimpl
def register_mcp_tools(datasette, mcp):
@mcp.tool()
async def database_count() -> int:
"""返回用户可见的数据库数量。"""
return len(
[name for name in datasette.databases if name != "_internal"]
)
```
钩子本身是同步的,因为工具是在构造MCP服务器时注册的。 工具函数可以是同步或异步的,并且可以使用MCP Python SDK提供的所有输入、输出、上下文和注释功能。
Datasette-mcp通过同一个钩子注册`list_databases`、`get_database_schema`和`execute_sql`。
## 开发
要本地设置此插件,首先签出代码。 你可以这样确认它可用:
```bash
cd datasette-mcp
# 确认插件可见
uv run datasette plugins
```
要运行测试:
```bash
uv run pytest
```