MotherDuck
resmiKueri dan analisis data dengan MotherDuck dan DuckDB lokal
Apa yang bisa Anda lakukan dengan Mother Duck MCP?
- Menjalankan kueri SQL terhadap DuckDB atau MotherDuck — minta asisten Anda untuk mengeksekusi SQL analitis melalui
execute_query, yang mendukung operasi baca dan opsional tulis. - Menjelajahi skema database — daftarkan database yang tersedia dengan
list_databases, lalu telusuri tabel dan kolom menggunakanlist_tablesdanlist_columns. - Berpindah antar koneksi database — gunakan
switch_database_connectionuntuk berpindah antara file DuckDB lokal, instance dalam memori, database yang dihosting di S3, atau MotherDuck saat runtime. - Terhubung ke MotherDuck untuk analitik cloud — arahkan server ke
md:dengan token untuk membuat kueri dan mengelola database MotherDuck secara langsung. - Mengontrol ukuran output kueri — konfigurasikan
--max-rowsdan--max-charsuntuk membatasi set hasil yang dikembalikan ke asisten.
Dokumentasi
Server MCP Lokal DuckDB / MotherDuck
Analitik SQL dan rekayasa data untuk Asisten AI dan IDE.
Hubungkan asisten AI ke data Anda menggunakan mesin SQL analitik canggih DuckDB. Mendukung koneksi ke file DuckDB lokal, basis data dalam memori, basis data yang dihosting di S3, dan MotherDuck. Memungkinkan eksekusi kueri baca dan tulis SQL, menjelajahi katalog basis data, dan beralih di antara koneksi basis data yang berbeda secara dinamis.
Mencari server MCP jarak jauh yang dikelola sepenuhnya untuk MotherDuck? → Buka dokumen MCP Jarak Jauh MotherDuck
MCP Jarak Jauh vs Lokal
| MCP Jarak Jauh | MCP Lokal (repositori ini) | |
|---|---|---|
| Hosting | Dihosting oleh MotherDuck | Berjalan secara lokal/dihosting sendiri |
| Penyiapan | Tanpa penyiapan | Memerlukan instalasi lokal |
| Akses | Mendukung baca-tulis | Mendukung baca-tulis |
| Sistem file lokal | - | Kueri di seluruh basis data lokal dan jarak jauh, menyerap data dari / mengekspor data ke sistem file lokal |
📝 Bermigrasi dari v0.x?
- Hanya-baca secara default: Server sekarang berjalan dalam mode hanya-baca secara default. Tambahkan
--read-writeuntuk mengaktifkan akses tulis. Lihat Mengamankan untuk Produksi.- Basis data default berubah: Default
--db-pathberubah darimd:menjadi:memory:. Tambahkan--db-path md:secara eksplisit untuk MotherDuck.- Mode hanya-baca MotherDuck memerlukan token penskalaan baca: Koneksi MotherDuck dalam mode hanya-baca memerlukan token penskalaan baca. Token biasa memerlukan
--read-write.
Mulai Cepat
Prasyarat: Instal uv melalui pip install uv atau brew install uv
Menghubungkan ke DuckDB Dalam Memori (Mode Dev)
{
"mcpServers": {
"DuckDB (in-memory, r/w)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", ":memory:", "--read-write", "--allow-switch-databases"]
}
}
}
Fleksibilitas penuh tanpa pagar pembatas — akses baca-tulis dan kemampuan untuk beralih ke basis data apa pun (file lokal, S3, atau MotherDuck) saat runtime.
Menghubungkan ke File DuckDB Lokal dalam Mode Hanya-Baca
{
"mcpServers": {
"DuckDB (read-only)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", "/absolute/path/to/your.duckdb"]
}
}
}
Terhubung ke file DuckDB tertentu dalam mode hanya-baca. Tidak akan menahan kunci file, sehingga nyaman digunakan bersama koneksi tulis ke file DuckDB yang sama. Anda juga dapat terhubung ke file DuckDB jarak jauh di S3 menggunakan s3://bucket/path.duckdb — lihat Variabel Lingkungan untuk autentikasi S3. Jika Anda mempertimbangkan akses pihak ketiga ke MCP, lihat Mengamankan untuk Produksi.
Menghubungkan ke MotherDuck dalam Mode Baca-Tulis
{
"mcpServers": {
"MotherDuck (local, r/w)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
"env": {
"motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
}
}
}
}
Lihat Parameter Baris Perintah untuk opsi lainnya, Mengamankan untuk Produksi untuk panduan penerapan, dan Pemecahan Masalah jika Anda mengalami masalah.
Penyiapan Klien
| Klien | Lokasi Konfigurasi | Instal Sekali Klik |
|---|---|---|
| Claude Desktop | Pengaturan → Pengembang → Edit Konfigurasi | .mcpb (Paket MCP) |
| Claude Code | Gunakan perintah CLI di bawah | - |
| Codex CLI | Gunakan perintah CLI di bawah atau ~/.codex/config.toml | - |
| Gemini CLI | Gunakan perintah CLI di bawah atau ~/.gemini/settings.json | - |
| Cursor | Pengaturan → MCP → Tambahkan server MCP global baru | |
| VS Code | Ctrl+Shift+P → "Preferensi: Buka Pengaturan Pengguna (JSON)" | |
| Kiro | ~/.kiro/settings/mcp.json (global) atau .kiro/settings/mcp.json (proyek) |
Setiap klien yang kompatibel dengan MCP dapat menggunakan server ini. Tambahkan konfigurasi JSON dari Mulai Cepat ke file konfigurasi MCP klien Anda. Lihat dokumentasi klien Anda untuk lokasi file konfigurasi.
Perintah CLI Claude Code
DuckDB Dalam Memori (Mode Dev):
claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases
DuckDB Lokal (Hanya-Baca):
claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb
MotherDuck (Baca-Tulis):
claude mcp add --scope user motherduck --transport stdio --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-write
Perintah CLI Codex
DuckDB Dalam Memori (Mode Dev):
codex mcp add duckdb -- uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases
DuckDB Lokal (Hanya-Baca):
codex mcp add duckdb -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb
MotherDuck (Baca-Tulis):
codex mcp add motherduck --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-write
Perintah CLI Gemini
DuckDB Dalam Memori (Mode Dev):
gemini mcp add -s user duckdb uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases
DuckDB Lokal (Hanya-Baca):
gemini mcp add -s user duckdb uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb
MotherDuck (Baca-Tulis):
gemini mcp add -s user -e motherduck_token=YOUR_TOKEN motherduck uvx mcp-server-motherduck --db-path md: --read-write
Konfigurasi JSON manual Kiro
Tambahkan yang berikut ke file konfigurasi MCP Kiro Anda (~/.kiro/settings/mcp.json untuk global, atau .kiro/settings/mcp.json untuk lingkup proyek). Lihat dokumentasi MCP Kiro untuk detail lebih lanjut.
DuckDB Dalam Memori (Mode Dev):
{
"mcpServers": {
"DuckDB (in-memory, r/w)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", ":memory:", "--read-write", "--allow-switch-databases"]
}
}
}
MotherDuck (Baca-Tulis):
{
"mcpServers": {
"MotherDuck (local, r/w)": {
"command": "uvx",
"args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
"env": {
"motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
}
}
}
}
Alat
| Alat | Deskripsi | Input yang Diperlukan | Input Opsional |
|---|---|---|---|
execute_query | Jalankan kueri SQL (dialek DuckDB) | sql | - |
list_databases | Daftar semua basis data (berguna untuk MotherDuck atau beberapa DB terlampir) | - | - |
list_tables | Daftar tabel dan tampilan | - | database, schema |
list_columns | Daftar kolom dari tabel/tampilan | table | database, schema |
switch_database_connection* | Beralih ke basis data yang berbeda | path | create_if_not_exists |
*Memerlukan flag --allow-switch-databases
Semua alat mengembalikan JSON. Hasil dibatasi hingga 1024 baris / 50.000 karakter secara default (dapat dikonfigurasi melalui --max-rows, --max-chars).
Mengamankan untuk Produksi
Saat memberikan akses pihak ketiga ke server MCP yang dihosting sendiri, mode hanya-baca saja tidak cukup — mode ini masih memungkinkan akses ke sistem file lokal, mengubah pengaturan DuckDB, dan operasi sensitif potensial lainnya.
Untuk penerapan produksi dengan akses pihak ketiga, kami merekomendasikan MCP Jarak Jauh MotherDuck — tanpa penyiapan, mampu baca-tulis, dan dihosting oleh MotherDuck.
Menghosting sendiri MCP MotherDuck: Fork repositori ini dan sesuaikan sesuai kebutuhan. Gunakan akun layanan dengan token penskalaan baca dan aktifkan mode SaaS untuk membatasi akses file lokal.
Menghosting sendiri MCP DuckDB: Gunakan --init-sql untuk menerapkan pengaturan keamanan. Lihat panduan Mengamankan DuckDB untuk opsi yang tersedia.
Docker
Bangun dan jalankan server dengan HTTP Streamable pada port 8000 (default ke DuckDB dalam memori):
docker build -t mcp-server-motherduck .
docker run --rm -p 8000:8000 mcp-server-motherduck
Hubungkan ke MotherDuck dengan memberikan token dan mengganti perintah:
docker run --rm -p 8000:8000 \
-e motherduck_token="$MOTHERDUCK_TOKEN" \
mcp-server-motherduck --transport http --db-path md:
Titik akhir MCP tersedia di http://localhost:8000/mcp. Flag CLI dan variabel lingkungan dari bawah masih berlaku.
Parameter Baris Perintah
| Parameter | Default | Deskripsi |
|---|---|---|
--db-path | :memory: | Jalur basis data: file lokal (absolut), md: (MotherDuck), atau URL s3:// |
--motherduck-token | variabel lingkungan motherduck_token | Token akses MotherDuck |
--read-write | False | Aktifkan akses tulis |
--motherduck-saas-mode | False | Mode SaaS MotherDuck (membatasi akses lokal) |
--allow-switch-databases | False | Aktifkan alat switch_database_connection |
--max-rows | 1024 | Baris maksimum yang dikembalikan |
--max-chars | 50000 | Karakter maksimum yang dikembalikan |
--query-timeout | -1 | Batas waktu kueri dalam detik (-1 = dinonaktifkan) |
--init-sql | None | SQL yang akan dijalankan saat startup |
--motherduck-connection-parameters | session_hint=mcp&dbinstance_inactivity_ttl=0s | Parameter string koneksi MotherDuck tambahan (pasangan key=value dipisahkan oleh &) |
--ephemeral-connections | True | Gunakan koneksi sementara untuk file lokal hanya-baca |
--transport | stdio | Jenis transport: stdio atau http |
--stateless-http | False | Hanya untuk kompatibilitas protokol (mis. dengan AWS Bedrock AgentCore Runtime). Server masih mempertahankan status global melalui DatabaseClient bersama. |
--port | 8000 | Port untuk transport HTTP |
--host | 127.0.0.1 | Host untuk transport HTTP |
Variabel Lingkungan
| Variabel | Deskripsi |
|---|---|
motherduck_token atau MOTHERDUCK_TOKEN | Token akses MotherDuck (alternatif untuk --motherduck-token) |
HOME | Digunakan oleh DuckDB untuk ekstensi dan konfigurasi. Timpa dengan --home-dir jika tidak diatur. |
AWS_ACCESS_KEY_ID | Kunci akses AWS untuk koneksi basis data S3 |
AWS_SECRET_ACCESS_KEY | Kunci rahasia AWS untuk koneksi basis data S3 |
AWS_SESSION_TOKEN | Token sesi AWS untuk kredensial sementara (peran IAM, SSO, profil instans EC2) |
AWS_DEFAULT_REGION | Wilayah AWS untuk koneksi S3 |
AWS_ENDPOINT | Titik akhir AWS untuk koneksi S3 |
Pemecahan Masalah
spawn uvx ENOENT: Tentukan jalur lengkap keuvx(jalankanwhich uvxuntuk menemukannya)- File terkunci: Pastikan
--ephemeral-connectionsdiaktifkan (default: true) dan Anda tidak terhubung dalam mode baca-tulis
Sumber Daya
- Dokumentasi MCP MotherDuck
- Close the Loop: Pipeline Data Lebih Cepat dengan MCP, DuckDB & AI (Blog)
- Pipeline Data Lebih Cepat dengan MCP dan DuckDB (YouTube)
Pengembangan
Untuk menjalankan dari sumber:
{
"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>"
}
}
}
}
Proses Rilis
- Jalankan GitHub Action
Release New Version - Masukkan versi dalam format
MAJOR.MINOR.PATCH - Alur kerja meningkatkan versi, menerbitkan ke registri PyPI/MCP, dan membuat rilis GitHub dengan paket MCPB
Lisensi
Lisensi MIT - lihat file LICENSE.
mcp-name: io.github.motherduckdb/mcp-server-motherduck