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 และอื่นๆ

เอกสาร

MotherDuck / DuckDB Local MCP Server

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 MCPLocal 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 ระดับโลกใหม่Install in Cursor
VS CodeCtrl+Shift+P → "Preferences: Open User Settings (JSON)"Install with UV in VS Code
Kiro~/.kiro/settings/mcp.json (ระดับโลก) หรือ .kiro/settings/mcp.json (โปรเจกต์)Add to Kiro

ไคลเอนต์ที่เข้ากันได้กับ 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แสดงรายการคอลัมน์ของตาราง/วิวtabledatabase, schema
switch_database_connection*สลับไปยังฐานข้อมูลอื่นpathcreate_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-writeFalseเปิดใช้งานการเข้าถึงแบบเขียน
--motherduck-saas-modeFalseโหมด SaaS ของ MotherDuck (จำกัดการเข้าถึงในเครื่อง)
--allow-switch-databasesFalseเปิดใช้งานเครื่องมือ switch_database_connection
--max-rows1024จำนวนแถวสูงสุดที่ส่งคืน
--max-chars50000จำนวนอักขระสูงสุดที่ส่งคืน
--query-timeout-1หมดเวลาคิวรีในหน่วยวินาที (-1 = ปิดใช้งาน)
--init-sqlNoneSQL ที่จะรันเมื่อเริ่มต้น
--motherduck-connection-parameterssession_hint=mcp&
dbinstance_inactivity_ttl=0s
พารามิเตอร์สตริงการเชื่อมต่อ MotherDuck เพิ่มเติม (คู่ key=value คั่นด้วย &)
--ephemeral-connectionsTrueใช้การเชื่อมต่อชั่วคราวสำหรับไฟล์ในเครื่องแบบอ่านอย่างเดียว
--transportstdioประเภทการขนส่ง: stdio หรือ http
--stateless-httpFalseสำหรับความเข้ากันได้ของโปรโตคอลเท่านั้น (เช่น กับ AWS Bedrock AgentCore Runtime) Server ยังคงรักษาสถานะระดับโลกผ่าน DatabaseClient ที่ใช้ร่วมกัน
--port8000พอร์ตสำหรับการขนส่ง HTTP
--host127.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) และคุณไม่ได้เชื่อมต่อในโหมดอ่าน-เขียน

ทรัพยากร

การพัฒนา

เพื่อรันจากซอร์สโค้ด:

{
  "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>"
      }
    }
  }
}

กระบวนการเผยแพร่

  1. รัน GitHub Action Release New Version
  2. ป้อนเวอร์ชันในรูปแบบ MAJOR.MINOR.PATCH
  3. เวิร์กโฟลว์จะเพิ่มเวอร์ชัน เผยแพร่ไปยัง PyPI/MCP registry และสร้าง GitHub release พร้อมแพ็คเกจ MCPB

ลิขสิทธิ์

ใบอนุญาต MIT - ดูไฟล์ LICENSE

mcp-name: io.github.motherduckdb/mcp-server-motherduck