DuckDB / MotherDuck Local MCP Server
SQL analytics and data engineering for AI Assistants and IDEs.
______________________________________________________________________
使用DuckDB强大的分析SQL引擎将AI助手连接到您的数据。支持连接到本地DuckDB文件、内存数据库、S3托管数据库和MotherDuck。允许执行SQL读写查询、浏览数据库目录以及在不同数据库连接之间动态切换。
正在为MotherDuck寻找完全托管的远程MCP服务器? → 转到MotherDuck远程MCP文档
远程与本地MCP
| 远程MCP | 本地MCP (此回购) | |
|---|---|---|
| 托管 | 由MotherDuck主办 | 本地运行/自托管 |
| 设置 | 零安装 | 需要本地安装 |
| 访问 | 支持读写 | 支持读写 |
| 本地文件系统 | - | 跨本地和远程数据库查询,从本地文件系统摄取数据/将数据导出到本地文件系统 |
📝 从v0.x迁移? - 默认情况下为只读:默认情况下,服务器现在以只读模式运行。添加--read-write以启用写访问。看 确保生产安全. - 默认数据库已更改:--db-path默认值已更改md:到:memory:.添加--db-path md:明确表示为MotherDuck。 - MotherDuck只读需要读取缩放令牌:只读模式下的MotherDuck连接需要 读取缩放标记常规代币需要--read-write.
快速开始
先决条件:安装 uv 通过 pip install uv 或 brew install uv
连接到内存中的DuckDB(开发模式)
{
"mcpServers": {
"DuckDB (in-memory, r/w)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", ":memory:", "--read-write", "--allow-switch-databases"]
}
}
}完全灵活,没有护栏——读写访问和在运行时切换到任何数据库(本地文件、S3或MotherDuck)的能力。
以只读模式连接到本地DuckDB文件
{
"mcpServers": {
"DuckDB (read-only)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", "/absolute/path/to/your.duckdb"]
}
}
}以只读模式连接到特定的DuckDB文件。不会保留文件锁,因此可以方便地与同一DuckDB文件的写连接一起使用。您还可以使用以下命令连接到S3上的远程DuckDB文件 s3://bucket/path.duckdb --看 环境变量 用于S3身份验证。如果您正在考虑第三方访问MCP,请参阅 确保生产安全.
以读写模式连接到MotherDuck
{
"mcpServers": {
"MotherDuck (local, r/w)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
"env": {
"motherduck_token": ""
}
}
}
}看 命令行参数 对于更多选项, 确保生产安全 用于部署指导,以及 故障排除 如果你遇到问题。
客户端设置
| 客户端 | 配置位置 | 一键安装 |
|---|---|---|
| 克劳德桌面 | 设置→ 开发者→ 编辑配置 | .mcpb(MCP捆绑包) |
| 克劳德代码 | 使用下面的CLI命令 | - |
| Codex CLI | 使用下面的CLI命令或 ~/.codex/config.toml | - |
| 双子星命令行工具 | 使用下面的CLI命令或 ~/.gemini/settings.json | - |
| 光标 | 设置→ MCP → 添加新的全局MCP服务器 | [](https://cursor.com/en/install-mcp?name=DuckDB&config=eyJjb21tYW5kIjoidXZ4IG1jcC1zZXJ2ZXItbW90aGVyZHVjayAtLWRiLXBhdGggOm1lbW9yeTogLS1yZWFkLXdyaXRlIC0tYWxsb3ctc3dpdGNoLWRhdGFiYXNlcyIsImVudiI6e319) |
| VS Code | Ctrl+Shift+P → “首选项:打开用户设置(JSON)” |  |
任何兼容MCP的客户端都可以使用此服务器。从添加JSON配置 快速开始 到客户的MCP配置文件。有关配置文件的位置,请参阅客户的文档。
Claude Code CLI commands
内存中DuckDB(开发模式):
claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases本地DuckDB(只读):
claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb母鸭(读写):
claude mcp add --scope user motherduck --transport stdio --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-writeCodex CLI commands
内存中DuckDB(开发模式):
codex mcp add duckdb -- uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases本地DuckDB(只读):
codex mcp add duckdb -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb母鸭(读写):
codex mcp add motherduck --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-writeGemini CLI commands
内存中DuckDB(开发模式):
gemini mcp add -s user duckdb uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases本地DuckDB(只读):
gemini mcp add -s user duckdb uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb母鸭(读写):
gemini mcp add -s user -e motherduck_token=YOUR_TOKEN motherduck uvx mcp-server-motherduck --db-path md: --read-write工具
| 工具 | 描述 | 必需输入 | 可选输入 |
|---|---|---|---|
execute_query | 执行SQL查询(DuckDB方言) | sql | - |
list_databases | 列出所有数据库(对MotherDuck或多个连接的DB有用) | - | - |
list_tables | 列出表和视图 | - | database, schema |
list_columns | 列出表/视图的列 | table | database, schema |
switch_database_connection\* | 切换到其他数据库 | path | create_if_not_exists |
\*需要 --allow-switch-databases 旗帜
所有工具都返回JSON。默认情况下,结果限制为1024行/50000个字符(可通过以下方式配置 --max-rows, --max-chars).
确保生产安全
当允许第三方访问自托管MCP服务器时, 仅只读模式是不够的 --它仍然允许访问本地文件系统、更改DuckDB设置和其他潜在的敏感操作。
对于具有第三方访问权限的生产部署,我们建议 母鸭遥控MCP --零设置,支持读写,由MotherDuck托管。
自托管MotherDuck MCP: 分叉此仓库并根据需要进行自定义。使用一个 服务账号 和 读取缩放标记 并启用 SaaS模式 限制本地文件访问。
自托管DuckDB MCP: 使用 --init-sql 应用安全设置。请参阅 保护DuckDB指南 查看可用选项。
命令行参数
| 参数 | 默认值 | 说明 |
|---|---|---|
--db-path | :memory: | 数据库路径:本地文件(绝对), md: (母鸭),或 s3:// URL |
--motherduck-token | motherduck_token env var | MotherDuck访问令牌 |
--read-write | False | 启用写访问 |
--motherduck-saas-mode | False | MotherDuck SaaS模式(限制本地访问) |
--allow-switch-databases | False | 启用 switch_database_connection 工具 |
--max-rows | 1024 | 返回的最大行数 |
--max-chars | 50000 | 返回的最大字符数 |
--query-timeout | -1 | 查询超时(秒)(-1=禁用) |
--init-sql | None | 启动时要执行的SQL |
--motherduck-connection-parameters | session_hint=mcp& | |
dbinstance_inactivity_ttl=0s | 其他MotherDuck连接字符串参数(key=value 成对分开 &) | |
--ephemeral-connections | True | 对只读本地文件使用临时连接 |
--transport | stdio | 运输类型: stdio 或 http |
--stateless-http | False | 仅用于协议兼容性(例如与 AWS基岩代理核心运行时).服务器仍然通过共享的DatabaseClient维护全局状态。 |
--port | 8000 | HTTP传输端口 |
--host | 127.0.0.1 | HTTP传输主机 |
环境变量
| 变量 | 描述 |
|---|---|
motherduck_token 或 MOTHERDUCK_TOKEN | MotherDuck访问令牌(替代 --motherduck-token) |
HOME | DuckDB用于扩展和配置。覆盖 --home-dir 如果没有设置。 |
AWS_ACCESS_KEY_ID | S3数据库连接的AWS访问密钥 |
AWS_SECRET_ACCESS_KEY | S3数据库连接的AWS密钥 |
AWS_SESSION_TOKEN | 用于临时凭据(IAM角色、SSO、EC2实例配置文件)的AWS会话令牌 |
AWS_DEFAULT_REGION | S3连接的AWS区域 |
AWS_ENDPOINT | S3连接的AWS端点 |
故障排除
spawn uvx ENOENT:指定完整路径uvx(奔跑which uvx找到它)- 文件已锁定:确保
--ephemeral-connections已打开(默认值:true),并且您未以读写模式连接
资源
发展
要从源代码运行,请执行以下操作:
{
"mcpServers": {
"Local DuckDB (Dev)": {
"command": "uv",
"args": ["--directory", "/path/to/mcp-server-motherduck", "run", "mcp-server-motherduck", "--db-path", "md:"],
"env": {
"motherduck_token": ""
}
}
}
}发布过程
- 跑吧
Release New VersionGitHub行动 - 输入版本
MAJOR.MINOR.PATCH格式 - 工作流升级版本,发布到PyPI/MCP注册表,并使用MCPB包创建GitHub版本
许可证
MIT许可证-请参阅 许可证 文件。
##
mcp名称:io.github.motherduckdb/mcp-server-motherduck
