MotherDuck MCP Server
官方使用 MotherDuck 和本地 DuckDB 查詢與分析資料
文件
DuckDB / MotherDuck 本地 MCP 伺服器
為 AI 助理與 IDE 提供 SQL 分析與資料工程能力。
使用 DuckDB 強大的分析型 SQL 引擎,將 AI 助理連接到您的資料。支援連接本地 DuckDB 檔案、記憶體內資料庫、S3 託管的資料庫以及 MotherDuck。允許執行 SQL 讀取與寫入查詢、瀏覽資料庫目錄,並能動態切換不同的資料庫連線。
正在尋找 MotherDuck 的全託管遠端 MCP 伺服器嗎? → 前往 MotherDuck 遠端 MCP 文件
遠端與本地 MCP 比較
| 遠端 MCP | 本地 MCP(此儲存庫) | |
|---|---|---|
| 託管方式 | 由 MotherDuck 託管 | 本地執行 / 自行託管 |
| 設定 | 無需設定 | 需要本地安裝 |
| 存取權限 | 支援讀寫 | 支援讀寫 |
| 本地檔案系統 | - | 可跨本地與遠端資料庫查詢,從本地檔案系統匯入 / 匯出資料 |
📝 從 v0.x 遷移?
快速入門
必要條件:透過 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 來套用安全設定。可用選項請參閱保護 DuckDB 指南。
命令列參數
| 參數 | 預設值 | 說明 |
|---|---|---|
--db-path | :memory: | 資料庫路徑:本地檔案(絕對路徑)、md:(MotherDuck)或 s3:// 網址 |
--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