MotherDuck MCP Server
ทางการสอบถามและวิเคราะห์ข้อมูลด้วย MotherDuck และ DuckDB ในเครื่อง
เอกสาร
DuckDB / MotherDuck Local MCP Server
การวิเคราะห์ SQL และวิศวกรรมข้อมูลสำหรับผู้ช่วย AI และ 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: การเชื่อมต่อ MotherDuck ในโหมดอ่านอย่างเดียวต้องใช้ โทเค็น read-scaling โทเค็นปกติต้องใช้
--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 และเปิดใช้งาน โหมด SaaS เพื่อจำกัดการเข้าถึงไฟล์ในเครื่อง
การโฮสต์ DuckDB MCP ด้วยตนเอง: ใช้ --init-sql เพื่อใช้การตั้งค่าความปลอดภัย ดู คู่มือการรักษาความปลอดภัย DuckDB สำหรับตัวเลือกที่มี
พารามิเตอร์บรรทัดคำสั่ง
| พารามิเตอร์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
--db-path | :memory: | พาธฐานข้อมูล: ไฟล์ในเครื่อง (absolute), 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) เซิร์ฟเวอร์ยังคงรักษาสถานะส่วนกลางผ่าน 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