MotherDuck
ทางการสอบถามและวิเคราะห์ข้อมูลด้วย MotherDuck และ DuckDB ในเครื่อง
คุณทำอะไรได้บ้างด้วย MotherDuck MCP?
-
รัน SQL analytics — ให้ผู้ช่วยของคุณสอบถามข้อมูลจากไฟล์ DuckDB ในเครื่อง ฐานข้อมูลในหน่วยความจำ หรือ MotherDuck โดยใช้
execute_queryพร้อมรองรับไวยากรณ์ SQL แบบเต็มรูปแบบของ DuckDB -
สำรวจโครงสร้างฐานข้อมูล — ให้ผู้ช่วยของคุณแสดงรายการฐานข้อมูล ตาราง และคอลัมน์ โดยใช้
list_databases,list_tablesและlist_columnsเพื่อทำความเข้าใจโครงสร้างข้อมูลของคุณ -
สลับการเชื่อมต่อฐานข้อมูล — สั่งให้ผู้ช่วยของคุณเปลี่ยนระหว่างไฟล์ในเครื่อง ฐานข้อมูลที่โฮสต์บน S3 หรือ MotherDuck ได้ทันทีผ่าน
switch_database_connection(ต้องใช้แฟล็ก--allow-switch-databases) -
เขียนและแก้ไขข้อมูล — เปิดใช้งานโหมดอ่าน-เขียนเพื่อให้ผู้ช่วยของคุณแทรก อัปเดต หรือลบเรกคอร์ดในฐานข้อมูลที่เชื่อมต่อได้โดยตรง
-
นำเข้าและส่งออกข้อมูล — ใช้เซิร์ฟเวอร์เพื่อสอบถามข้อมูลข้ามฐานข้อมูลในเครื่องและระยะไกล โดยนำเข้าข้อมูลจากหรือส่งออกไปยังระบบไฟล์ในเครื่องของคุณ
เซิร์ฟเวอร์ MCP แบบโฮสต์
npx add-mcp 'https://api.motherduck.com/mcp'ติดตั้งลง Claude Code, Codex, Cursor และอื่นๆ
เอกสาร
DuckDB / MotherDuck Local MCP Server
SQL analytics and data engineering for AI Assistants and IDEs.
เชื่อมต่อผู้ช่วย AI เข้ากับข้อมูลของคุณด้วยเอนจิน SQL เชิงวิเคราะห์อันทรงพลังของ DuckDB รองรับการเชื่อมต่อกับไฟล์ DuckDB ในเครื่อง ฐานข้อมูลในหน่วยความจำ ฐานข้อมูลที่โฮสต์บน S3 และ MotherDuck รองรับการรันคิวรี SQL แบบอ่านและเขียน การเรียกดูแคตตาล็อกฐานข้อมูล และการสลับระหว่างการเชื่อมต่อฐานข้อมูลต่างๆ ได้ทันที
กำลังมองหา MCP server ระยะไกลที่จัดการเต็มรูปแบบสำหรับ MotherDuck อยู่หรือไม่? → ไปที่เอกสาร MotherDuck Remote MCP
Remote กับ Local MCP
| Remote MCP | Local MCP (repo นี้) | |
|---|---|---|
| การโฮสต์ | โฮสต์โดย MotherDuck | รันในเครื่อง/โฮสต์เอง |
| การตั้งค่า | ไม่ต้องตั้งค่า | ต้องติดตั้งในเครื่อง |
| การเข้าถึง | รองรับการอ่าน-เขียน | รองรับการอ่าน-เขียน |
| ระบบไฟล์ในเครื่อง | - | คิวรีข้ามฐานข้อมูลในเครื่องและระยะไกล นำเข้าข้อมูลจาก / ส่งออกข้อมูลไปยังระบบไฟล์ในเครื่อง |
เริ่มต้นอย่างรวดเร็ว
ข้อกำหนดเบื้องต้น: ติดตั้ง uv ผ่าน pip install uv หรือ brew install uv
การเชื่อมต่อกับ DuckDB ในหน่วยความจำ (โหมด Dev)
{
"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 | การตั้งค่า → นักพัฒนา → แก้ไขการกำหนดค่า | .mcpb (MCP Bundle) |
| Claude Code | ใช้คำสั่ง CLI ด้านล่าง | - |
| Codex CLI | ใช้คำสั่ง CLI ด้านล่างหรือ ~/.codex/config.toml | - |
| Gemini CLI | ใช้คำสั่ง CLI ด้านล่างหรือ ~/.gemini/settings.json | - |
| Cursor | การตั้งค่า → MCP → เพิ่ม MCP server ระดับโลกใหม่ | |
| VS Code | Ctrl+Shift+P → "Preferences: Open User Settings (JSON)" | |
| Kiro | ~/.kiro/settings/mcp.json (ระดับโลก) หรือ .kiro/settings/mcp.json (โปรเจกต์) |
ไคลเอนต์ที่เข้ากันได้กับ MCP ใดๆ ก็สามารถใช้ server นี้ได้ เพิ่มการกำหนดค่า JSON จาก เริ่มต้นอย่างรวดเร็ว ลงในไฟล์กำหนดค่า MCP ของไคลเอนต์ของคุณ ปรึกษาเอกสารของไคลเอนต์ของคุณสำหรับตำแหน่งไฟล์กำหนดค่า
คำสั่ง CLI ของ Claude Code
DuckDB ในหน่วยความจำ (โหมด Dev):
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
คำสั่ง CLI ของ Codex
DuckDB ในหน่วยความจำ (โหมด Dev):
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
คำสั่ง CLI ของ Gemini
DuckDB ในหน่วยความจำ (โหมด Dev):
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 สำหรับระดับโลก หรือ .kiro/settings/mcp.json สำหรับระดับโปรเจกต์) ดู เอกสาร MCP ของ Kiro สำหรับรายละเอียดเพิ่มเติม
DuckDB ในหน่วยความจำ (โหมด Dev):
{
"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 server ที่โฮสต์เอง โหมดอ่านอย่างเดียวเพียงอย่างเดียวไม่เพียงพอ — ยังคงอนุญาตให้เข้าถึงระบบไฟล์ในเครื่อง เปลี่ยนการตั้งค่า DuckDB และการดำเนินการที่อาจละเอียดอ่อนอื่นๆ
สำหรับการปรับใช้ในสภาพแวดล้อมการผลิตที่มีการเข้าถึงของบุคคลที่สาม เราขอแนะนำ MotherDuck Remote MCP — ไม่ต้องตั้งค่า รองรับการอ่าน-เขียน และโฮสต์โดย MotherDuck
การโฮสต์ MotherDuck MCP ด้วยตนเอง: Fork repo นี้และปรับแต่งตามความต้องการ ใช้ บัญชีบริการ กับ read-scaling tokens และเปิดใช้งาน โหมด SaaS เพื่อจำกัดการเข้าถึงไฟล์ในเครื่อง
การโฮสต์ DuckDB MCP ด้วยตนเอง: ใช้ --init-sql เพื่อใช้การตั้งค่าความปลอดภัย ดู คู่มือการรักษาความปลอดภัย DuckDB สำหรับตัวเลือกที่มี
Docker
สร้างและรัน server ด้วย Streamable HTTP บนพอร์ต 8000 (ค่าเริ่มต้นคือ DuckDB ในหน่วยความจำ):
docker build -t mcp-server-motherduck .
docker run --rm -p 8000:8000 mcp-server-motherduck
เชื่อมต่อกับ MotherDuck โดยส่ง token และแทนที่คำสั่ง:
docker run --rm -p 8000:8000 \
-e motherduck_token="$MOTHERDUCK_TOKEN" \
mcp-server-motherduck --transport http --db-path md:
MCP endpoint พร้อมใช้งานที่ http://localhost:8000/mcp แฟล็ก CLI และตัวแปรสภาพแวดล้อมด้านล่างยังคงใช้ได้
พารามิเตอร์บรรทัดคำสั่ง
| พารามิเตอร์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
--db-path | :memory: | เส้นทางฐานข้อมูล: ไฟล์ในเครื่อง (เส้นทางสัมบูรณ์), md: (MotherDuck) หรือ URL s3:// |
--motherduck-token | ตัวแปรสภาพแวดล้อม motherduck_token | โทเค็นการเข้าถึง MotherDuck |
--read-write | False | เปิดใช้งานการเข้าถึงแบบเขียน |
--motherduck-saas-mode | False | โหมด SaaS ของ MotherDuck (จำกัดการเข้าถึงในเครื่อง) |
--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) Server ยังคงรักษาสถานะระดับโลกผ่าน 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) และคุณไม่ได้เชื่อมต่อในโหมดอ่าน-เขียน
ทรัพยากร
- เอกสาร MCP ของ MotherDuck
- 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