MotherDuck 的 DuckDB MCP 服务器
与 DuckDB 和 MotherDuck 数据库交互的 MCP 服务器实现,为 AI 助手和 IDE 提供 SQL 分析功能。
资源
特征
- 混合执行:从本地 DuckDB 或/和基于云的 MotherDuck 数据库查询数据
- 云存储集成:借助 MotherDuck 的集成,可以访问存储在 Amazon S3 或其他云存储中的数据
- 数据共享:创建和共享数据库
- SQL 分析:使用 DuckDB 的 SQL 方言直接从您的 AI 助手或 IDE 查询任意大小的数据
- 无服务器架构:无需配置实例或集群即可运行分析
成分
提示
服务器提供一个提示:
duckdb-motherduck-initial-prompt
:提示初始化与 DuckDB 或 MotherDuck 的连接并开始使用它
工具
该服务器提供了一个工具:
query
:在 DuckDB 或 MotherDuck 数据库上执行 SQL 查询- 输入:
query
(字符串,必需):要执行的 SQL 查询
- 输入:
与 DuckDB 和 MotherDuck 的所有交互都是通过编写 SQL 查询完成的。
入门
一般先决条件
uv
已安装,您可以使用pip install uv
或brew install uv
它
如果您计划将 MCP 与 Claude Desktop 或任何其他 MCP 兼容客户端一起使用,则需要安装客户端。
DuckDB 的先决条件
- 无先决条件。MCP 服务器可以动态创建内存数据库
- 或者连接到现有的本地 DuckDB 数据库文件,或存储在远程对象存储(例如 AWS S3)上的数据库文件。
请参阅连接到本地 DuckDB 。
MotherDuck 的先决条件
- 注册MotherDuck 账户
- 通过MotherDuck UI生成访问令牌
- 安全存储令牌以便在配置中使用
与游标一起使用
- 如果您还没有安装 Cursor,请从cursor.com/downloads安装
- 打开游标:
- 首次进行全局设置时,请前往“设置”->“MCP”,然后单击“+ 添加新的全局 MCP 服务器”。
- 这将打开一个
mcp.json
文件,您可以在其中添加以下配置:
与 VS Code 一起使用
- 为了最快地安装,请单击此自述文件顶部的“使用 UV 安装”按钮之一。
手动安装
将以下 JSON 块添加到 VS Code 中的“用户设置 (JSON)”文件中。您可以按下Ctrl + Shift + P
并输入Preferences: Open User Settings (JSON)
来执行此操作。
或者,您可以将其添加到工作区中名为.vscode/mcp.json
的文件中。这样您就可以与其他人共享该配置。
与 Claude Desktop 一起使用
- 如果你还没有安装 Claude Desktop,请从claude.ai/download安装
- 打开Claude桌面配置文件:
- 要快速访问它或首次创建它,请打开 Claude Desktop 应用程序,选择“设置”,然后单击“开发人员”选项卡,最后单击“编辑配置”按钮。
- 将以下配置添加到您的
claude_desktop_config.json
:
重要提示:
- 将
YOUR_MOTHERDUCK_TOKEN_HERE
替换为你的实际 MotherDuck 令牌 - 将
YOUR_HOME_FOLDER_PATH
替换为你的主目录路径(DuckDB 需要用到它来操作文件)。例如,在 macOS 上,该路径为/Users/your_username
- DuckDB 需要
HOME
环境变量才能正常运行。
查询 MotherDuck 时保护您的 MCP 服务器
如果 MCP 服务器暴露给第三方并且只应具有数据读取权限,我们建议使用读取扩展令牌并以 SaaS 模式运行 MCP 服务器。
读取扩展令牌是一种特殊的访问令牌,它允许最多 4 个并发读取副本,从而实现可扩展的读取操作,在限制写入功能的同时提升多个最终用户的性能。请参阅读取扩展文档,了解如何创建读取扩展令牌。
MotherDuck 中的SaaS 模式通过限制对本地文件、数据库、扩展程序和配置的访问来增强安全性,使其成为需要更严格环境保护的第三方工具的理想选择。请参阅SaaS 模式文档了解更多信息。
安全配置
连接到本地 DuckDB
要连接到本地 DuckDB,请不要使用 MotherDuck 令牌,而是指定本地 DuckDB 数据库文件的路径或使用:memory:
作为内存数据库。
内存数据库:
本地 DuckDB 文件:
本地 DuckDB 文件处于只读模式:
注意:本地文件备份 DuckDB 连接的只读模式也使用短暂连接。每次使用查询 MCP 工具时,都会创建一个临时的、只读的连接 + 执行查询 + 关闭连接。此功能源于一个工作流程: DBT用于在 duckdb 中建模数据,然后使用 MCP 客户端(Windsurf/Cline/Claude/Cursor)来探索数据库。短暂连接允许每个工具运行后释放连接,以便下一个工具进行连接。
示例查询
配置完成后,您可以要求 Claude 运行如下查询:
- “在 MotherDuck 中创建一个新的数据库和表”
- “从我的本地 CSV 文件查询数据”
- “将本地 DuckDB 数据库中的数据与 MotherDuck 中的表连接起来”
- “分析存储在 Amazon S3 中的数据”
测试
该服务器设计为由 Claude Desktop 和 Cursor 等工具运行,但您可以手动启动它进行测试。手动测试服务器时,可以使用--db-path
参数指定要连接的数据库:
- 默认 MotherDuck 数据库:
- 要连接到默认的 MotherDuck 数据库,您需要使用
--motherduck-token
参数传递身份验证令牌。
- 要连接到默认的 MotherDuck 数据库,您需要使用
- 具体的 MotherDuck 数据库:
- 本地 DuckDB 数据库:
- 内存数据库:
如果您未指定数据库路径但设置了motherduck_token
环境变量,则服务器将自动连接到默认的 MotherDuck 数据库 ( md:
)。
以 SSE 模式运行
服务器还可以通过运行以下命令使用supergateway
运行 SSE 模式:
您可以将您的客户端(例如 Claude Desktop、Cursor)指向此端点。
开发配置
要从本地开发环境运行服务器,请使用以下配置:
故障排除
- 如果遇到连接问题,请验证您的 MotherDuck 令牌是否正确
- 对于本地文件访问问题,请确保
--home-dir
参数设置正确 - 检查
uvx
命令是否在你的 PATH 中可用 - 如果遇到
spawn uvx ENOENT
错误,请尝试指定uvx
的完整路径(which uvx
的输出) - 在之前的 v0.4.0 版本中我们使用环境变量,现在我们使用参数
执照
此 MCP 服务器采用 MIT 许可证。这意味着您可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
MotherDuck 和本地 DuckDB 的 MCP 服务器。
Related Resources
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol (MCP) server implementation for DuckDB, providing database interaction capabilities through MCP tools. It would be interesting to have LLM analyze it. DuckDB is suitable for local analysis.Last updated -5105PythonMIT License
- -securityAlicense-qualityThis MCP server utilizes DuckDuckGo for web searches, providing structured search results with metadata and features like smart content classification and language detection, facilitating easy integration with AI clients supporting the MCP protocol.Last updated -1251JavaScriptMIT License
- AsecurityAlicenseAqualityA Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.Last updated -226PythonMIT License
- -securityAlicense-qualityUniversal database MCP server connecting to MySQL, PostgreSQL, SQLite, DuckDB and etc.Last updated -3548TypeScriptMIT License