MotherDuck
公式MotherDuckとローカルのDuckDBを使用してデータのクエリと分析を行います
MotherDuck MCPで何ができますか?
-
SQL分析の実行 — アシスタントに、ローカルのDuckDBファイル、インメモリデータベース、またはMotherDuckに対して、完全なDuckDB SQL方言をサポートする
execute_queryを使用してクエリを実行させます。 -
データベース構造の探索 — アシスタントに
list_databases、list_tables、list_columnsを使用してデータベース、テーブル、列を一覧表示させ、データスキーマを理解します。 -
データベース接続の切り替え — アシスタントに、
switch_database_connectionを使用してローカルファイル、S3ホスト型データベース、またはMotherDuckの間でその場で切り替えるよう指示します(--allow-switch-databasesフラグが必要です)。 -
データの書き込みと変更 — 読み書きモードを有効にして、アシスタントが接続されたデータベースにレコードを直接挿入、更新、または削除できるようにします。
-
データの取り込みとエクスポート — サーバーを使用してローカルおよびリモートのデータベース間でクエリを実行し、ローカルファイルシステムからデータを取り込んだり、ローカルファイルシステムへデータをエクスポートしたりします。
ホスト型 MCP サーバー
npx add-mcp 'https://api.motherduck.com/mcp'Claude Code、Codex、Cursor などにインストールできます
ドキュメント
DuckDB / MotherDuck ローカルMCPサーバー
AIアシスタントとIDEのためのSQL分析およびデータエンジニアリング。
DuckDBの強力な分析SQLエンジンを使用して、AIアシスタントをデータに接続します。ローカルのDuckDBファイル、インメモリデータベース、S3ホスト型データベース、およびMotherDuckへの接続をサポートします。SQLの読み取りおよび書き込みクエリの実行、データベースカタログの参照、データベース接続のオンザフライ切り替えが可能です。
完全マネージドのリモートMCPサーバー(MotherDuck用)をお探しですか? → MotherDuckリモートMCPドキュメントへ
リモートMCPとローカルMCPの比較
| リモートMCP | ローカルMCP(このリポジトリ) | |
|---|---|---|
| ホスティング | MotherDuckがホスト | ローカル/セルフホストで実行 |
| セットアップ | セットアップ不要 | ローカルインストールが必要 |
| アクセス | 読み書き対応 | 読み書き対応 |
| ローカルファイルシステム | - | ローカルおよびリモートデータベース間でのクエリ、ローカルファイルシステムからのデータ取り込み/エクスポート |
クイックスタート
前提条件: 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ファイルへの書き込み接続と併用するのに便利です。s3://bucket/path.duckdbを使用してS3上のリモート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バンドル) |
| Claude Code | 以下のCLIコマンドを使用 | - |
| Codex CLI | 以下のCLIコマンドまたは~/.codex/config.tomlを使用 | - |
| Gemini CLI | 以下のCLIコマンドまたは~/.gemini/settings.jsonを使用 | - |
| Cursor | 設定 → MCP → 新しいグローバルMCPサーバーを追加 | |
| VS Code | Ctrl+Shift+P → 「基本設定: ユーザー設定を開く (JSON)」 | |
| Kiro | ~/.kiro/settings/mcp.json(グローバル)または.kiro/settings/mcp.json(プロジェクト) |
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
Kiro手動JSON設定
以下をKiroのMCP設定ファイル(グローバルは~/.kiro/settings/mcp.json、プロジェクトスコープは.kiro/settings/mcp.json)に追加してください。詳細については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リモートMCP を推奨します — セットアップ不要、読み書き対応、MotherDuckがホストします。
MotherDuck MCPのセルフホスティング: このリポジトリをフォークして必要に応じてカスタマイズしてください。読み取りスケーリングトークン付きのサービスアカウントを使用し、SaaSモードを有効にしてローカルファイルアクセスを制限してください。
DuckDB MCPのセルフホスティング: --init-sqlを使用してセキュリティ設定を適用してください。利用可能なオプションについてはDuckDBセキュリティガイドを参照してください。
Docker
Streamable HTTPを使用してポート8000でサーバーをビルドして実行します(デフォルトはインメモリDuckDB):
docker build -t mcp-server-motherduck .
docker run --rm -p 8000:8000 mcp-server-motherduck
トークンを渡してコマンドを上書きすることでMotherDuckに接続します:
docker run --rm -p 8000:8000 \
-e motherduck_token="$MOTHERDUCK_TOKEN" \
mcp-server-motherduck --transport http --db-path md:
MCPエンドポイントはhttp://localhost:8000/mcpで利用可能です。以下のCLIフラグと環境変数は引き続き適用されます。
コマンドラインパラメータ
| パラメータ | デフォルト | 説明 |
|---|---|---|
--db-path | :memory: | データベースパス: ローカルファイル(絶対パス)、md:(MotherDuck)、またはs3:// URL |
--motherduck-token | motherduck_token環境変数 | MotherDuckアクセストークン |
--read-write | False | 書き込みアクセスを有効化 |
--motherduck-saas-mode | False | MotherDuck SaaSモード(ローカルアクセスを制限) |
--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 | S3データベース接続用のAWSアクセスキー |
AWS_SECRET_ACCESS_KEY | S3データベース接続用のAWSシークレットキー |
AWS_SESSION_TOKEN | 一時認証情報用のAWSセッショントークン(IAMロール、SSO、EC2インスタンスプロファイル) |
AWS_DEFAULT_REGION | S3接続用のAWSリージョン |
AWS_ENDPOINT | S3接続用のAWSエンドポイント |
トラブルシューティング
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>"
}
}
}
}
リリースプロセス
Release New VersionGitHub Actionを実行MAJOR.MINOR.PATCH形式でバージョンを入力- ワークフローがバージョンを更新し、PyPI/MCPレジストリに公開し、MCPBパッケージを含むGitHubリリースを作成
ライセンス
MITライセンス - LICENSEファイルを参照してください。
mcp-name: io.github.motherduckdb/mcp-server-motherduck