Dolt Mcp について
Dolt MCP サーバーは、MySQL または PostgreSQL プロトコル経由で Dolt と DoltgreSQL データベースに AI アシスタントから直接アクセスできるようにします。SQL 操作にブランチ、コミット、マージ、差分などのバージョン管理を組み合わせており、バージョン管理されたデータを扱う開発者に向いています。
主な機能
- 01Dolt(MySQL)と DoltgreSQL のバックエンドに対応
- 02データベース、テーブル、データ操作のツールを提供
- 03ブランチ、コミット、マージ、差分のツールを含む
- 04clone、fetch、push、pull などのリモート操作に対応
- 05サーバー不要の組み込み DoltLite モードを提供
活用シーン
- 01AI アシスタントからバージョン管理されたデータの照会と更新を行う
- 02ブランチ上でデータ変更を検証してからマージする
- 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 を入手します。
- 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 - ソースからビルド: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_databaseshow_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:キーが複数存在する場合に指定する任意の認証情報キー IDDOLTLITE_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 サーバーインスタンスに対してツールの機能を検証する、包括的な統合テストが含まれています。
貢献
- リポジトリをフォークします
- 機能ブランチを作成します
- 変更を加えます
- 新しい機能のテストを追加します
- プルリクエストを送信します
ライセンス
このプロジェクトには、メインの Dolt プロジェクトと同じライセンスが適用されます。
サポート
問題や質問がある場合:
- このリポジトリで Issue を作成します
- Dolt Discord コミュニティに参加します
- Dolt のドキュメントを確認します
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。