这是一个与 DuckDB 和 MotherDuck 数据库交互的 MCP 服务器实现,为 AI 助手和 IDE 提供 SQL 分析功能。
<img src="https://cursor.com/deeplink/mcp-install-dark.svg" alt="在 Cursor 中安装">
该服务器提供一个提示:
duckdb-motherduck-initial-prompt:初始化连接到 DuckDB 或 MotherDuck 并开始工作的提示该服务器提供一个工具:
query:在 DuckDB 或 MotherDuck 数据库上执行 SQL 查询
query(字符串,必需):要执行的 SQL 查询与 DuckDB 和 MotherDuck 的所有交互都是通过编写 SQL 查询完成的。
结果限制:查询结果会自动限制以防止占用过多上下文:
--max-rows 配置)--max-chars 配置)MCP 服务器支持以下参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
--transport | 选择 | stdio | 传输类型。选项:stdio,sse,stream |
--port | 整数 | 8000 | 监听 sse 和流传输模式的端口 |
--host | 字符串 | 127.0.0.1 | 绑定 MCP 服务器的主机(用于 sse 和流传输模式) |
--db-path | 字符串 | md: | 本地 DuckDB 数据库文件路径、MotherDuck 数据库或 S3 URL(例如,s3://bucket/path/to/db.duckdb) |
--motherduck-token | 字符串 | None | 连接到 MotherDuck 数据库时使用的访问令牌(默认使用 motherduck_token 环境变量) |
--read-only | 标志 | False | 以只读模式连接到 DuckDB 或 MotherD.uck 的标志。对于 DuckDB,它使用短暂连接以启用并发访问 |
--home-dir | 字符串 | None | DuckDB 的主目录(默认使用 HOME 环境变量) |
--saas-mode | 标志 | False | 以 SaaS 模式 连接到 MotherDuck 的标志(禁用本地 DuckDB 的文件系统和写权限) |
--json-response | 标志 | False | 启用 HTTP 流的 JSON 响应。仅支持 stream 传输 |
--max-rows | 整数 | 1024 | 查询返回的最大行数。 |
--max-chars | 整数 | 50000 | 查询结果中的最大字符数。 |
--query-timeout | 整数 | -1 | 查询执行超时时间(秒)。设置为 -1 取消超时(默认)。 |
# 以只读模式连接到本地 DuckDB 文件
uvx mcp-server-motherduck --db-path /path/to/local.db --read-only
# 使用令牌连接到 MotherDuck
uvx mcp-server-motherduck --db-path md: --motherduck-token YOUR_TOKEN
# 以只读模式连接到本地 DuckDB 文件
uvx mcp-server-motherduck --db-path /path/to/local.db --read-only
# 在 SaaS 模式下连接到 MotherDuck,增强安全性并使用流传输模式
uvx mcp-server-motherduck --transport stream --db-path md: --motherduck-token YOUR_TOKEN --saas-mode
# 自定义结果截断限制
uvx mcp-server-motherduck --db-path md: --motherduck-token YOUR_TOKEN --max-rows 2048 --max-chars 100000
# 启用查询超时(5 分钟)
uvx mcp-server-motherduck --db-path md: --motherduck-token YOUR_TOKEN --query-timeout 300
uv,可以使用 pip install uv 或 brew install uv 安装如果您计划使用 Claude Desktop 或任何其他兼容 MCP 的客户端,则需要安装客户端。
参见 连接到本地 DuckDB。
如果尚未安装,请从 cursor.com/downloads 安装 Cursor
打开 Cursor:
mcp.json 文件,在其中添加以下配置:{
"mcpServers": {
"mcp-server-motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck",
"--db-path",
"md:",
"--motherduck-token",
"<YOUR_MOTHERDUCK_TOKEN_HERE>"
]
}
}
}
为了快速安装,请点击顶部的“使用 UV 安装”按钮之一。
在 VS Code 的用户设置(JSON)文件中添加以下 JSON 块。您可以通过按 Ctrl + Shift + P 并键入 Preferences: Open User Settings (JSON) 来执行此操作。
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "motherduck_token",
"description": "MotherDuck Token",
"password": true
}
],
"servers": {
"motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck",
"--db-path",
"md:",
"--motherduck-token",
"${input:motherduck_token}"
]
}
}
}
}
可选地,您可以将其添加到工作区中的名为 .vscode/mcp.json 的文件中。这将允许您与其他人员共享配置。
{
"inputs": [
{
"type": "promptString",
"id": "motherduck_token",
"description": "MotherDuck Token",
"password": true
}
],
"servers": {
"motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck",
"--db-path",
"md:",
"--motherduck-token",
"${input:motherduck_token}"
]
}
}
}
如果尚未安装,请从 claude.ai/download 安装 Claude Desktop
打开 Claude Desktop 配置文件:
claude_desktop_config.json 中添加以下配置:{
"mcpServers": {
"mcp-server-motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck",
"--db-path",
"md:",
"--motherduck-token",
"<YOUR_MOTHERDUCK_TOKEN_HERE>"
]
}
}
}
重要说明:
YOUR_MOTHERDUCK_TOKEN_HERE 替换为您实际的 MotherDuck 令牌Claude Code 通过 CLI 命令或 JSON 配置支持 MCP 服务器。以下是两种设置方法:
直接使用 Claude Code CLI 添加 MotherDuck MCP 服务器:
claude mcp add mcp-server-motherduck uvx mcp-server-motherduck -- --db-path md: --motherduck-token <YOUR_MOTHERDUCK_TOKEN_HERE>
使用 JSON 配置添加服务器:
claude mcp add-json mcp-server-motherduck '{
"command": "uvx",
"args": [
"mcp-server-motherduck",
"--db-path",
"md:",
"--motherduck-token",
"<YOUR_MOTHERDUCK_TOKEN_HERE>"
]
}'
作用域选项:
--local(默认)进行项目特定配置--project 通过 .mcp.json 与团队共享配置--user 让服务器在所有项目中可用重要说明:
YOUR_MOTHERDUCK_TOKEN_HERE 替换为您实际的 MotherDuck 令牌${MOTHERDUCK_TOKEN}如果 MCP 服务器暴露给第三方并且只能访问数据的读取权限,我们建议使用读取缩放令牌并以 SaaS 模式运行 MCP 服务器。
读取缩放令牌 是特殊的访问令牌,通过允许最多 4 个并发读取副本,使可扩展的读取操作成为可能,从而提高多个最终用户的性能,同时限制写入能力。 参阅 读取缩放文档,了解如何创建读取缩放令牌。
SaaS 模式 在 MotherDuck 中增强了安全性,通过限制其对本地文件、数据库、扩展和配置的访问,使其非常适合需要更严格环境保护的第三方工具。了解更多关于它的内容,请参阅 SaaS 模式文档。
安全配置
{
"mcpServers": {
"mcp-server-motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck",
"--db-path",
"md:",
"--motherduck-token",
"<YOUR_READ_SCALING_TOKEN_HERE>",
"--saas-mode"
]
}
}
}
要连接到本地 DuckDB,而不是使用 MotherDuck 令牌,指定本地 DuckDB 数据库文件的路径或使用 :memory: 创建内存数据库。
内存数据库:
{
"mcpServers": {
"mcp-server-motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck",
"--db-path",
":memory:"
]
}
}
}
本地 DuckDB 文件:
{
"mcpServers": {
"mcp-server-motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck",
"--db-path",
"/path/to/your/local.db"
]
}
}
}
本地 DuckDB 文件的 只读模式:
{
"mcpServers": {
"mcp-server-motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck",
"--db-path",
"/path/to/your/local.db",
"--read-only"
]
}
}
}
注意:本地文件支持的 DuckDB 连接的只读模式也使用短暂连接。每次使用查询 MCP 工具时,都会创建一个临时的只读连接,执行查询,然后关闭连接。此功能是为以下工作流程设计的:DBT 用于在 DuckDB 中建模数据,然后使用 MCP 客户端(如 Windsurf/Cline/Claude/Cursor)来探索数据库。短暂连接允许每个工具运行并释放其连接,以便下一个工具能够连接。
您可以提供 S3 URL 作为数据库路径来连接到存储在 Amazon S3 上的 DuckDB 数据库。服务器将自动从您的环境变量中配置必要的 S3 凭据。
{
"mcpServers": {
"mcp-server-motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck",
"--db-path",
"s3://your-bucket/path/to/database.duckdb"
],
"env": {
"AWS_ACCESS_KEY_ID": "<your_key>",
"AWS_SECRET_ACCESS_KEY": "<your_secret>",
"AWS_DEFAULT_REGION": "<your_region>"
}
}
}
}
注意:对于 S3 连接:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,可选 AWS_DEFAULT_REGION)提供AWS_SESSION_TOKEN 环境变量(可选 AWS_DEFAULT_REGION)以自动使用 DuckDB 的 credential_chain 提供者。