MotherDuck的DuckDB MCP服务器
MCP服务器实现,与DuckDB和MotherDuck数据库交互,为AI助手和IDE提供SQL分析功能。

资源
特性
- 混合执行:从本地DuckDB或/和基于云的MotherDuck数据库查询数据
- 云存储集成:由于MotherDuck的集成,可以访问存储在Amazon S3或其他云存储中的数据
- 数据共享:创建和共享数据库
- SQL分析:使用DuckDB的SQL方言直接从AI助手或IDE查询任何大小的数据
- 无服务器架构:运行分析,无需配置实例或集群
组件
提示
服务器提供一个提示:
duckdb-motherduck-initial-prompt:初始化与DuckDB或MotherDuck的连接并开始使用它的提示
工具
服务器提供了一个工具:
query:在DuckDB或MotherDuck数据库上执行SQL查询
- 输入: - query (string,必填):要执行的SQL查询
与DuckDB和MotherDuck的所有交互都是通过编写SQL查询完成的。
命令行参数
MCP服务器支持以下参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--transport | 选择 | stdio | 运输类型。选项: stdio, sse, stream |
--port | 整数 | 8000 | 监听sse和流传输模式的端口 |
--db-path | 字符串 | md: | 本地DuckDB数据库文件或MotherDuck数据库的路径 |
--motherduck-token | 字符串 | None | 用于MotherDuck数据库连接的访问令牌(使用 motherduck_token 默认情况下为env var) |
--read-only | 旗帜 | False | 以只读模式连接到DuckDB或MotherDuck的标志。对于DuckDB,它使用短时间连接来启用并发访问 |
--home-dir | 字符串 | None | DuckDB的主目录(使用 HOME 默认情况下为env var) |
--saas-mode | 旗帜 | False | 在中连接到MotherDuck的标志 SaaS模式.(禁用本地DuckDB的文件系统和写入权限) |
--json-response | 旗帜 | False | 为HTTP流启用JSON响应。仅支持 stream 运输 |
快速使用示例
# Connect to local DuckDB file in read-only mode with stream transport mode
uvx mcp-server-motherduck --transport stream --db-path /path/to/local.db --read-only
# Connect to MotherDuck with token with stream transport mode
uvx mcp-server-motherduck --transport stream --db-path md: --motherduck-token YOUR_TOKEN
# Connect to local DuckDB file in read-only mode with stream transport mode
uvx mcp-server-motherduck --transport stream --db-path /path/to/local.db --read-only
# Connect to MotherDuck in SaaS mode for enhanced security with stream transport mode
uvx mcp-server-motherduck --transport stream --db-path md: --motherduck-token YOUR_TOKEN --saas-mode入门指南
一般先决条件
uv已安装,您可以使用安装pip install uv或brew install uv
如果您计划将MCP与Claude Desktop或任何其他MCP兼容客户端一起使用,则需要安装客户端。
DuckDB的先决条件
- 没有先决条件。MCP服务器可以动态创建内存中的数据库
- 或者连接到现有的本地DuckDB数据库文件,或存储在远程对象存储(例如AWS S3)上的数据库文件。
看 连接到本地DuckDB.
MotherDuck的先决条件
- 注册一个 MotherDuck帐户
- 通过生成访问令牌 MotherDuck用户界面
- 安全地存储令牌,以便在配置中使用
使用游标
- 从以下位置安装游标 如果你还没有
- 打开光标:
- 要首次全局设置,请转到设置->MCP,然后单击“+添加新的全局MCP服务器”。
- 这将打开一个
mcp.json添加以下配置的文件:
{
"mcpServers": {
"mcp-server-motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck",
"--db-path",
"md:",
"--motherduck-token",
""
]
}
}
}使用VS代码
要获得最快的安装速度,请单击顶部的“使用UV安装”按钮之一。
手动安装
将以下JSON块添加到VS Code中的用户设置(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 Desktop
- 从以下位置安装Claude Desktop claude.ai/下载 如果你还没有
- 打开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使用您的MotherDuck代币 - 这
HOMEDuckDB正常运行需要环境变量。
查询MotherDuck时保护MCP服务器
如果MCP服务器暴露给第三方,并且只能读取数据,我们建议使用读取扩展令牌并在SaaS模式下运行MCP服务器。
读取缩放令牌 是特殊的访问令牌,通过允许多达4个并发读取副本来实现可扩展的读取操作,提高了多个最终用户的性能,同时 *限制写入能力*. 请参阅 阅读缩放文档 学习如何创建读取缩放令牌。
SaaS模式 MotherDuck通过限制对本地文件、数据库、扩展名和配置的访问来增强安全性,使其成为需要更严格环境保护的第三方工具的理想选择。在 SaaS模式文档.
安全配置
{
"mcpServers": {
"mcp-server-motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck",
"--db-path",
"md:",
"--motherduck-token",
"",
"--saas-mode"
]
}
}
}连接到本地DuckDB
要连接到本地DuckDB,而不是使用MotherDuck令牌,请指定本地DuckDA数据库文件的路径或使用 :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工具时, 创建reaodnly连接+执行查询+关闭连接。这 该功能是由工作流驱动的,其中 辩证行为疗法 是为了 在duckdb中建模数据,然后是MCP客户端(Windsurf/Cline/Claude/Cursor) 用于探索数据库。短寿命连接允许每个工具 运行,然后释放它们的连接,允许下一个工具连接。
查询示例
配置后,您可以例如要求Claude运行以下查询:
- “在MotherDuck中创建新的数据库和表”
- “从本地CSV文件查询数据”
- “将本地DuckDB数据库中的数据与MotherDuck中的表连接起来”
- “分析存储在Amazon S3中的数据”
在SSE模式下运行
服务器可以通过两种方式在SSE模式下运行:
直接SSE模式
使用以下命令直接在SSE模式下运行服务器 --transport sse 标志:
uvx mcp-server-motherduck --transport sse --port 8000 --db-path md: --motherduck-token 这将启动服务器在指定端口(默认8000)上侦听,您可以将客户端直接指向此端点。
使用超级网关
或者,您可以使用以下命令运行SSE模式 supergateway:
npx -y supergateway --stdio "uvx mcp-server-motherduck --db-path md: --motherduck-token "这两种方法都允许您将客户端(如Claude Desktop、Cursor)指向SSE端点。
开发配置
要从本地开发环境运行服务器,请使用以下配置:
{
"mcpServers": {
"mcp-server-motherduck": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/local/mcp-server-motherduck",
"run",
"mcp-server-motherduck",
"--db-path",
"md:",
"--motherduck-token",
""
]
}
}
}故障排除
- 如果您遇到连接问题,请验证您的MotherDuck令牌是否正确
- 对于本地文件访问问题,请确保
--home-dir参数设置正确 - 检查一下
uvx命令在PATH中可用 - 如果你遇到
spawn uvx ENOENT错误,请尝试指定到的完整路径uvx(输出which uvx) - 在之前的v0.4.0版本中,我们使用了环境变量,现在我们使用了参数
许可证
此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。
