MotherDuck

官方

使用 MotherDuck 和本地 DuckDB 查詢與分析資料

你可以用 MotherDuck MCP 做什麼?

  • 執行 SQL 分析 — 請您的助理使用 execute_query 查詢本機 DuckDB 檔案、記憶體資料庫或 MotherDuck,並支援完整的 DuckDB SQL 方言。

  • 探索資料庫結構 — 請您的助理使用 list_databases、list_tables 和 list_columns 列出資料庫、資料表和欄位,以了解您的資料結構。

  • 切換資料庫連線 — 指示您的助理透過 switch_database_connection 即時在本機檔案、S3 託管資料庫或 MotherDuck 之間切換(需使用 --allow-switch-databases 旗標)。

  • 寫入與修改資料 — 啟用讀寫模式,讓您的助理直接對已連線的資料庫執行插入、更新或刪除記錄。

  • 匯入與匯出資料 — 使用伺服器跨本機與遠端資料庫進行查詢,並從您的本機檔案系統匯入資料或將資料匯出至本機檔案系統。

託管 MCP 伺服器

npx add-mcp 'https://api.motherduck.com/mcp'

可安裝到 Claude Code、Codex、Cursor 等客戶端

文件

MotherDuck / DuckDB Local MCP Server

DuckDB / MotherDuck 本地 MCP 伺服器

為 AI 助理和 IDE 提供的 SQL 分析與資料工程。


使用 DuckDB 強大的分析型 SQL 引擎,將 AI 助理連接到您的資料。支援連接到本機 DuckDB 檔案、記憶體資料庫、S3 託管資料庫以及 MotherDuck。允許執行 SQL 讀取和寫入查詢、瀏覽資料庫目錄,以及即時切換不同的資料庫連線。

正在尋找 MotherDuck 的完全託管遠端 MCP 伺服器? → 前往 MotherDuck 遠端 MCP 文件

遠端 vs 本機 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 Desktop設定 → 開發人員 → 編輯設定.mcpb(MCP 套件)
Claude Code使用下方的 CLI 命令-
Codex CLI使用下方的 CLI 命令或 ~/.codex/config.toml-
Gemini CLI使用下方的 CLI 命令或 ~/.gemini/settings.json-
Cursor設定 → MCP → 新增全域 MCP 伺服器Install in Cursor
VS CodeCtrl+Shift+P → "喜好設定:開啟使用者設定 (JSON)"Install with UV in VS Code
Kiro~/.kiro/settings/mcp.json(全域)或 .kiro/settings/mcp.json(專案)Add to 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: 複製此儲存庫並依需求自訂。使用具有**讀取擴充權杖的服務帳戶,並啟用SaaS 模式**以限制本機檔案存取。

自行託管 DuckDB MCP: 使用 --init-sql 套用安全設定。可用選項請參閱 Securing 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:(MotherDuck)或 s3:// URL
--motherduck-tokenmotherduck_token 環境變數MotherDuck 存取權杖
--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_IDS3 資料庫連線的 AWS 存取金鑰
AWS_SECRET_ACCESS_KEYS3 資料庫連線的 AWS 密鑰
AWS_SESSION_TOKEN臨時憑證的 AWS 工作階段權杖(IAM 角色、SSO、EC2 執行個體設定檔)
AWS_DEFAULT_REGIONS3 連線的 AWS 區域
AWS_ENDPOINTS3 連線的 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