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 などにインストールできます

ドキュメント

MotherDuck / DuckDB Local MCP Server

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サーバーを追加Install in Cursor
VS CodeCtrl+Shift+P → 「基本設定: ユーザー設定を開く (JSON)」Install with UV in VS Code
Kiro~/.kiro/settings/mcp.json(グローバル)または.kiro/settings/mcp.json(プロジェクト)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
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_querySQLクエリを実行(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リモート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-tokenmotherduck_token環境変数MotherDuckアクセストークン
--read-writeFalse書き込みアクセスを有効化
--motherduck-saas-modeFalseMotherDuck SaaSモード(ローカルアクセスを制限)
--allow-switch-databasesFalseswitch_database_connectionツールを有効化
--max-rows1024返される最大行数
--max-chars50000返される最大文字数
--query-timeout-1クエリタイムアウト(秒)(-1 = 無効)
--init-sqlNone起動時に実行するSQL
--motherduck-connection-parameterssession_hint=mcp&
dbinstance_inactivity_ttl=0s
追加のMotherDuck接続文字列パラメータ(key=valueペアを&で区切り)
--ephemeral-connectionsTrue読み取り専用ローカルファイルに一時接続を使用
--transportstdioトランスポートタイプ: stdioまたはhttp
--stateless-httpFalseプロトコル互換性のみを目的とする(例: AWS Bedrock AgentCore Runtime)。サーバーは共有DatabaseClientを介してグローバル状態を維持します。
--port8000HTTPトランスポートのポート
--host127.0.0.1HTTPトランスポートのホスト

環境変数

変数説明
motherduck_tokenまたはMOTHERDUCK_TOKENMotherDuckアクセストークン(--motherduck-tokenの代替)
HOMEDuckDBが拡張機能と設定に使用。設定されていない場合は--home-dirで上書き。
AWS_ACCESS_KEY_IDS3データベース接続用のAWSアクセスキー
AWS_SECRET_ACCESS_KEYS3データベース接続用のAWSシークレットキー
AWS_SESSION_TOKEN一時認証情報用のAWSセッショントークン(IAMロール、SSO、EC2インスタンスプロファイル)
AWS_DEFAULT_REGIONS3接続用のAWSリージョン
AWS_ENDPOINTS3接続用の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>"
      }
    }
  }
}

リリースプロセス

  1. Release New Version GitHub Actionを実行
  2. MAJOR.MINOR.PATCH形式でバージョンを入力
  3. ワークフローがバージョンを更新し、PyPI/MCPレジストリに公開し、MCPBパッケージを含むGitHubリリースを作成

ライセンス

MITライセンス - LICENSEファイルを参照してください。

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