MotherDuck
resmiKueri dan analisis data dengan MotherDuck dan DuckDB lokal
Apa yang bisa Anda lakukan dengan MotherDuck MCP?
-
Menjalankan analitik SQL — Minta asisten Anda untuk menanyai file DuckDB lokal, basis data dalam memori, atau MotherDuck menggunakan
execute_querydengan dukungan penuh dialek SQL DuckDB. -
Menjelajahi struktur basis data — Minta asisten Anda untuk membuat daftar basis data, tabel, dan kolom menggunakan
list_databases,list_tables, danlist_columnsuntuk memahami skema data Anda. -
Mengganti koneksi basis data — Instruksikan asisten Anda untuk berpindah antara file lokal, basis data yang di-hosting di S3, atau MotherDuck secara langsung melalui
switch_database_connection(memerlukan flag--allow-switch-databases). -
Menulis dan memodifikasi data — Aktifkan mode baca-tulis untuk memungkinkan asisten Anda menyisipkan, memperbarui, atau menghapus catatan secara langsung di basis data yang terhubung.
-
Menyerap dan mengekspor data — Gunakan server untuk menanyai basis data lokal dan jarak jauh, menyerap data dari atau mengekspor ke sistem file lokal Anda.
Server MCP Terhosting
npx add-mcp 'https://api.motherduck.com/mcp'Terpasang ke Claude Code, Codex, Cursor, dan lainnya
Dokumentasi
DuckDB / MotherDuck Local MCP Server
Analitik SQL dan rekayasa data untuk Asisten AI dan IDE.
Hubungkan asisten AI ke data Anda menggunakan mesin SQL analitik DuckDB yang kuat. Mendukung koneksi ke file DuckDB lokal, database dalam memori, database yang dihosting di S3, dan MotherDuck. Memungkinkan eksekusi query SQL baca dan tulis, menjelajahi katalog database, dan berpindah antar koneksi database yang berbeda secara langsung.
Mencari server MCP jarak jauh yang dikelola penuh untuk MotherDuck? → Buka dokumentasi MotherDuck Remote MCP
Remote vs Local MCP
| Remote MCP | Local MCP (repo ini) | |
|---|---|---|
| Hosting | Dihosting oleh MotherDuck | Berjalan lokal/di-host sendiri |
| Pengaturan | Tanpa pengaturan | Memerlukan instalasi lokal |
| Akses | Mendukung baca-tulis | Mendukung baca-tulis |
| Sistem file lokal | - | Query di seluruh database lokal dan jarak jauh, menyerap data dari / mengekspor data ke sistem file lokal |
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 pengaman — akses baca-tulis dan kemampuan untuk berpindah ke database mana 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"]
}
}
}
Menghubungkan ke file DuckDB tertentu dalam mode hanya-baca. Tidak akan memegang 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.
Pengaturan Klien
| Klien | Lokasi Konfigurasi | Instalasi Satu-Klik |
|---|---|---|
| Claude Desktop | Pengaturan → Pengembang → Edit Konfigurasi | .mcpb (MCP Bundle) |
| 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 → "Preferences: Open User Settings (JSON)" | |
| Kiro | ~/.kiro/settings/mcp.json (global) atau .kiro/settings/mcp.json (proyek) |
Klien apa pun yang kompatibel dengan MCP dapat menggunakan server ini. Tambahkan konfigurasi JSON dari Mulai Cepat ke file konfigurasi MCP klien Anda. Konsultasikan 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 berikut ini 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 Wajib | Input Opsional |
|---|---|---|---|
execute_query | Jalankan query SQL (dialek DuckDB) | sql | - |
list_databases | Daftarkan semua database (berguna untuk MotherDuck atau beberapa DB yang dilampirkan) | - | - |
list_tables | Daftarkan tabel dan tampilan | - | database, schema |
list_columns | Daftarkan kolom dari tabel/tampilan | table | database, schema |
switch_database_connection* | Pindah ke database 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 di-host sendiri, mode hanya-baca saja tidak cukup — mode ini masih memungkinkan akses ke sistem file lokal, mengubah pengaturan DuckDB, dan operasi sensitif lainnya.
Untuk penerapan produksi dengan akses pihak ketiga, kami merekomendasikan MotherDuck Remote MCP — tanpa pengaturan, mampu baca-tulis, dan dihosting oleh MotherDuck.
Self-hosting MotherDuck MCP: Fork repo ini dan sesuaikan sesuai kebutuhan. Gunakan akun layanan dengan token penskalaan-baca dan aktifkan mode SaaS untuk membatasi akses file lokal.
Self-hosting DuckDB MCP: Gunakan --init-sql untuk menerapkan pengaturan keamanan. Lihat panduan Mengamankan DuckDB untuk opsi yang tersedia.
Docker
Bangun dan jalankan server dengan Streamable HTTP di 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 meneruskan token dan menimpa perintah:
docker run --rm -p 8000:8000 \
-e motherduck_token="$MOTHERDUCK_TOKEN" \
mcp-server-motherduck --transport http --db-path md:
Endpoint MCP tersedia di http://localhost:8000/mcp. Flag CLI dan variabel env dari bawah masih berlaku.
Parameter Baris Perintah
| Parameter | Default | Deskripsi |
|---|---|---|
--db-path | :memory: | Jalur database: file lokal (absolut), md: (MotherDuck), atau URL s3:// |
--motherduck-token | variabel env 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 | Maksimum baris yang dikembalikan |
--max-chars | 50000 | Maksimum karakter yang dikembalikan |
--query-timeout | -1 | Waktu tunggu query dalam detik (-1 = dinonaktifkan) |
--init-sql | None | SQL yang 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 (misalnya dengan AWS Bedrock AgentCore Runtime). Server tetap 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 database S3 |
AWS_SECRET_ACCESS_KEY | Kunci rahasia AWS untuk koneksi database S3 |
AWS_SESSION_TOKEN | Token sesi AWS untuk kredensial sementara (peran IAM, SSO, profil instance EC2) |
AWS_DEFAULT_REGION | Wilayah AWS untuk koneksi S3 |
AWS_ENDPOINT | Endpoint 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: Faster Data Pipelines with MCP, DuckDB & AI (Blog)
- Faster Data Pipelines with MCP and 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
Release New VersionGitHub Action - Masukkan versi dalam format
MAJOR.MINOR.PATCH - Alur kerja menaikkan versi, memublikasikan ke PyPI/registri MCP, dan membuat rilis GitHub dengan paket MCPB
Lisensi
Lisensi MIT - lihat file LICENSE.
mcp-name: io.github.motherduckdb/mcp-server-motherduck