mcpField
M
MotherDuck's DuckDB MCP Server

MotherDuck's DuckDB MCP Server

ローカル
github.com/motherduckdbデータベース5363 週間前に更新

MotherDuck's DuckDB MCP Server について

AI アシスタントや IDE から DuckDB と MotherDuck を利用して SQL 分析やデータエンジニアリングを行うローカル MCP サーバーです。インメモリ、ローカルファイル、S3 上のデータベース、MotherDuck に接続でき、読み書き権限や接続切り替えを設定できます。

主な機能

  1. 01DuckDB の SQL クエリを実行
  2. 02データベース・テーブル・ビュー・列を参照
  3. 03ローカル、インメモリ、S3、MotherDuck に接続
  4. 04設定に応じて読み書きを有効化
  5. 05有効時にデータベース接続を切り替え
  6. 06stdio と Streamable HTTP に対応

活用シーン

  1. 01AI クライアントからローカル DuckDB ファイルを検索
  2. 02MotherDuck や S3 のデータベースを分析
  3. 03データエンジニアリング中にカタログを確認
  4. 04Docker で HTTP MCP サーバーを稼働

MCP 対応

MCP クライアントに SQL 実行、カタログ参照、任意のデータベース切り替えをツールとして公開します。stdio と HTTP のトランスポートに対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck"
],
"env": {
"motherduck_token": "<motherduck_token>",
"MOTHERDUCK_TOKEN": "<MOTHERDUCK_TOKEN>",
"HOME": "<HOME>",
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"AWS_SESSION_TOKEN": "<AWS_SESSION_TOKEN>",
"AWS_DEFAULT_REGION": "<AWS_DEFAULT_REGION>",
"AWS_ENDPOINT": "<AWS_ENDPOINT>"
}
}
}
}
起動コマンドuvx mcp-server-motherduck
設定が必要な環境変数
motherduck_tokenシークレットAccess token for MotherDuck connections (alternative to --motherduck-token)
MOTHERDUCK_TOKENシークレットAccess token for MotherDuck connections (alternative to --motherduck-token)
HOMEUsed by DuckDB for extensions and config. Override with --home-dir if not set.
AWS_ACCESS_KEY_IDシークレットAWS access key for S3 database connections
AWS_SECRET_ACCESS_KEYシークレットAWS secret access key for S3 database connections
AWS_SESSION_TOKENシークレットAWS session token for temporary credentials
AWS_DEFAULT_REGIONAWS region for S3 database connections
AWS_ENDPOINTAWS endpoint for S3 database connections

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimcp-server-motherduck1.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MotherDuck / DuckDB ローカル MCP サーバー

DuckDB / MotherDuck ローカル MCP サーバー

AI アシスタントや IDE 向けの SQL 分析とデータエンジニアリング。


DuckDB の強力な分析用 SQL エンジンを使って、AI アシスタントをデータに接続できます。ローカルの DuckDB ファイル、インメモリデータベース、S3 ホストのデータベース、MotherDuck への接続に対応しています。SQL の読み取り・書き込みクエリの実行、データベースカタログの閲覧、複数のデータベース接続のオンデマンド切り替えが可能です。

MotherDuck 用のフルマネージドなリモート MCP サーバーをお探しですか? → MotherDuck リモート MCP のドキュメントへ

リモート MCP とローカル MCP
リモート MCPローカル MCP(このリポジトリ)
ホスティングMotherDuck がホストローカルで実行/セルフホスト可能
セットアップセットアップ不要ローカルへのインストールが必要
アクセス読み書きに対応読み書きに対応
ローカルファイルシステム-ローカルおよびリモートのデータベースを横断してクエリを実行し、ローカルファイルシステムからデータを取り込む/ローカルファイルシステムにデータをエクスポート

クイックスタート

前提条件:pip install uv または brew install uv で 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 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 serverCursor にインストール
VS CodeCtrl+Shift+P → "Preferences: Open User Settings (JSON)"VS Code に UV でインストール
Kiro~/.kiro/settings/mcp.json(グローバル)または .kiro/settings/mcp.json(プロジェクト)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 Remote 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:、または 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一時的な認証情報(IAM ロール、SSO、EC2 インスタンスプロファイル)用の AWS セッショントークン
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 アクションを実行します
  2. MAJOR.MINOR.PATCH 形式でバージョンを入力します
  3. ワークフローによってバージョンが更新され、PyPI/MCP レジストリに公開された後、MCPB パッケージを含む GitHub リリースが作成されます

ライセンス

MIT ライセンスです。詳細は LICENSE ファイルをご覧ください。

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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。