mcpField
M
MotherDuck's DuckDB MCP Server

MotherDuck's DuckDB MCP Server

本地服务
github.com/motherduckdb数据库5363 周前更新

关于 MotherDuck's DuckDB MCP Server

这是一款本地 MCP 服务,为 AI 助手和 IDE 提供 DuckDB 与 MotherDuck 的 SQL 分析和数据工程能力。它支持内存数据库、本地文件、S3 托管数据库及 MotherDuck,并可配置读写权限和数据库切换。

主要功能

  1. 01执行 DuckDB SQL 查询
  2. 02浏览数据库、表、视图和列
  3. 03连接本地、内存、S3 和 MotherDuck 数据库
  4. 04按配置启用读写访问
  5. 05启用后切换数据库连接
  6. 06支持 stdio 和 Streamable HTTP 传输

适用场景

  1. 01通过 AI 客户端查询本地 DuckDB 文件
  2. 02分析 MotherDuck 或 S3 数据库
  3. 03在数据工程中检查数据库目录
  4. 04通过 Docker 部署 HTTP MCP 服务

MCP 相关

它向 MCP 客户端提供 SQL 执行、目录浏览和可选的数据库切换工具,并支持 stdio 与 HTTP 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck"
],
"env": {
"motherduck_token": "<motherduck_token>",
"MOTHERDUCK_TOKEN": "<MOTHERDUCK_TOKEN>",
"HOME": "<HOME>",
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"AWS_SESSION_TOKEN": "<AWS_SESSION_TOKEN>",
"AWS_DEFAULT_REGION": "<AWS_DEFAULT_REGION>",
"AWS_ENDPOINT": "<AWS_ENDPOINT>"
}
}
}
}
启动命令uvx mcp-server-motherduck
需要配置的环境变量
motherduck_token密钥Access token for MotherDuck connections (alternative to --motherduck-token)
MOTHERDUCK_TOKEN密钥Access token for MotherDuck connections (alternative to --motherduck-token)
HOMEUsed by DuckDB for extensions and config. Override with --home-dir if not set.
AWS_ACCESS_KEY_ID密钥AWS access key for S3 database connections
AWS_SECRET_ACCESS_KEY密钥AWS secret access key for S3 database connections
AWS_SESSION_TOKEN密钥AWS session token for temporary credentials
AWS_DEFAULT_REGIONAWS region for S3 database connections
AWS_ENDPOINTAWS endpoint for S3 database connections

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-server-motherduck1.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MotherDuck / DuckDB 本地 MCP 服务

DuckDB / MotherDuck 本地 MCP 服务

为 AI 助手和 IDE 提供 SQL 分析与数据工程能力。


使用 DuckDB 强大的分析型 SQL 引擎,将 AI 助手连接到您的数据。支持连接本地 DuckDB 文件、内存数据库、托管在 S3 上的数据库以及 MotherDuck。支持执行 SQL 读写查询、浏览数据库目录,并即时切换不同的数据库连接。

正在寻找由 MotherDuck 全托管的远程 MCP 服务? → 查看 MotherDuck 远程 MCP 文档

远程 MCP 与本地 MCP
远程 MCP本地 MCP(本仓库)
托管方式由 MotherDuck 托管在本地运行/可自托管
设置无需设置需要本地安装
访问权限支持读写支持读写
本地文件系统-跨本地和远程数据库查询、从本地文件系统导入数据/向本地文件系统导出数据

快速开始

前提条件:通过 pip install uv 或 brew install uv 安装 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://bucket/path.duckdb 连接到 S3 上的远程 DuckDB 文件——有关 S3 身份验证,请参阅环境变量。如果您正在考虑向第三方开放 MCP 访问权限,请参阅生产环境安全配置。

以读写模式连接 MotherDuck
{
  "mcpServers": {
    "MotherDuck (local, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
      "env": {
        "motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
      }
    }
  }
}

如需了解更多选项,请参阅命令行参数;如需部署指南,请参阅生产环境安全配置;如果遇到问题,请参阅故障排除。

客户端设置

客户端配置位置一键安装
Claude DesktopSettings → Developer → Edit Config.mcpb (MCP Bundle)
Claude Code使用下方的 CLI 命令-
Codex CLI使用下方的 CLI 命令或 ~/.codex/config.toml-
Gemini CLI使用下方的 CLI 命令或 ~/.gemini/settings.json-
CursorSettings → MCP → Add new global MCP server在 Cursor 中安装
VS CodeCtrl+Shift+P → "Preferences: Open User Settings (JSON)"使用 UV 在 VS Code 中安装
Kiro~/.kiro/settings/mcp.json(全局)或 .kiro/settings/mcp.json(项目)添加到 Kiro

任何兼容 MCP 的客户端都可以使用此服务。将 快速开始 中的 JSON 配置添加到客户端的 MCP 配置文件中。有关配置文件位置,请参阅客户端文档。

Claude Code CLI 命令

内存 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

MotherDuck(读写):

claude mcp add --scope user motherduck --transport stdio --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-write
Codex CLI 命令

内存 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

MotherDuck(读写):

codex mcp add motherduck --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-write
Gemini CLI 命令

内存 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

MotherDuck(读写):

gemini mcp add -s user -e motherduck_token=YOUR_TOKEN motherduck uvx mcp-server-motherduck --db-path md: --read-write
Kiro 手动 JSON 配置

将以下内容添加到 Kiro MCP 配置文件中(全局配置使用 ~/.kiro/settings/mcp.json,项目级配置使用 .kiro/settings/mcp.json)。更多详情请参阅 Kiro MCP 文档。

内存 DuckDB(开发模式):

{
  "mcpServers": {
    "DuckDB (in-memory, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", ":memory:", "--read-write", "--allow-switch-databases"]
    }
  }
}

MotherDuck(读写):

{
  "mcpServers": {
    "MotherDuck (local, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
      "env": {
        "motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
      }
    }
  }
}

工具

工具描述必需输入可选输入
execute_query执行 SQL 查询(DuckDB 方言)sql-
list_databases列出所有数据库(适用于 MotherDuck 或多个已附加的数据库)--
list_tables列出表和视图-database、schema
list_columns列出表/视图的列tabledatabase、schema
switch_database_connection*切换到其他数据库pathcreate_if_not_exists

*需要 --allow-switch-databases 标志

所有工具均返回 JSON。默认情况下,结果限制为 1024 行 / 50,000 个字符(可通过 --max-rows、--max-chars 配置)。

生产环境安全

向第三方开放可自托管 MCP 服务的访问权限时,仅启用只读模式并不足够——它仍允许访问本地文件系统、更改 DuckDB 设置以及执行其他可能敏感的操作。

对于允许第三方访问的生产环境部署,我们建议使用 MotherDuck 远程 MCP——无需设置、支持读写,并由 MotherDuck 托管。

自托管 MotherDuck MCP: Fork 此仓库并按需自定义。使用 服务账户 和 读扩展令牌,并启用 SaaS 模式,以限制本地文件访问。

自托管 DuckDB MCP: 使用 --init-sql 应用安全设置。有关可用选项,请参阅保护 DuckDB 指南。

Docker

在端口 8000 上使用 Streamable HTTP 构建并运行服务(默认使用内存中的 DuckDB):

docker build -t mcp-server-motherduck .
docker run --rm -p 8000:8000 mcp-server-motherduck

传入令牌并覆盖命令,即可连接到 MotherDuck:

docker run --rm -p 8000:8000 \
  -e motherduck_token="$MOTHERDUCK_TOKEN" \
  mcp-server-motherduck --transport http --db-path md:

MCP 端点位于 http://localhost:8000/mcp。下方的 CLI 标志和环境变量仍然适用。

命令行参数

参数默认值说明
--db-path:memory:数据库路径:本地文件(绝对路径)、md: 或 s3:// URL
--motherduck-tokenmotherduck_token env varMotherDuck 访问令牌
--read-writeFalse启用写入权限
--motherduck-saas-modeFalseMotherDuck SaaS 模式(限制本地访问)
--allow-switch-databasesFalse启用 switch_database_connection 工具
--max-rows1024返回的最大行数
--max-chars50000返回的最大字符数
--query-timeout-1查询超时时间(秒)(-1 = 已禁用)
--init-sqlNone启动时执行的 SQL
--motherduck-connection-parameterssession_hint=mcp&
dbinstance_inactivity_ttl=0s
其他 MotherDuck 连接字符串参数(以 & 分隔的 key=value 对)
--ephemeral-connectionsTrue对只读本地文件使用临时连接
--transportstdio传输类型:stdio 或 http
--stateless-httpFalse仅用于协议兼容性(例如,与 AWS Bedrock AgentCore Runtime 配合使用)。服务仍通过共享的 DatabaseClient 维护全局状态。
--port8000HTTP 传输端口
--host127.0.0.1HTTP 传输主机

环境变量

变量说明
motherduck_token 或 MOTHERDUCK_TOKENMotherDuck 访问令牌(可替代 --motherduck-token)
HOMEDuckDB 用于扩展和配置。若未设置,可使用 --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": "<YOUR_MOTHERDUCK_TOKEN>"
      }
    }
  }
}

发布流程

  1. 运行 Release New Version GitHub Action
  2. 按 MAJOR.MINOR.PATCH 格式输入版本号
  3. 工作流会更新版本、发布到 PyPI/MCP 注册表,并创建包含 MCPB 包的 GitHub 发布版本

许可证

MIT 许可证——请参阅 LICENSE 文件。

mcp-name: io.github.motherduckdb/mcp-server-motherduck

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。