mcpField
D
Dolt Mcp

Dolt Mcp

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

Dolt Mcp について

Dolt MCP サーバーは、MySQL または PostgreSQL プロトコル経由で Dolt と DoltgreSQL データベースに AI アシスタントから直接アクセスできるようにします。SQL 操作にブランチ、コミット、マージ、差分などのバージョン管理を組み合わせており、バージョン管理されたデータを扱う開発者に向いています。

主な機能

  1. 01Dolt(MySQL)と DoltgreSQL のバックエンドに対応
  2. 02データベース、テーブル、データ操作のツールを提供
  3. 03ブランチ、コミット、マージ、差分のツールを含む
  4. 04clone、fetch、push、pull などのリモート操作に対応
  5. 05サーバー不要の組み込み DoltLite モードを提供

活用シーン

  1. 01AI アシスタントからバージョン管理されたデータの照会と更新を行う
  2. 02ブランチ上でデータ変更を検証してからマージする
  3. 03単一ファイルのデータベースでローカルの AI ワークフローを実行する

MCP 対応

本プロジェクトはデータベース操作とバージョン管理のツールを MCP クライアントに公開する MCP サーバーです。stdio または HTTP モードで接続でき、HTTP モードでは /mcp エンドポイントが必要です。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

Dolt MCP サーバー

AI アシスタントが Dolt および DoltgreSQL データベースに直接アクセスできるようにする Model Context Protocol(MCP)サーバーです。このサーバーにより、Claude などの AI ツールは、MySQL または PostgreSQL のワイヤープロトコルを介して、バージョン管理機能を備えた Dolt の SQL データベースを操作できます。データベース操作、バージョン管理のワークフロー、データ管理タスクを実行できます。

概要

Dolt MCP サーバーは、AI アシスタントと Dolt データベースの橋渡しを行い、以下の包括的なツールセットを提供します。

  • データベース管理:データベースの作成、削除、管理
  • テーブル操作:テーブルの作成、変更、削除、説明、クエリ
  • バージョン管理:ブランチ管理、コミット、マージ、差分
  • データ操作:データの挿入、更新、削除、クエリ
  • リモート操作:リモートリポジトリのクローン、フェッチ、プッシュ、プル

Dolt(MySQL 互換)と DoltgreSQL(PostgreSQL 互換)の両方のバックエンドに対応しています。SQL 方言は、起動時に --dolt または --doltgres フラグで選択します。組み込みの DoltLite バックエンド(--doltlite)も、専用にビルドされたバイナリで利用できます。サーバーを必要とせず、ローカルのデータベースファイルを直接使用します。詳しくは「DoltLite モード(組み込み)」をご覧ください。

インストール

前提条件
  • Go 1.25 以降
  • 起動中の Dolt または DoltgreSQL SQL サーバーのインスタンス(DoltLite モードでは不要)
ソースからビルド

デフォルトのビルドは純粋な Go(cgo 不使用)で、自由にクロスコンパイルできます。

git clone https://github.com/dolthub/dolt-mcp
cd dolt-mcp
go build -o dolt-mcp-server ./mcp/cmd/dolt-mcp-server

この方法でビルドされたバイナリには DoltLite のサポートが含まれません(--doltlite を指定するとエラーになります)。DoltLite を組み込んでビルドするには cgo と libdoltlite が必要です。詳しくは「DoltLite サポートを有効にしてビルド」をご覧ください。

Docker でのインストール

公式 Docker イメージを取得します。

docker pull dolthub/dolt-mcp:latest

使用方法

Dolt MCP サーバーは 2 つのモードで実行でき、複数のデプロイ方法に対応しています。

Docker の使用方法(本番環境に推奨)
Docker で HTTP サーバーを実行
docker run -d \
  --name dolt-mcp-server \
  -p 8080:8080 \
  -e MCP_MODE=http \
  -e DOLT_HOST=your-dolt-host \
  -e DOLT_USER=root \
  -e DOLT_DATABASE=your_database \
  -e DOLT_PASSWORD=your_password \
  dolthub/dolt-mcp:latest
Docker で Stdio サーバーを実行
docker run -it --rm \
  -e MCP_MODE=stdio \
  -e DOLT_HOST=your-dolt-host \
  -e DOLT_USER=root \
  -e DOLT_DATABASE=your_database \
  -e DOLT_PASSWORD=your_password \
  dolthub/dolt-mcp:latest
Docker から DoltgreSQL に接続

MCP_DIALECT=doltgres を設定すると、コンテナは DoltgreSQL サーバーに接続します。方言が doltgres の場合、DOLT_PORT のデフォルト値は 5432 です。

docker run -d \
  --name dolt-mcp-server \
  -p 8080:8080 \
  -e MCP_MODE=http \
  -e MCP_DIALECT=doltgres \
  -e DOLT_HOST=your-doltgres-host \
  -e DOLT_USER=postgres \
  -e DOLT_DATABASE=your_database \
  -e DOLT_PASSWORD=your_password \
  dolthub/dolt-mcp:latest
ネイティブバイナリの使用方法
1. Stdio サーバー(AI アシスタントに推奨)

Stdio サーバーは標準入力/出力を介して通信するため、Claude Desktop などの AI アシスタントとの統合に最適です。

Dolt(MySQL 方言、デフォルト)に接続する場合:

./dolt-mcp-server \
  --stdio \
  --dolt \
  --host 0.0.0.0 \
  --port 3306 \
  --user root \
  --database mydb

DoltgreSQL(PostgreSQL 方言)に接続する場合:

./dolt-mcp-server \
  --stdio \
  --doltgres \
  --host 0.0.0.0 \
  --port 5432 \
  --user postgres \
  --database mydb

--port を省略した場合、Dolt では 3306、DoltgreSQL では 5432 がデフォルトで使用されます。

Claude Desktop の設定

この設定を Claude Desktop の MCP 設定に追加します。

{
  "mcpServers": {
    "dolt-mcp": {
      "command": "/path/to/dolt-mcp-server",
      "args": [
        "--stdio",
        "--dolt",
        "--host", "0.0.0.0",
        "--port", "3306",
        "--user", "root",
        "--database", "your_database_name"
      ],
      "env": {
        "DOLT_PASSWORD": "your_password_if_needed"
      }
    }
  }
}

DoltgreSQL バックエンドを使用する場合は、--dolt を --doltgres に置き換え、サーバーに合わせてポートとユーザーを調整してください。

HTTP クライアントの設定

HTTP モードで実行中の Dolt MCP サーバーに接続するときは、HTTP トランスポートを使用するよう Claude を設定できます。重要:HTTP 接続では、サーバー URL の末尾に /mcp エンドポイントを追加する必要があります。

Claude CLI を使用
claude mcp add --transport http dolt-mcp https://your-dolt-host:8080/mcp --header "Authorization: Bearer <token>"
Claude Desktop の設定

この設定を Claude Desktop の MCP 設定に追加します。

{
  "mcpServers": {
    "dolt-mcp": {
      "transport": "http",
      "url": "https://your-dolt-host:8080/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>"
      }
    }
  }
}

注:your-dolt-host、ポート、<your-token> を実際のサーバー情報に置き換えてください。HTTP 接続には /mcp エンドポイントが必要です。

2. HTTP サーバー

HTTP サーバーは MCP ツール呼び出し用の REST API を公開します。ウェブアプリケーションやカスタム統合に便利です。

./dolt-mcp-server \
  --http \
  --mcp-port 8080 \
  --dolt \
  --host 0.0.0.0 \
  --port 3306 \
  --user root \
  --database mydb

DoltgreSQL サーバーに接続するには、--dolt の代わりに --doltgres を指定してください。

DoltLite モード(組み込み)

DoltLite は、Dolt のバージョン管理機能を追加した SQLite のフォークです。ブランチ、コミット、差分、マージ、リモートを備えた、データベース全体のバージョン管理が単一のローカルファイル内で行われます。DoltLite モードでは、MCP サーバーがデータベースエンジンを直接組み込むため、インストール、設定、実行が必要な Dolt または DoltgreSQL サーバーはありません。データベースファイル(存在しない場合は初回使用時に作成されます)をサーバーに指定するだけで、すぐに作業を開始できます。そのため、ノートパソコンやコンテナー上でローカルファーストの AI ワークフローを実現するのに最適です。

DoltLite モードには、DoltLite のサポートを有効にしてビルドされたバイナリが必要です。Linux と macOS の amd64/arm64、および Windows x64 向けの dolt-mcp-server-doltlite-<platform> という名前のビルド済みアーカイブがリリースに添付されています。また、マルチアーキテクチャ対応の dolthub/dolt-mcp:<version>-doltlite Docker イメージにも含まれています。デフォルトの(純粋な Go の)ビルドには含まれていません。このビルドに --doltlite を渡すと、this binary was built without DoltLite support; rebuild with -tags "doltlite libsqlite3" ... というエラーが発生します。

Docker でのクイックスタート
docker run -d \
  --name dolt-mcp-server-doltlite \
  -p 8080:8080 \
  -v dolt_mcp_data:/data \
  -e MCP_MODE=http \
  -e DOLT_DB_FILE=/data/mydb.db \
  -e DOLT_COMMIT_NAME="Your Name" \
  -e [email protected] \
  dolthub/dolt-mcp:latest-doltlite

コンテナーを再起動してもデータベースファイルが保持されるように、/data にボリュームをマウントしてください。環境変数の一覧については、docker/README.md を参照してください。

ネイティブバイナリでのクイックスタート

リリースページから dolt-mcp-server-doltlite アーカイブをダウンロードするか、後述の手順に従って自分でビルドし、次のコマンドを実行します。

./dolt-mcp-server-doltlite \
  --doltlite \
  --db-file /path/to/mydb.db \
  --commit-name "Your Name" \
  --commit-email [email protected] \
  --doltlite-busy-timeout 30s \
  --http --mcp-port 8080
# or --stdio in place of --http --mcp-port

ファイルに対してインプロセスで実行される DoltLite では、--host、--port、--user、--password、TLS フラグは必要ありません。

DoltLite のフラグ
  • --doltlite:組み込みの DoltLite 方言を使用します。--dolt および --doltgres とは同時に指定できません。
  • --db-file:DoltLite データベースファイルへのパスです(--doltlite と併用する場合は必須)。ファイルが存在しない場合は作成されます。
  • --commit-name / --commit-email:Dolt のコミットで使用する作成者名とメールアドレスです。指定することをおすすめします。指定しない場合、コミットの作成者は "doltlite" になります。
  • --doltlite-busy-timeout:競合するロックが解放されるまで DoltLite が待機する時間です(デフォルトは 5s、0 を指定すると待機しません)。
Claude Desktop の設定(DoltLite)
{
  "mcpServers": {
    "dolt-mcp-doltlite": {
      "command": "/path/to/dolt-mcp-server-doltlite",
      "args": [
        "--stdio",
        "--doltlite",
        "--db-file", "/path/to/mydb.db",
        "--commit-name", "Your Name",
        "--commit-email", "[email protected]"
      ]
    }
  }
}
DoltLite サポートを有効にしてビルドする

DoltLite のサポートには、cgo、doltlite および libsqlite3 のビルドタグ、そして libdoltlite(zlib と pthreads を含む)が必要です。cgo を使用するため、DoltLite バイナリはクロスコンパイルできません。対象のプラットフォームでビルドしてください。

次のいずれかの方法で libdoltlite を入手します。

  1. GitHub リリースの zip ファイル:dolthub/doltlite のリリースから doltlite-lib-<platform>-<version>.zip アセット(例:doltlite-lib-linux-x64-0.11.46.zip)をダウンロードします。doltlite.h と libdoltlite.a が含まれています。libsqlite3 タグを付けてビルドした mattn/go-sqlite3 には <sqlite3.h> が含まれるため、展開したディレクトリ内でヘッダーファイルをコピーしてください:cp doltlite.h sqlite3.h
  2. ソースからビルド:dolthub/doltlite を指定のタグでクローンし、mkdir build && cd build && ../configure && make doltlite-lib を実行します(C ツールチェーン、tcl、zlib のヘッダーが必要です。例:apt-get install build-essential tcl zlib1g-dev)。ビルドディレクトリに sqlite3.h が生成されます。

次に、ヘッダーと静的ライブラリを含むディレクトリを cgo に指定して、サーバーをビルドします。

CGO_CFLAGS="-I/path/to/doltlite/build" \
CGO_LDFLAGS="/path/to/doltlite/build/libdoltlite.a -lz -lpthread" \
go build -tags "doltlite libsqlite3" -o dolt-mcp-server-doltlite ./mcp/cmd/dolt-mcp-server

Linux では、CGO_LDFLAGS に -lm -ldl を追加してください。静的リンクされるため、生成されたバイナリの実行時に doltlite 共有ライブラリは必要ありません。

DoltLite モードで使用できないツール

DoltLite は単一のファイルに単一のデータベースを埋め込むため、サーバーや複数データベースを対象とするツールは、このモードではクライアントから自動的に非表示になります。

  • list_databases、create_database、drop_database、clone_database
  • show_processlist、kill_process

dolt_tests ツール、マージ状態、file:// URL および DoltLite 対応の HTTP(S) リモートへのリモート操作を含む、それ以外のすべて(39 個のツール)は動作します。認証が必要なリモートでは DoltLite の認証情報を使用します。exec ツールで SELECT dolt_creds_new(); を実行して認証情報を作成し、返されたキーをリモートサービスで設定してください。エンジンは、デフォルトでは ~/.doltlite/creds から、設定されている場合は DOLTLITE_CREDS_DIR から認証情報を読み込みます。

動作に関する注意事項
  • ファイルごとにデータベースは 1 つ:working_database ツール引数は受け付けられますが、無視されます。データベースは常に 1 つだけです。
  • コミット作成者:--commit-name/--commit-email を設定してください。設定しない場合、コミットの作成者は「doltlite」になります。
  • ブランチの切り替え:未コミットの作業セットはブランチごとに個別に保持されます。ブランチを切り替えて戻ると、そのブランチのステージ前およびステージ済みの状態が復元されます。
  • 並行処理:各ツール呼び出しは、固有の固定された DoltLite データベースハンドルを使用するため、ブランチやトランザクションの状態が同時実行される MCP 操作間で漏れることはありません。DoltLite はこれらのハンドルと、同じファイルを開くほかのアプリケーションを調整し、同時に複数の読み取りを行いながら、永続化を伴う書き込みは一度に 1 つだけ実行します。ロックの待機時間は --doltlite-busy-timeout で設定してください。
  • リモートの互換性:リモートストレージは DoltLite のファイルまたは HTTP(S) プロトコルに対応している必要があります。完全な Dolt リポジトリと DoltLite データベースでは、異なるストレージ形式が使用されます。

設定オプション

必須パラメーター
  • --host:Dolt または DoltgreSQL サーバーのホスト名(--doltlite では使用しません)
  • --user:サーバー認証用のユーザー名(--doltlite では使用しません)
  • --stdio または --http:サーバーモードの選択
方言の選択
  • --dolt:Dolt(MySQL 互換)の方言を使用します。方言フラグを指定しない場合、これがデフォルトです。
  • --doltgres:DoltgreSQL(PostgreSQL 互換)の方言を使用します。
  • --doltlite:埋め込み型の DoltLite 方言を使用します。--db-file と DoltLite 対応でビルドされたバイナリが必要です(DoltLite モードを参照)。

--dolt、--doltgres、--doltlite は相互に排他的です。

任意のパラメーター
  • --database:接続するデータベースの名前
  • --port:サーバーのポート。デフォルトは Dolt では 3306、DoltgreSQL では 5432 です。
  • --password:認証用のパスワード(環境変数も使用できます)
  • --tls:データベース接続の TLS モード:true、false、skip-verify、または preferred
  • --tls-ca:データベースの TLS 接続に使用する CA 証明書ファイルのパス
  • --mcp-port:HTTP サーバーのポート(デフォルト:8080、HTTP モードのみ)
  • --db-file:DoltLite データベースファイルのパス。ファイルが存在しない場合は作成されます(--doltlite で必須)
  • --commit-name:Dolt コミットの作成者名(--doltlite のみ、推奨)
  • --commit-email:Dolt コミットの作成者メールアドレス(--doltlite のみ、推奨)
  • --doltlite-busy-timeout:競合するロックが発生した場合に DoltLite が待機する時間(デフォルトは 5s。0 を指定すると待機しません)
環境変数
  • DOLT_PASSWORD:Dolt サーバー認証用のパスワードを設定します
Docker 環境変数

Docker を使用する場合、環境変数でサーバーを設定できます。

必須
  • DOLT_HOST:Dolt SQL サーバーのホスト名(doltlite では使用しません)
  • DOLT_USER:Dolt サーバー認証用のユーザー名(doltlite では使用しません)
オプション
  • DOLT_DATABASE:接続するデータベースの名前
  • DOLT_PASSWORD:認証用のパスワード
  • DOLT_PORT:サーバーのポート(デフォルト:dolt の場合は 3306、doltgres の場合は 5432)
  • MCP_DIALECT:SQL の方言:dolt(MySQL 互換)、doltgres(PostgreSQL 互換)、または doltlite(組み込み型。-doltlite イメージのバリアントが必要です)。デフォルト:dolt(-doltlite イメージでは doltlite)
  • MCP_MODE:サーバーモード:http または stdio(デフォルト:stdio)
  • MCP_PORT:HTTP サーバーのポート(デフォルト:8080、HTTP モードのみ)
DoltLite 専用(dolthub/dolt-mcp:<version>-doltlite イメージ)
  • DOLT_DB_FILE:コンテナ内の DoltLite データベースファイルのパス(デフォルト:/data/doltlite.db)。ファイルを永続化するには、/data にボリュームをマウントしてください
  • DOLT_COMMIT_NAME:Dolt コミットの作成者名(推奨)
  • DOLT_COMMIT_EMAIL:Dolt コミットの作成者メールアドレス(推奨)
  • DOLTLITE_BUSY_TIMEOUT:競合するロックが解放されるまで DoltLite が待機する時間(デフォルト:5s。0 にすると待機しません)
  • DOLTLITE_CREDS_DIR:認証が必要な HTTP(S) リモート用の認証情報ディレクトリ(デフォルト:/data/creds)
  • DOLTLITE_CREDS_KID:キーが複数存在する場合に指定する任意の認証情報キー ID
  • DOLTLITE_CA_FILE:プライベート HTTPS リモート用の任意の CA バンドル
Docker Compose の例
version: '3.8'

services:
  dolt-mcp-server:
    image: dolthub/dolt-mcp:latest
    ports:
      - "8080:8080"
    environment:
      - MCP_MODE=http
      - DOLT_HOST=dolt-server
      - DOLT_PORT=3306
      - DOLT_USER=root
      - DOLT_DATABASE=myapp
      - DOLT_PASSWORD=secret
    depends_on:
      - dolt-server
    restart: unless-stopped

  dolt-server:
    image: dolthub/dolt-sql-server:latest
    ports:
      - "3306:3306"
    volumes:
      - dolt_data:/var/lib/dolt
    environment:
      - DOLT_ROOT_PATH=/var/lib/dolt
    restart: unless-stopped

volumes:
  dolt_data:

利用可能なツール

Dolt MCP Server は、機能ごとに分類された 40 個以上のツールを提供します。

データベース管理
  • list_databases:利用可能なすべてのデータベースを一覧表示します
  • create_database:新しいデータベースを作成します
  • drop_database:データベースを削除します
  • select_version:Dolt サーバーのバージョン情報を取得します
テーブル操作
  • show_tables:現在のデータベースのテーブルを一覧表示します
  • show_create_table:テーブル作成用の SQL を表示します
  • describe_table:テーブルのスキーマと構造を表示します
  • create_table:新しいテーブルを作成します
  • alter_table:テーブル構造を変更します
  • drop_table:テーブルを削除します
データ操作
  • query:SELECT クエリを実行します(読み取り操作)
  • exec:INSERT、UPDATE、DELETE クエリを実行します(書き込み操作)
ブランチ管理
  • list_dolt_branches:すべてのブランチを一覧表示します
  • select_active_branch:現在アクティブなブランチを表示します
  • create_dolt_branch:新しいブランチを作成します
  • create_dolt_branch_from_head:現在の HEAD からブランチを作成します
  • delete_dolt_branch:ブランチを削除します
  • move_dolt_branch:ブランチの名前を変更します
バージョン管理
  • list_dolt_commits:コミット履歴を表示します
  • create_dolt_commit:ステージされた変更を含むコミットを作成します
  • stage_table_for_dolt_commit:指定したテーブルをステージします
  • stage_all_tables_for_dolt_commit:変更されたすべてのテーブルをステージします
  • unstage_table:テーブルをステージングエリアから削除します
  • unstage_all_tables:ステージングエリアをクリアします
差分とステータス
  • list_dolt_diff_changes_in_working_set:未コミットの変更を表示します
  • list_dolt_diff_changes_by_table_name:指定したテーブルの変更を表示します
  • list_dolt_diff_changes_in_date_range:指定した期間内の変更を表示します
  • get_dolt_merge_status:マージの競合とステータスを確認します
マージ操作
  • merge_dolt_branch:ブランチをマージします(可能な場合はファストフォワード)
  • merge_dolt_branch_no_fast_forward:マージコミットを強制的に作成します
リセット操作
  • dolt_reset_soft:リビジョン(テーブル、ブランチ、コミット、ワーキングセット、または「.」)にソフトリセットします
  • dolt_reset_hard:リビジョンにハードリセットします
リモート操作
  • list_dolt_remotes:設定済みのリモートを一覧表示します
  • add_dolt_remote:新しいリモートリポジトリを追加します
  • remove_dolt_remote:リモートリポジトリを削除します
  • clone_database:リモートデータベースをクローンします
  • dolt_fetch_branch:リモートから指定したブランチをフェッチします
  • dolt_fetch_all_branches:リモートからすべてのブランチをフェッチします
  • dolt_push_branch:ブランチをリモートにプッシュします
  • dolt_pull_branch:リモートからブランチをプルします

ワークフローの例

基本的なデータベース操作
# Start the MCP server
./dolt-mcp-server --stdio --dolt --host localhost --user root --database testdb

# Example AI interactions:
# "Show me all tables in the database"
# "Create a table called users with id, name, and email columns"  
# "Insert some sample data into the users table"
# "Show me the current branch and recent commits"
バージョン管理のワークフロー
# Example AI workflow:
# "Create a new branch called 'feature-users'"
# "Switch to the feature-users branch" 
# "Create a users table with appropriate schema"
# "Stage and commit these changes"
# "Switch back to main and merge the feature branch"
データ分析
# Example AI interactions:
# "Show me all data in the sales table"
# "Calculate total revenue by month from the orders table"
# "Show me what changed in the products table in the last week"
# "Create a branch to experiment with data transformations"

開発

テストの実行
go test ./...
統合テスト

このリポジトリには、実際の Dolt サーバーインスタンスに対してツールの機能を検証する、包括的な統合テストが含まれています。

貢献

  1. リポジトリをフォークします
  2. 機能ブランチを作成します
  3. 変更を加えます
  4. 新しい機能のテストを追加します
  5. プルリクエストを送信します

ライセンス

このプロジェクトには、メインの Dolt プロジェクトと同じライセンスが適用されます。

サポート

問題や質問がある場合:

コメント

MCP は初めてですか?

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

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