MotherDuck MCP Server

ทางการ

สอบถามและวิเคราะห์ข้อมูลด้วย MotherDuck และ DuckDB ในเครื่อง

เอกสาร

MotherDuck / DuckDB Local MCP Server

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 MCPLocal 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 DesktopSettings → Developer → Edit Config.mcpb (MCP Bundle)
Claude Codeใช้คำสั่ง CLI ด้านล่าง-
Codex CLIใช้คำสั่ง CLI ด้านล่างหรือ ~/.codex/config.toml-
Gemini CLIใช้คำสั่ง CLI ด้านล่างหรือ ~/.gemini/settings.json-
CursorSettings → MCP → Add new global MCP serverInstall in Cursor
VS CodeCtrl+Shift+P → "Preferences: Open User Settings (JSON)"Install with UV in VS Code
Kiro~/.kiro/settings/mcp.json (global) หรือ .kiro/settings/mcp.json (project)Add to Kiro

ไคลเอนต์ที่เข้ากันได้กับ 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แสดงรายการคอลัมน์ของตาราง/วิวtabledatabase, schema
switch_database_connection*สลับไปยังฐานข้อมูลอื่นpathcreate_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-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) เซิร์ฟเวอร์ยังคงรักษาสถานะส่วนกลางผ่าน 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