From cde922a2b8f318623ed2d90ed1e19d919ddc51d7 Mon Sep 17 00:00:00 2001 From: josh-wong Date: Tue, 21 Oct 2025 06:18:19 +0000 Subject: [PATCH 1/5] AUTO: Sync ScalarDB docs in Japanese to docs site repo --- .../scalardb-mcp-server-architecture.png | Bin 0 -> 129634 bytes ...tting-started-with-scalardb-mcp-server.mdx | 631 ++++++++++++++++++ .../scalardb-mcp-server/tools-reference.mdx | 102 +++ 3 files changed, 733 insertions(+) create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/images/scalardb-mcp-server-architecture.png create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-mcp-server/getting-started-with-scalardb-mcp-server.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-mcp-server/tools-reference.mdx diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/images/scalardb-mcp-server-architecture.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/images/scalardb-mcp-server-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..300719e33f6b74fd527410d3e30438757ffeb325 GIT binary patch literal 129634 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 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +ScalarDB MCP Server は、LLM が ScalarDB を通じてデータにアクセス・管理できるようにする [Model Context Protocol (MCP) ](https://modelcontextprotocol.io/) の実装です。LLM を活用することで、自然言語を使用して、複数のサイロ化しているデータベースを跨いで検索と更新を行うことができます。 + +ScalarDB MCP Server は、単一データベースと複数ストレージ構成の両方で動作します。各データベースに個別の MCP サーバーが必要な従来のアプローチとは異なり、ScalarDB MCP Server は [ScalarDB のマルチストレージ機能](../multi-storage-transactions.mdx)を活用して、単一の MCP サーバーを通じて複数・異種のデータベース (PostgreSQL、MySQL、Cosmos DB、DynamoDB など) への統一アクセスを提供します。自然言語でクエリを送信するだけで、サーバーがデータベース全体で適切な操作を自動的に実行し、意思決定プロセスの改善と迅速化を実現します。 + +## アーキテクチャと主要機能 + +以下の図は、ScalarDB MCP Server が従来のアプローチとどのように異なるかを示しています。各データベースに個別の MCP サーバーが必要ではなく、ScalarDB MCP Server に一度接続するだけで、ScalarDB を通じてすべてのデータベースにアクセスできます。 + +![ScalarDB MCP Server アーキテクチャ](../images/scalardb-mcp-server-architecture.png) + +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 が操作を完了するために複数のツールを使用する必要があるため、このモードは効率が劣る可能性があります。 + +### デプロイメントの制限 + +:::note + +ScalarDB MCP Server は現在、ローカルデプロイメント専用の STDIO モードで実行されます。Server-Sent Events (SSE) によるリモートサーバーデプロイメントはまだサポートされていませんが、将来のリリースで計画されています。 + +**これが意味すること:** + +- ✅ MCP サーバーは AI クライアント (Claude Desktop、Visual Studio Code など) と一緒にローカルで実行されます。 +- ✅ 開発、テスト、シングルユーザーシナリオに最適です。 +- ❌ マルチユーザーアクセス用にリモートサーバーに MCP サーバーをデプロイできません。 +- ❌ ウェブベースまたはクラウドデプロイメントオプションはまだありません。 + +::: + +## ワークフローの例 + +以下は、自然言語を通じて ScalarDB MCP Server と対話する方法の例です: + +**データクエリ (SQL モード):** + +```markdown +ユーザー: "customer テーブルからすべてのユーザーを表示して" +🤖 LLM が自動的に使用: scalardb_execute_sql ツール +生成された SQL: SELECT * FROM customer +結果: 列と値を含む顧客データが表示されます +``` + +**データクエリ (CRUD モード):** + +```markdown +ユーザー: "customer テーブルからすべてのユーザーを表示して" +🤖 LLM が自動的に使用: scalardb_scan ツール +結果: 列と値を含む顧客データが表示されます +``` + +**データベース構造の作成 (CRUD モード):** + +```markdown +ユーザー: "id、name、price 列を持つ products という新しいテーブルを作成して" +🤖 LLM が自動的に使用: scalardb_create_table ツール +結果: ✅ テーブル 'products' が正常に作成されました +``` + +**クロスデータベース操作 (マルチストレージ):** + +```markdown +ユーザー: "ユーザー ID 123 のユーザープロファイルと注文履歴を取得して" +🤖 LLM が自動的に使用: scalardb_get ツール (複数のデータベースにまたがってクエリ) +結果: 結合されたユーザープロファイル (PostgreSQL から) と注文履歴 (DynamoDB から) +``` + +LLM はリクエストに基づいて適切なツールを自動的に選択します。特定のツールが存在することや使用方法を知る必要はありません。 + +## チュートリアル + +以下の設定サンプルは、[マルチストレージトランザクションサンプル](../scalardb-samples/multi-storage-transaction-sample/README.mdx)と同じ Cassandra と MySQL のマルチストレージ設定を使用します。そのハンズオンチュートリアルに従ってデータベースを設定し、このチュートリアルで MCP サーバーをテストするために同じ設定を使用できます。 + +設定は、特定の MCP クライアントとデータベース環境によって異なる場合があります。MCP サーバーへの接続を追加する方法の詳細なセットアップ手順については、MCP クライアントのドキュメントを参照してください。 + +### セットアップ + +ScalarDB MCP Server をセットアップするには、以下の手順に従ってください。 + +#### 前提条件 + +以下が整っていることを確認してください: + +- (JAR 配布用) Java Runtime Environment: + - Oracle JDK: 17 または 21 + - OpenJDK (Eclipse Temurin、Amazon Corretto、または Microsoft Build of OpenJDK): 17 または 21 +- (Docker 配布用) Docker 20.10 以降 +- (このチュートリアルの例用) Cassandra と MySQL データベースが稼働していること +- (SQL モード用) ScalarDB Cluster も稼働していること +- MCP 対応クライアント (Claude Desktop、Cline 付き Visual Studio Code など) + +#### ステップ 1: MCP クライアントタイプの選択 + +MCP クライアントに合った設定方法を選択してください。Claude Code CLI またはコマンドライン MCP サーバー管理をサポートする類似ツールを使用している場合は、**CLI ツール** を選択してください。Claude Desktop または手動 JSON 設定ファイルが必要な他のクライアントを使用している場合は、**手動設定ファイル** を選択してください。 + + + + コマンドライン サーバー管理機能を持つ MCP クライアント (例: Claude Code CLI) 用。 + + #### ステップ 2: 配布方法の選択 + + + + Docker イメージをプル: + + ```bash + docker pull ghcr.io/scalar-labs/scalardb-mcp-server:0.9.0 + ``` + + #### ステップ 3: ScalarDB デプロイメントタイプの選択 + + + + 以下のコマンドを実行して MCP サーバーを追加: + + ```bash + claude mcp add scalardb -- docker run --rm -i \ + --name scalardb-mcp-server \ + ghcr.io/scalar-labs/scalardb-mcp-server:0.9.0 \ + --scalar.mcp.db.server.tool.mode=SQL \ + --scalar.db.transaction_manager=cluster \ + --scalar.db.contact_points=indirect:host.docker.internal \ + --scalar.db.contact_port=60053 + ``` + + この設定は SQL モードを使用し、より効率的な単一ツールアプローチを提供するため、ScalarDB Cluster に推奨されます。 + +:::note + +**ScalarDB Cluster 設定** + +上記の設定は、MCP サーバーがクライアントとして ScalarDB Cluster に接続する方法を示しています。ScalarDB Cluster 自体は別途設定する必要があります。 + +例えば、マルチストレージサポート付きの ScalarDB Cluster 設定には以下が含まれます: + +```properties +scalar.db.transaction_manager=consensus-commit +scalar.db.storage=multi-storage +scalar.db.multi_storage.storages=cassandra,mysql +scalar.db.multi_storage.storages.cassandra.storage=cassandra +scalar.db.multi_storage.storages.cassandra.contact_points=localhost +scalar.db.multi_storage.storages.cassandra.username=cassandra +scalar.db.multi_storage.storages.cassandra.password=cassandra +scalar.db.multi_storage.storages.mysql.storage=jdbc +scalar.db.multi_storage.storages.mysql.contact_points=jdbc:mysql://localhost:3306/ +scalar.db.multi_storage.storages.mysql.username=root +scalar.db.multi_storage.storages.mysql.password=mysql +scalar.db.multi_storage.namespace_mapping=customer:mysql,order:cassandra,coordinator:cassandra +scalar.db.multi_storage.default_storage=cassandra + +scalar.db.sql.enabled=true + +# ライセンスキー設定 +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +完全な ScalarDB Cluster デプロイメントと設定手順については、[ScalarDB Cluster 設定](../scalardb-cluster/scalardb-cluster-configurations.mdx)を参照してください。マルチストレージでのハンズオンセットアップガイドについては、[マルチストレージトランザクションサンプル](../scalardb-samples/multi-storage-transaction-sample/README.mdx)を参照してください。 + +::: + +:::important + +Docker オプション: + +- `--rm`: MCP クライアントが切断された後にコンテナを自動的に削除するために必要 +- `--name`: 浮遊コンテナインスタンスの蓄積を防ぐために必要 + +::: + + + 以下のコマンドを実行して MCP サーバーを追加: + + ```bash + claude mcp add scalardb -- docker run --rm -i \ + --name scalardb-mcp-server \ + ghcr.io/scalar-labs/scalardb-mcp-server:0.9.0 \ + --scalar.mcp.db.server.tool.mode=CRUD \ + --scalar.db.transaction_manager=consensus-commit \ + --scalar.db.storage=multi-storage \ + --scalar.db.multi_storage.storages=cassandra,mysql \ + --scalar.db.multi_storage.storages.cassandra.storage=cassandra \ + --scalar.db.multi_storage.storages.cassandra.contact_points=host.docker.internal \ + --scalar.db.multi_storage.storages.cassandra.username=cassandra \ + --scalar.db.multi_storage.storages.cassandra.password=cassandra \ + --scalar.db.multi_storage.storages.mysql.storage=jdbc \ + --scalar.db.multi_storage.storages.mysql.contact_points=jdbc:mysql://host.docker.internal:3306/ \ + --scalar.db.multi_storage.storages.mysql.username=root \ + --scalar.db.multi_storage.storages.mysql.password=mysql \ + --scalar.db.multi_storage.namespace_mapping=customer:mysql,order:cassandra,coordinator:cassandra \ + --scalar.db.multi_storage.default_storage=cassandra + ``` + + この設定は CRUD モードを使用し、SQL インターフェースが含まれていないため、ScalarDB Core に必要です。 + +:::note + +上記の例では、マルチストレージ設定を示しています。その他の ScalarDB Core 設定オプションについては、[ScalarDB 設定](../configurations.mdx)を参照してください。 + +::: + +:::important + +Docker オプション: + +- `--rm`: MCP クライアントが切断された後にコンテナを自動的に削除するために必要 +- `--name`: 浮遊コンテナインスタンスの蓄積を防ぐために必要 + +::: + + + + + [ScalarDB MCP Server リリースページ](https://github.com/scalar-labs/scalardb-mcp-server/releases/latest) から最新の JAR ファイルをダウンロードしてください。 + + #### ステップ 3: ScalarDB デプロイメントタイプの選択 + + + + 以下のコマンドを実行して MCP サーバーを追加: + + ```bash + claude mcp add scalardb \ + -- java -jar /path/to/scalardb-mcp-server-0.9.0.jar \ + --scalar.mcp.db.server.tool.mode=SQL \ + --scalar.db.transaction_manager=cluster \ + --scalar.db.contact_points=indirect:localhost \ + --scalar.db.contact_port=60053 + ``` + + この設定は SQL モードを使用し、より効率的な単一ツールアプローチを提供するため、ScalarDB Cluster に推奨されます。 + +:::note + +**ScalarDB Cluster 設定** + +上記の設定は、MCP サーバーがクライアントとして ScalarDB Cluster に接続する方法を示しています。ScalarDB Cluster 自体は別途設定する必要があります。 + +例えば、マルチストレージサポート付きの ScalarDB Cluster 設定には以下が含まれます: + +```properties +scalar.db.transaction_manager=consensus-commit +scalar.db.storage=multi-storage +scalar.db.multi_storage.storages=cassandra,mysql +scalar.db.multi_storage.storages.cassandra.storage=cassandra +scalar.db.multi_storage.storages.cassandra.contact_points=localhost +scalar.db.multi_storage.storages.cassandra.username=cassandra +scalar.db.multi_storage.storages.cassandra.password=cassandra +scalar.db.multi_storage.storages.mysql.storage=jdbc +scalar.db.multi_storage.storages.mysql.contact_points=jdbc:mysql://localhost:3306/ +scalar.db.multi_storage.storages.mysql.username=root +scalar.db.multi_storage.storages.mysql.password=mysql +scalar.db.multi_storage.namespace_mapping=customer:mysql,order:cassandra,coordinator:cassandra +scalar.db.multi_storage.default_storage=cassandra + +scalar.db.sql.enabled=true + +# ライセンスキー設定 +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +完全な ScalarDB Cluster デプロイメントと設定手順については、[ScalarDB Cluster 設定](../scalardb-cluster/scalardb-cluster-configurations.mdx)を参照してください。マルチストレージでのハンズオンセットアップガイドについては、[マルチストレージトランザクションサンプル](../scalardb-samples/multi-storage-transaction-sample/README.mdx)を参照してください。 + +::: + + + 以下のコマンドを実行して MCP サーバーを追加: + + ```bash + claude mcp add scalardb \ + -- java -jar /path/to/scalardb-mcp-server-0.9.0.jar \ + --scalar.mcp.db.server.tool.mode=CRUD \ + --scalar.db.transaction_manager=consensus-commit \ + --scalar.db.storage=multi-storage \ + --scalar.db.multi_storage.storages=cassandra,mysql \ + --scalar.db.multi_storage.storages.cassandra.storage=cassandra \ + --scalar.db.multi_storage.storages.cassandra.contact_points=localhost \ + --scalar.db.multi_storage.storages.cassandra.username=cassandra \ + --scalar.db.multi_storage.storages.cassandra.password=cassandra \ + --scalar.db.multi_storage.storages.mysql.storage=jdbc \ + --scalar.db.multi_storage.storages.mysql.contact_points=jdbc:mysql://localhost:3306/ \ + --scalar.db.multi_storage.storages.mysql.username=root \ + --scalar.db.multi_storage.storages.mysql.password=mysql \ + --scalar.db.multi_storage.namespace_mapping=customer:mysql,order:cassandra,coordinator:cassandra \ + --scalar.db.multi_storage.default_storage=cassandra + ``` + + この設定は CRUD モードを使用し、SQL インターフェースが含まれていないため、ScalarDB Core に必要です。 + +:::note + +上記の例では、マルチストレージ設定を示しています。その他の ScalarDB Core 設定オプションについては、[ScalarDB 設定](../configurations.mdx)を参照してください。 + +::: + + + + + + + 以下の例では Claude Desktop の設定形式を使用していますが、ほとんどの MCP クライアントは同じ JSON 構造を使用します。正確な設定ファイルの場所については、特定のクライアントのドキュメントを参照してください。 + + #### ステップ 2: 配布方法の選択 + + + + Docker イメージをプル: + + ```bash + docker pull ghcr.io/scalar-labs/scalardb-mcp-server:0.9.0 + ``` + + #### ステップ 3: ScalarDB デプロイメントタイプの選択 + + + + MCP クライアント設定ファイルに以下を追加: + + ```json + { + "mcpServers": { + "scalardb": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "--name", "scalardb-mcp-server", + "ghcr.io/scalar-labs/scalardb-mcp-server:0.9.0", + "--scalar.db.transaction_manager=cluster", + "--scalar.db.contact_points=indirect:host.docker.internal", + "--scalar.db.contact_port=60053", + "--scalar.mcp.db.server.tool.mode=SQL" + ] + } + } + } + ``` + + この設定は SQL モードを使用し、より効率的な単一ツールアプローチを提供するため、ScalarDB Cluster に推奨されます。 + +:::note + +**ScalarDB Cluster 設定** + +上記の設定は、MCP サーバーがクライアントとして ScalarDB Cluster に接続する方法を示しています。ScalarDB Cluster 自体は別途設定する必要があります。 + +例えば、マルチストレージサポート付きの ScalarDB Cluster 設定には以下が含まれます: + +```properties +scalar.db.transaction_manager=consensus-commit +scalar.db.storage=multi-storage +scalar.db.multi_storage.storages=cassandra,mysql +scalar.db.multi_storage.storages.cassandra.storage=cassandra +scalar.db.multi_storage.storages.cassandra.contact_points=localhost +scalar.db.multi_storage.storages.cassandra.username=cassandra +scalar.db.multi_storage.storages.cassandra.password=cassandra +scalar.db.multi_storage.storages.mysql.storage=jdbc +scalar.db.multi_storage.storages.mysql.contact_points=jdbc:mysql://localhost:3306/ +scalar.db.multi_storage.storages.mysql.username=root +scalar.db.multi_storage.storages.mysql.password=mysql +scalar.db.multi_storage.namespace_mapping=customer:mysql,order:cassandra,coordinator:cassandra +scalar.db.multi_storage.default_storage=cassandra + +scalar.db.sql.enabled=true + +# ライセンスキー設定 +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +完全な ScalarDB Cluster デプロイメントと設定手順については、[ScalarDB Cluster 設定](../scalardb-cluster/scalardb-cluster-configurations.mdx)を参照してください。マルチストレージでのハンズオンセットアップガイドについては、[マルチストレージトランザクションサンプル](../scalardb-samples/multi-storage-transaction-sample/README.mdx)を参照してください。 + +::: + +:::important + +**Docker オプション** + +- `--rm`: MCP クライアントが切断された後にコンテナを自動的に削除するために必要 +- `--name`: 浮遊コンテナインスタンスの蓄積を防ぐために必要 + +::: + + + MCP クライアント設定ファイルに以下を追加: + + ```json + { + "mcpServers": { + "scalardb": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "--name", "scalardb-mcp-server", + "ghcr.io/scalar-labs/scalardb-mcp-server:0.9.0", + "--scalar.mcp.db.server.tool.mode=CRUD", + "--scalar.db.transaction_manager=consensus-commit", + "--scalar.db.storage=multi-storage", + "--scalar.db.multi_storage.storages=cassandra,mysql", + "--scalar.db.multi_storage.storages.cassandra.storage=cassandra", + "--scalar.db.multi_storage.storages.cassandra.contact_points=host.docker.internal", + "--scalar.db.multi_storage.storages.cassandra.username=cassandra", + "--scalar.db.multi_storage.storages.cassandra.password=cassandra", + "--scalar.db.multi_storage.storages.mysql.storage=jdbc", + "--scalar.db.multi_storage.storages.mysql.contact_points=jdbc:mysql://host.docker.internal:3306/", + "--scalar.db.multi_storage.storages.mysql.username=root", + "--scalar.db.multi_storage.storages.mysql.password=mysql", + "--scalar.db.multi_storage.namespace_mapping=customer:mysql,order:cassandra,coordinator:cassandra", + "--scalar.db.multi_storage.default_storage=cassandra" + ] + } + } + } + ``` + + この設定は CRUD モードを使用し、SQL インターフェースが含まれていないため、ScalarDB Core に必要です。 + +:::note + +上記の例では、マルチストレージ設定を示しています。その他の ScalarDB Core 設定オプションについては、[ScalarDB 設定](../configurations.mdx)を参照してください。 + +::: + +:::important + +**Docker オプション** + +- `--rm`: MCP クライアントが切断された後にコンテナを自動的に削除するために必要 +- `--name`: 浮遊コンテナインスタンスの蓄積を防ぐために必要 + +::: + + + + + [ScalarDB MCP Server リリースページ](https://github.com/scalar-labs/scalardb-mcp-server/releases/latest) から最新の JAR ファイルをダウンロードしてください。 + + #### ステップ 3: ScalarDB デプロイメントタイプの選択 + + + + MCP クライアント設定ファイルに以下を追加: + + ```json + { + "mcpServers": { + "scalardb": { + "command": "java", + "args": [ + "-jar", + "/path/to/scalardb-mcp-server-0.9.0.jar", + "--scalar.mcp.db.server.tool.mode=SQL", + "--scalar.db.transaction_manager=cluster", + "--scalar.db.contact_points=indirect:localhost", + "--scalar.db.contact_port=60053" + ], + } + } + } + ``` + + この設定は SQL モードを使用し、より効率的な単一ツールアプローチを提供するため、ScalarDB Cluster に推奨されます。 + +:::note + +**ScalarDB Cluster 設定** + +上記の設定は、MCP サーバーがクライアントとして ScalarDB Cluster に接続する方法を示しています。ScalarDB Cluster 自体は別途設定する必要があります。 + +例えば、マルチストレージサポート付きの ScalarDB Cluster 設定には以下が含まれます: + +```properties +scalar.db.transaction_manager=consensus-commit +scalar.db.storage=multi-storage +scalar.db.multi_storage.storages=cassandra,mysql +scalar.db.multi_storage.storages.cassandra.storage=cassandra +scalar.db.multi_storage.storages.cassandra.contact_points=localhost +scalar.db.multi_storage.storages.cassandra.username=cassandra +scalar.db.multi_storage.storages.cassandra.password=cassandra +scalar.db.multi_storage.storages.mysql.storage=jdbc +scalar.db.multi_storage.storages.mysql.contact_points=jdbc:mysql://localhost:3306/ +scalar.db.multi_storage.storages.mysql.username=root +scalar.db.multi_storage.storages.mysql.password=mysql +scalar.db.multi_storage.namespace_mapping=customer:mysql,order:cassandra,coordinator:cassandra +scalar.db.multi_storage.default_storage=cassandra + +scalar.db.sql.enabled=true + +# ライセンスキー設定 +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +完全な ScalarDB Cluster デプロイメントと設定手順については、[ScalarDB Cluster 設定](../scalardb-cluster/scalardb-cluster-configurations.mdx)を参照してください。マルチストレージでのハンズオンセットアップガイドについては、[マルチストレージトランザクションサンプル](../scalardb-samples/multi-storage-transaction-sample/README.mdx)を参照してください。 + +::: + + + MCP クライアント設定ファイルに以下を追加: + + ```json + { + "mcpServers": { + "scalardb": { + "command": "java", + "args": [ + "-jar", + "/path/to/scalardb-mcp-server-0.9.0.jar", + "--scalar.mcp.db.server.tool.mode=CRUD", + "--scalar.db.transaction_manager=consensus-commit", + "--scalar.db.storage=multi-storage", + "--scalar.db.multi_storage.storages=cassandra,mysql", + "--scalar.db.multi_storage.storages.cassandra.storage=cassandra", + "--scalar.db.multi_storage.storages.cassandra.contact_points=localhost", + "--scalar.db.multi_storage.storages.cassandra.username=cassandra", + "--scalar.db.multi_storage.storages.cassandra.password=cassandra", + "--scalar.db.multi_storage.storages.mysql.storage=jdbc", + "--scalar.db.multi_storage.storages.mysql.contact_points=jdbc:mysql://localhost:3306/", + "--scalar.db.multi_storage.storages.mysql.username=root", + "--scalar.db.multi_storage.storages.mysql.password=mysql", + "--scalar.db.multi_storage.namespace_mapping=customer:mysql,order:cassandra,coordinator:cassandra", + "--scalar.db.multi_storage.default_storage=cassandra" + ] + } + } + } + ``` + + この設定は CRUD モードを使用し、SQL インターフェースが含まれていないため、ScalarDB Core に必要です。 + +:::note + +上記の例では、マルチストレージ設定を示しています。その他の ScalarDB Core 設定オプションについては、[ScalarDB 設定](../configurations.mdx)を参照してください。 + +::: + + + + + + + +### ScalarDB MCP Server 設定 + +サーバー起動時に小文字のドット記法でコマンドライン引数を提供することで、MCP サーバーを設定します。 + +#### ScalarDB MCP Server 固有の設定 + +これらのプロパティは、ScalarDB MCP Server の動作を制御します: + +##### `scalar.mcp.db.server.tool.mode` + +- **プロパティ:** `scalar.mcp.db.server.tool.mode` +- **説明:** ツール可用性モード。 +- **デフォルト値:** `CRUD` +- **オプション:** `SQL`、`CRUD` + +##### `scalar.mcp.db.server.connection.health_check_interval_seconds` + +- **プロパティ:** `scalar.mcp.db.server.connection.health_check_interval_seconds` +- **説明:** ヘルスチェック間隔 (秒)。 +- **デフォルト値:** `30` +- **オプション:** 任意の正の整数値 + +##### `scalar.mcp.db.server.logging.file.name` + +- **プロパティ:** `scalar.mcp.db.server.logging.file.name` +- **説明:** ログファイルパスを指定してファイルロギングを有効にする。 +- **デフォルト値:** ファイルロギングなし +- **例:** `scalardb-mcp-server.log` + +##### `scalar.mcp.db.server.logging.level` + +- **プロパティ:** `scalar.mcp.db.server.logging.level` +- **説明:** MCP サーバーのロガーレベルを設定する。 +- **デフォルト値:** `INFO` +- **オプション:** `TRACE`、`DEBUG`、`INFO`、`WARN`、`ERROR` + +#### ScalarDB 接続設定 + +MCP サーバーは、ScalarDB デプロイメント (ScalarDB Cluster または ScalarDB Core) に接続するために ScalarDB クライアント設定プロパティを使用します。これらのプロパティは、小文字のドット記法でコマンドライン引数として渡されます。両方の接続タイプの完全な設定例については、上記のセットアップ例を参照してください。 + +## 使用可能なツール + +ScalarDB MCP Server は、専門的な MCP ツールを通じて包括的なデータベース操作を提供します。LLM は、自然言語リクエストに基づいて適切なツールを自動的に選択して使用します。 + +すべての使用可能な操作、パラメータ、例を含む完全なツールドキュメントについては、[ScalarDB MCP Server ツールリファレンス](./tools-reference.mdx)を参照してください。 + +## ScalarDB バージョン互換性 + +| ScalarDB MCP Server | ScalarDB Core | ScalarDB Cluster | Java バージョン | 備考 | +|-------------------|-------------------|------------------|--------------|--------| +| 0.9.x | 3.16+ | 3.16+ | 17+ | 初回リリース | diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-mcp-server/tools-reference.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-mcp-server/tools-reference.mdx new file mode 100644 index 00000000..4c3a7f70 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-mcp-server/tools-reference.mdx @@ -0,0 +1,102 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB MCP Server ツールリファレンス + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB MCP Server は、20以上の専門的な MCP ツールを通じて包括的なデータベース操作を提供します。自然言語を使用して LLM と対話でき、LLM が自動的に適切なツールを選択して使用し、リクエストを満たします。これらのツールを理解することで、LLM があなたの代わりに実行できるデータベース操作を知ることができます。 + +## 接続ツール + +ScalarDB 接続ステータスと設定を監視および確認します。以下のツールは CRUD と SQL の両方のモードで使用できます。 + +| ツール | 説明 | +|------|-------------| +| `scalardb_connection_info` | 現在の接続ステータス、設定詳細、ヘルスチェック結果を取得。 | + +## スキーマ管理ツール + +ネームスペース、テーブル、インデックスを含むデータベース構造を作成、変更、検査します。以下のツールは CRUD モードで使用できます。 + +| ツール | 説明 | +|------|-------------| +| `scalardb_create_namespace` | テーブルを整理するための新しいネームスペース/キースペースを作成。 | +| `scalardb_drop_namespace` | 既存のネームスペースとそのすべてのテーブルを削除。 | +| `scalardb_list_namespaces` | データベース内の利用可能なすべてのネームスペースをリスト。 | +| `scalardb_create_table` | パーティションキー、クラスタリングキー、列を含む完全なスキーマ定義で新しいテーブルを作成。 | +| `scalardb_drop_table` | 既存のテーブルとそのすべてのデータを削除。 | +| `scalardb_truncate_table` | スキーマを保持したままテーブルからすべてのデータを削除。 | +| `scalardb_describe_table` | 列、キー、メタデータを含む詳細なテーブルスキーマを取得。 | +| `scalardb_list_tables` | 特定のネームスペース内のすべてのテーブルをリスト。 | +| `scalardb_add_new_column` | 既存のテーブルスキーマに新しい列を追加。 | +| `scalardb_create_index` | より高速なクエリのためにテーブル列にセカンダリインデックスを作成。 | +| `scalardb_drop_index` | 既存のセカンダリインデックスを削除。 | + +## CRUD 操作ツール + +細かい制御と型安全性のために ScalarDB Java Client SDK を使用してデータ操作操作を実行します。以下のツールは CRUD モードで使用できます。 + +| ツール | 説明 | +|------|-------------| +| `scalardb_get` | パーティションキー、クラスタリングキー、またはセカンダリインデックスを使用して特定のレコードを取得。 | +| `scalardb_scan` | 柔軟なフィルタリング、順序付け、ページネーション機能でレコードをスキャン。 | +| `scalardb_insert` | 自動競合検出で新しいレコードを挿入。 | +| `scalardb_update` | 条件付き操作で既存のレコードを更新。 | +| `scalardb_upsert` | 新しいレコードを挿入または既存のレコードを更新 (存在しない場合は挿入、存在する場合は更新)。 | +| `scalardb_delete` | プライマリキーまたは条件ロジックを使用してレコードを削除。 | + +## トランザクション管理ツール + +適切な分離と一貫性保証で ScalarDB Java Client SDK を使用して ACID トランザクションを制御します。CRUD モードで使用できます。 + +| ツール | 説明 | +|------|-------------| +| `scalardb_begin_transaction` | ACID 保証付きの新しい読み書きトランザクションを開始。 | +| `scalardb_begin_readonly_transaction` | クエリ用に最適化された読み取り専用トランザクションを開始。 | +| `scalardb_commit_transaction` | トランザクションをコミットし、すべての変更を永続化。 | +| `scalardb_rollback_transaction` | トランザクションをロールバックし、すべての変更を元に戻す。 | + +## SQL ツール (ScalarDB Cluster のみ) + +ScalarDB SQL インターフェースを通じて SQL コマンドを直接実行します。以下のツールは SQL モードで使用できます。 + +| ツール | 説明 | +|------|-------------| +| `scalardb_execute_sql` | 完全な SQL 構文サポートで SQL クエリを直接実行 (`SELECT`、`INSERT`、`UPDATE`、`DELETE`)。 | + +## コーディネータツール + +マルチデータベース一貫性のための分散トランザクションコーディネータテーブルを管理します。これらのツールは CRUD モードで使用できます。 + +| ツール | 説明 | +|------|-------------| +| `scalardb_create_coordinator_tables` | 分散トランザクションに必要なコーディネータテーブルを作成。 | +| `scalardb_drop_coordinator_tables` | 不要になったコーディネータテーブルを削除。 | +| `scalardb_truncate_coordinator_tables` | 構造を保持したままコーディネータテーブルをクリア。 | + +## モード別ツール可用性 + +選択した操作モードに応じて、異なるツールが使用できます。 + +### SQL モード + +- **接続ツール:** 接続ステータスとヘルスを監視。 +- **SQL ツール:** ScalarDB SQL インターフェースを通じて SQL クエリを直接実行。 +- **使用例:** SQL 構文を使用する場合の ScalarDB Cluster デプロイメントに最適。 + +### CRUD モード + +- **接続ツール:** 接続ステータスとヘルスを監視。 +- **スキーマ管理ツール:** ネームスペース、テーブル、インデックスを作成および管理。 +- **CRUD 操作ツール:** ScalarDB Java Client SDK でデータ操作を実行。 +- **トランザクション管理ツール:** プログラム的に ACID トランザクションを制御。 +- **コーディネータツール:** 分散トランザクション調整を管理。 +- **使用例:** ScalarDB Core に必要。 From 496808bbf4105c19aacb1210f2131fb824027ab8 Mon Sep 17 00:00:00 2001 From: Josh Wong <23216828+josh-wong@users.noreply.github.com> Date: Tue, 21 Oct 2025 17:37:24 +0900 Subject: [PATCH 2/5] Add ScalarDB MCP Server docs in Japanese --- sidebars.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sidebars.js b/sidebars.js index 160be9bf..5a2cd633 100644 --- a/sidebars.js +++ b/sidebars.js @@ -1589,6 +1589,23 @@ const sidebars = { }, ], }, + { + type: 'category', + label: 'ScalarDB MCP Server', + collapsible: true, + items: [ + { + type: 'doc', + id: 'scalardb-mcp-server/getting-started-with-scalardb-mcp-server', + label: 'ScalarDB MCP Server を使用', + }, + { + type: 'doc', + id: 'scalardb-mcp-server/tools-reference', + label: 'ScalarDB MCP Server ツールリファレンス', + }, + ], + }, ], }, ], From 3d9ce8bfb4cf270acb058b47476c765c5538d9b5 Mon Sep 17 00:00:00 2001 From: Josh Wong <23216828+josh-wong@users.noreply.github.com> Date: Tue, 21 Oct 2025 18:38:13 +0900 Subject: [PATCH 3/5] Add ScalarDB MCP Server doc; remove ABAC doc --- src/components/Cards/ja-jp/3.16.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/Cards/ja-jp/3.16.tsx b/src/components/Cards/ja-jp/3.16.tsx index 8c09f3e1..7fbc1bc9 100644 --- a/src/components/Cards/ja-jp/3.16.tsx +++ b/src/components/Cards/ja-jp/3.16.tsx @@ -30,13 +30,13 @@ const recentFeatures = [ }, { cell: 1, // Second cell - links: ['scalardb-cluster/getting-started-with-vector-search'], - labels: ['ScalarDB Cluster でベクトル検索をはじめよう'] + links: ['scalardb-mcp-server/getting-started-with-scalardb-mcp-server'], + labels: ['ScalarDB MCP Server をはじめよう'] }, { cell: 2, // Third cell - links: ['scalardb-cluster/authorize-with-abac'], - labels: ['ユーザーアクセスをきめ細かく制御する'] + links: ['scalardb-cluster/getting-started-with-vector-search'], + labels: ['ScalarDB Cluster でベクトル検索をはじめよう'] } ] } From 3da3fac818c7ac7884ba02c9e3b5bb0b5c80037a Mon Sep 17 00:00:00 2001 From: Josh Wong <23216828+josh-wong@users.noreply.github.com> Date: Tue, 21 Oct 2025 18:38:21 +0900 Subject: [PATCH 4/5] Add ScalarDB MCP Server doc; remove encryption doc --- src/components/Cards/3.16.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/Cards/3.16.tsx b/src/components/Cards/3.16.tsx index 754266b2..ed217c45 100644 --- a/src/components/Cards/3.16.tsx +++ b/src/components/Cards/3.16.tsx @@ -30,13 +30,13 @@ const recentFeatures = [ }, { cell: 1, // Second cell - links: ['scalardb-cluster/getting-started-with-vector-search'], - labels: ['Getting Started with ScalarDB Cluster for Vector Search'] + links: ['scalardb-mcp-server/getting-started-with-scalardb-mcp-server'], + labels: ['Getting Started with ScalarDB MCP Server'] }, { cell: 2, // Third cell - links: ['scalardb-cluster/encrypt-data-at-rest'], - labels: ['Encrypt Data at Rest'] + links: ['scalardb-cluster/getting-started-with-vector-search'], + labels: ['Getting Started with ScalarDB Cluster for Vector Search'] } ] } From 86eeecda9d21240599b1efa0e1c390d05fb6c62e Mon Sep 17 00:00:00 2001 From: Josh Wong <23216828+josh-wong@users.noreply.github.com> Date: Tue, 21 Oct 2025 18:39:17 +0900 Subject: [PATCH 5/5] Add MCP Server doc; remove ABAC and Db2 support doc --- src/data/notifications.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/data/notifications.js b/src/data/notifications.js index 757e34ad..a8ad97ef 100644 --- a/src/data/notifications.js +++ b/src/data/notifications.js @@ -14,23 +14,23 @@ const notificationsList = [ // }, { message: { - en: 'Replicate data for high availability in ScalarDB 3.16', - ja: 'ScalarDB 3.16 でのデータの高可用性のためのレプリケーション' + en: 'Query databases by using natural language with ScalarDB MCP Server', + ja: 'ScalarDB MCP Server を使用して自然言語でデータベースをクエリする' }, url: { - en: 'scalardb-cluster/remote-replication?utm_source=docs-site&utm_medium=notifications', - ja: 'scalardb-cluster/remote-replication?utm_source=docs-site&utm_medium=notifications' + en: 'scalardb-mcp-server/getting-started-with-scalardb-mcp-server?utm_source=docs-site&utm_medium=notifications', + ja: 'scalardb-mcp-server/getting-started-with-scalardb-mcp-server?utm_source=docs-site&utm_medium=notifications' }, unread: true }, { message: { - en: 'Support for IBM Db2 has been added in ScalarDB 3.16', - ja: 'ScalarDB 3.15 できめ細かなユーザーアクセス制御のサポートが追加されました' + en: 'Replicate data for high availability in ScalarDB 3.16', + ja: 'ScalarDB 3.16 で高可用性のためのデータレプリケーションを行う' }, url: { - en: 'requirements?RDBs=Db2#relational-databases?utm_source=docs-site&utm_medium=notifications', - ja: 'scalardb-cluster/getting-started-with-vector-search?RDBs=Db2#リレーショナルデータベース?utm_source=docs-site&utm_medium=notifications' + en: 'scalardb-cluster/remote-replication?utm_source=docs-site&utm_medium=notifications', + ja: 'scalardb-cluster/remote-replication?utm_source=docs-site&utm_medium=notifications' }, unread: true },