ScalarDB MCP Server をはじめよう
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
ScalarDB MCP Server は、LLM が ScalarDB を 通じてデータにアクセス・管理できるようにする Model Context Protocol (MCP) の実装です。LLM を活用することで、自然言語を使用して、複数のサイロ化しているデータベースを跨いで検索と更新を行うことができます。
ScalarDB MCP Server は、単一データベースと複数ストレージ構成の両方で動作します。各データベースに個別の MCP サーバーが必要な従来のアプローチとは異なり、ScalarDB MCP Server は ScalarDB のマルチストレージ機能を活用して、単一の MCP サーバーを通じて複数・異種のデータベース (PostgreSQL、MySQL、Cosmos DB、DynamoDB など) への統一アクセスを提供します。自然言語でクエリを送信するだけで、サーバーがデータベース全体で適切な操作を自動的に実行し、意思決定プロセスの改善と迅速化を実現します。
アーキテクチャと主要機能
以下の図は、ScalarDB MCP Server が従来のアプローチとどのように異なるかを示しています。各データベースに個別の MCP サーバーが必要ではなく、ScalarDB MCP Server に一度接続するだけで、ScalarDB を通じてすべてのデータベースにアクセスできます。

ScalarDB MCP Server の中核では、以下の機能を提供します。
ScalarDB 接続
MCP サーバーは設定に応じて ScalarDB Core ライブラリを用いる、もしくは、ScalarDB Cluster にクライアントライブラリを用いて接続します。つまり、ScalarDB とのやりとりにそれらのライブラリの使い方を知る必要はありません。
トランザクション操作
ScalarDB MCP Server は ACID 準拠のトランザクションをサポートし、LLM が複数の操作を安全に実行できるようにします。LLM が操作をグループ化する必要があると判断した場合、MCP サーバーは操作がすべて成功するかすべて失敗するかを保証し、データベース全体でデータの整合性を維持します。
操作モード
ScalarDB MCP Server は、ScalarDB の構成に合わせた2つの操作モード (SQL モードと CRUD モード) をサポートします。
SQL モード
SQL モ ードは、データベース操作用の SQL インターフェースを提供します。自然言語でリクエストを行うと、LLM が ScalarDB でサポートされている SQL 操作を通じて SQL コマンドを自動的に生成および実行し、標準の SQL 構文 (BEGIN、COMMIT、ROLLBACK) を使用してトランザクションを処理します。LLM がすべての操作を実行するのに1つのツールのみを使用する必要があるため、このモードはより効率的である可能性があります。SQL モードは、ScalarDB Cluster でのみ利用可能です。
CRUD モード
CRUD モードは、操作をプログラム的に制御したい場合に使用します。ScalarDB Core には SQL インターフェースが含まれていないため、このモードでは代わりに ScalarDB のネイティブ SDK 操作を使用します。LLM は、スキーマ管理、CRUD 操作、明示的なトランザクション制御の個別ツールを使用して、自然言語リクエストを適切な SDK 呼び出しに変換します。LLM が操作を完了するために複数のツールを使用する必要があるため、このモードは効率が劣る可能性があります。
デプロイメントの制限
ScalarDB MCP Server は現在、ローカルデプロイメント専用の STDIO モードで実行されます。Server-Sent Events (SSE) によるリモートサーバーデプロイメントはまだサポートされていませんが、将来のリリースで計画されています。
これが意味すること:
- ✅ MCP サーバーは AI クライアント (Claude Desktop、Visual Studio Code など) と一緒にローカルで実行されます。
- ✅ 開発、テスト、シングルユーザーシナリオに最適です。
- ❌ マルチユーザーアクセス用にリモートサーバーに MCP サーバーをデプロイできません。
- ❌ ウェブベースまたはクラウドデプロイメントオプションはまだありません。
ワークフローの例
以下は、自然言語を通じて ScalarDB MCP Server と対話する方法の例です:
データクエリ (SQL モード):
ユーザー: "customer テーブルからすべてのユーザーを表示して"
🤖 LLM が自動的に使用: scalardb_execute_sql ツール
生成された SQL: SELECT * FROM customer
結果: 列と値を含む顧客データが表示されます
データクエリ (CRUD モード):
ユーザー: "customer テーブルからすべてのユーザーを表示して"
🤖 LLM が自動的に使用: scalardb_scan ツール
結果: 列と値を含む顧客データが表示されます
データベース構造の作成 (CRUD モード):
ユーザー: "id、name、price 列を持つ products という新しいテーブルを作成して"
🤖 LLM が自動的に使用: scalardb_create_table ツール
結果: ✅ テーブル 'products' が正常に作成されました
クロスデータベース操作 (マルチストレージ):
ユーザー: "ユーザー ID 123 のユーザープロファイルと注文履歴を取得して"
🤖 LLM が自動的に使用: scalardb_get ツール (複数のデータベースにまたがってクエリ)
結果: 結合されたユーザープロファイル (PostgreSQL から) と注文履歴 (DynamoDB から)
LLM はリクエストに基づいて適切なツールを自動的に選択します。特定のツールが存在することや使用方法を知る必要はありません。