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 等客戶端
文件
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 伺服器 | |
| VS Code | Ctrl+Shift+P → "喜好設定:開啟使用者設定 (JSON)" | |
| Kiro | ~/.kiro/settings/mcp.json(全域)或 .kiro/settings/mcp.json(專案) |
任何相容 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 | 列出資料表/檢視的欄位 | table | database, schema |
switch_database_connection* | 切換到不同的資料庫 | path | create_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-token | motherduck_token 環境變數 | 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 Bedrock AgentCore Runtime)。伺服器仍透過共享的 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 | 臨時憑證的 AWS 工作階段權杖(IAM 角色、SSO、EC2 執行個體設定檔) |
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>"
}
}
}
}
發行流程
- 執行
Release New VersionGitHub Action - 以
MAJOR.MINOR.PATCH格式輸入版本號 - 工作流程會更新版本號、發佈到 PyPI/MCP 註冊表,並建立包含 MCPB 套件的 GitHub 發行版本
授權
MIT 授權 — 請參閱 LICENSE 檔案。
mcp-name: io.github.motherduckdb/mcp-server-motherduck