MotherDuck
ทางการสอบถามและวิเคราะห์ข้อมูลด้วย MotherDuck และ DuckDB ในเครื่อง
คุณทำอะไรได้บ้างด้วย MotherDuck MCP?
- รันคิวรี SQL กับ DuckDB หรือ MotherDuck — ให้ผู้ช่วยของคุณดำเนินการคิวรี SQL เชิงวิเคราะห์ผ่าน
execute_queryซึ่งรองรับการอ่านและเขียนข้อมูลแบบเลือกได้ - สำรวจโครงสร้างฐานข้อมูล — แสดงรายการฐานข้อมูลที่มีด้วย
list_databasesจากนั้นเจาะลึกไปยังตารางและคอลัมน์โดยใช้list_tablesและlist_columns - สลับระหว่างการเชื่อมต่อฐานข้อมูล — ใช้
switch_database_connectionเพื่อย้ายระหว่างไฟล์ DuckDB ในเครื่อง อินสแตนซ์ในหน่วยความจำ ฐานข้อมูลที่โฮสต์บน S3 หรือ MotherDuck ในขณะรันไทม์ - เชื่อมต่อกับ MotherDuck สำหรับการวิเคราะห์บนคลาวด์ — ชี้เซิร์ฟเวอร์ไปที่
md:พร้อมโทเค็นเพื่อคิวรีและจัดการฐานข้อมูล MotherDuck โดยตรง - ควบคุมขนาดผลลัพธ์ของคิวรี — กำหนดค่า
--max-rowsและ--max-charsเพื่อจำกัดชุดผลลัพธ์ที่ส่งกลับไปยังผู้ช่วย
เอกสาร
DuckDB / MotherDuck Local MCP Server
การวิเคราะห์ SQL และวิศวกรรมข้อมูลสำหรับ AI Assistants และ IDE
เชื่อมต่อผู้ช่วย AI เข้ากับข้อมูลของคุณโดยใช้เอ็นจิ้น SQL วิเคราะห์อันทรงพลังของ DuckDB รองรับการเชื่อมต่อกับไฟล์ DuckDB ในเครื่อง, ฐานข้อมูลในหน่วยความจำ, ฐานข้อมูลที่โฮสต์บน S3 และ MotherDuck อนุญาตให้ดำเนินการคิวรี SQL แบบอ่านและเขียน, เรียกดูแค็ตตาล็อกฐานข้อมูล และสลับระหว่างการเชื่อมต่อฐานข้อมูลต่างๆ ได้ทันที
กำลังมองหาเซิร์ฟเวอร์ MCP ระยะไกลที่มีการจัดการเต็มรูปแบบสำหรับ MotherDuck อยู่หรือไม่? → ไปที่เอกสาร MotherDuck Remote MCP
Remote vs Local MCP
| Remote MCP | Local MCP (repo นี้) | |
|---|---|---|
| การโฮสต์ | โฮสต์โดย MotherDuck | ทำงานในเครื่อง/โฮสต์เอง |
| การตั้งค่า | ไม่ต้องตั้งค่า | ต้องติดตั้งในเครื่อง |
| การเข้าถึง | รองรับการอ่าน-เขียน | รองรับการอ่าน-เขียน |
| ระบบไฟล์ในเครื่อง | - | คิวรีข้ามฐานข้อมูลในเครื่องและระยะไกล, นำเข้าข้อมูลจาก / ส่งออกข้อมูลไปยังระบบไฟล์ในเครื่อง |
📝 กำลังย้ายจาก v0.x?
- อ่านอย่างเดียวโดยค่าเริ่มต้น: ขณะนี้เซิร์ฟเวอร์ทำงานในโหมดอ่านอย่างเดียวโดยค่าเริ่มต้น เพิ่ม
--read-writeเพื่อเปิดใช้งานการเข้าถึงแบบเขียน ดู การรักษาความปลอดภัยสำหรับการใช้งานจริง- เปลี่ยนฐานข้อมูลเริ่มต้น: ค่าเริ่มต้น
--db-pathเปลี่ยนจากmd:เป็น:memory:เพิ่ม--db-path md:อย่างชัดเจนสำหรับ MotherDuck- MotherDuck แบบอ่านอย่างเดียวต้องใช้ read-scaling token: การเชื่อมต่อ MotherDuck ในโหมดอ่านอย่างเดียวต้องใช้ read-scaling token โทเค็นปกติต้องใช้
--read-write
เริ่มต้นอย่างรวดเร็ว
ข้อกำหนดเบื้องต้น: ติดตั้ง uv ผ่าน pip install uv หรือ brew install 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 เดียวกัน คุณยังสามารถเชื่อมต่อกับไฟล์ DuckDB ระยะไกลบน S3 โดยใช้ s3://bucket/path.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 | Settings → Developer → Edit Config | .mcpb (MCP Bundle) |
| Claude Code | ใช้คำสั่ง CLI ด้านล่าง | - |
| Codex CLI | ใช้คำสั่ง CLI ด้านล่างหรือ ~/.codex/config.toml | - |
| Gemini CLI | ใช้คำสั่ง CLI ด้านล่างหรือ ~/.gemini/settings.json | - |
| Cursor | Settings → MCP → Add new global MCP server | |
| VS Code | Ctrl+Shift+P → "Preferences: Open User Settings (JSON)" | |
| Kiro | ~/.kiro/settings/mcp.json (global) หรือ .kiro/settings/mcp.json (project) |
ไคลเอนต์ที่เข้ากันได้กับ 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
การกำหนดค่า JSON ด้วยตนเองของ Kiro
เพิ่มสิ่งต่อไปนี้ลงในไฟล์การกำหนดค่า MCP ของ Kiro (~/.kiro/settings/mcp.json สำหรับ global หรือ .kiro/settings/mcp.json สำหรับ project-scoped) ดู เอกสารประกอบ 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 หรือ DB ที่แนบหลายตัว) | - | - |
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 Remote MCP — ไม่ต้องตั้งค่า, รองรับการอ่าน-เขียน และโฮสต์โดย MotherDuck
การโฮสต์ MotherDuck MCP ด้วยตนเอง: Fork repo นี้และปรับแต่งตามต้องการ ใช้ บัญชีบริการ พร้อม read-scaling tokens และเปิดใช้งาน โหมด SaaS เพื่อจำกัดการเข้าถึงไฟล์ในเครื่อง
การโฮสต์ DuckDB MCP ด้วยตนเอง: ใช้ --init-sql เพื่อใช้การตั้งค่าความปลอดภัย ดู คู่มือการรักษาความปลอดภัย DuckDB สำหรับตัวเลือกที่มี
Docker
สร้างและรันเซิร์ฟเวอร์ด้วย Streamable HTTP บนพอร์ต 8000 (ค่าเริ่มต้นเป็น 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: | พาธฐานข้อมูล: ไฟล์ในเครื่อง (absolute), md: (MotherDuck) หรือ URL 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 | คีย์การเข้าถึง AWS สำหรับการเชื่อมต่อฐานข้อมูล S3 |
AWS_SECRET_ACCESS_KEY | คีย์ลับ AWS สำหรับการเชื่อมต่อฐานข้อมูล S3 |
AWS_SESSION_TOKEN | โทเค็นเซสชัน AWS สำหรับข้อมูลประจำตัวชั่วคราว (บทบาท IAM, SSO, โปรไฟล์อินสแตนซ์ EC2) |
AWS_DEFAULT_REGION | ภูมิภาค AWS สำหรับการเชื่อมต่อ S3 |
AWS_ENDPOINT | ปลายทาง AWS สำหรับการเชื่อมต่อ S3 |
การแก้ไขปัญหา
spawn uvx ENOENT: ระบุพาธแบบเต็มไปยังuvx(รันwhich uvxเพื่อค้นหา)- ไฟล์ถูกล็อก: ตรวจสอบให้แน่ใจว่า
--ephemeral-connectionsเปิดอยู่ (ค่าเริ่มต้น: true) และคุณไม่ได้เชื่อมต่อในโหมดอ่าน-เขียน
แหล่งข้อมูล
- เอกสารประกอบ MotherDuck MCP
- Close the Loop: Faster Data Pipelines with MCP, DuckDB & AI (บล็อก)
- Faster Data Pipelines with MCP and DuckDB (YouTube)
การพัฒนา
เพื่อรันจากซอร์ส:
{
"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>"
}
}
}
}
กระบวนการเผยแพร่
- รัน GitHub Action
Release New Version - ป้อนเวอร์ชันในรูปแบบ
MAJOR.MINOR.PATCH - เวิร์กโฟลว์จะเพิ่มเวอร์ชัน, เผยแพร่ไปยัง PyPI/MCP registry และสร้าง GitHub release พร้อมแพ็คเกจ MCPB
ใบอนุญาต
ใบอนุญาต MIT - ดูไฟล์ LICENSE
mcp-name: io.github.motherduckdb/mcp-server-motherduck