From 4f83879fe33faa75d220eda5258ecbc582043470 Mon Sep 17 00:00:00 2001 From: josh-wong Date: Wed, 8 Oct 2025 00:58:19 +0000 Subject: [PATCH 1/2] AUTO: Sync ScalarDB docs in English to docs site repo --- .../scalardb-mcp-server-architecture.png | Bin 0 -> 132273 bytes ...tting-started-with-scalardb-mcp-server.mdx | 627 ++++++++++++++++++ docs/scalardb-mcp-server/tools-reference.mdx | 98 +++ 3 files changed, 725 insertions(+) create mode 100644 docs/images/scalardb-mcp-server-architecture.png create mode 100644 docs/scalardb-mcp-server/getting-started-with-scalardb-mcp-server.mdx create mode 100644 docs/scalardb-mcp-server/tools-reference.mdx diff --git a/docs/images/scalardb-mcp-server-architecture.png b/docs/images/scalardb-mcp-server-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..0c7cd0ca644a5e9ded541d40188013bb41849661 GIT binary patch literal 132273 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 =yE7!q>7w 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 literal 0 HcmV?d00001 diff --git a/docs/scalardb-mcp-server/getting-started-with-scalardb-mcp-server.mdx b/docs/scalardb-mcp-server/getting-started-with-scalardb-mcp-server.mdx new file mode 100644 index 00000000..985f42fe --- /dev/null +++ b/docs/scalardb-mcp-server/getting-started-with-scalardb-mcp-server.mdx @@ -0,0 +1,627 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsEnglish +--- + +# Getting Started with ScalarDB MCP Server + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +ScalarDB MCP Server is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) implementation that enables LLMs to access and manage your data through ScalarDB. By leveraging LLMs, you can use natural language to search and update across multiple, potentially siloed, databases. + +ScalarDB MCP Server works with both single and multiple storage configurations. Unlike traditional approaches that require separate MCP servers for each database, ScalarDB MCP Server takes advantage of the [multi-storage capabilities of ScalarDB](../multi-storage-transactions.mdx) to provide unified access to heterogeneous databases (PostgreSQL, MySQL, Cosmos DB, DynamoDB, etc.) through a single MCP server. By simply submitting queries in natural language, the server automatically executes the appropriate operations across your databases, improving and accelerating decision-making processes. + +## Architecture and key features + +The following diagram shows how ScalarDB MCP Server differs from traditional approaches. Instead of requiring separate MCP servers for each database, you connect once to ScalarDB MCP Server to access all your databases through ScalarDB. + +![ScalarDB MCP server architecture](../images/scalardb-mcp-server-architecture.png) + +At its core, ScalarDB MCP Server provides the following capabilities. + +### ScalarDB connectivity + +The MCP server connects to your ScalarDB deployment (either ScalarDB Cluster or ScalarDB direct-to-database mode) and handles all technical complexity while providing AI assistants with simple, standardized tools. + +### Transactional operations + +ScalarDB MCP Server supports ACID-compliant transactions, allowing an LLM to execute multiple operations safely. When the LLM determines that operations should be grouped together, the MCP server ensures the operations either all succeed or all fail together, maintaining data integrity across your databases. + +### Operational mode + +ScalarDB MCP Server supports two operational modes that match your ScalarDB deployment type: SQL mode and CRUD mode. + +#### SQL mode + +SQL mode with ScalarDB Cluster provides a SQL interface for database operations. When you make natural language requests, the LLM automatically generates and executes SQL commands through the supported SQL operations in ScalarDB and handles transactions by using standard SQL syntax (`BEGIN`, `COMMIT`, `ROLLBACK`). This mode could be more efficient because the LLM only needs to use one tool to perform all operations. + +#### CRUD mode + +CRUD mode with ScalarDB Core is for when you prefer programmatic control over your operations. Since ScalarDB Core doesn't include the SQL interface, this mode uses the native SDK operations in ScalarDB instead. The LLM converts your natural language requests into appropriate SDK calls by using individual tools for schema management, CRUD operations, and explicit transaction control. This mode could be less efficient because the LLM has to work with multiple tools to complete operations. + +### Deployment limitations + +:::note + +The ScalarDB MCP Server currently runs in STDIO mode for local deployment only. Remote server deployment via Server-Sent Events (SSE) is not yet supported but is planned for future releases. + +**What this means:** + +- ✅ The MCP server runs locally alongside your AI client (Claude Desktop, Visual Studio Code, etc.). +- ✅ Perfect for development, testing, and single-user scenarios. +- ❌ Cannot deploy the MCP server on remote servers for multi-user access. +- ❌ No web-based or cloud deployment options yet. + +::: + +## Example workflow + +Here's how you interact with ScalarDB MCP Server through natural language: + +**Querying data (SQL mode):** + +```markdown +You: "Show me all users from the customer table" +🤖 LLM automatically uses: scalardb_execute_sql tool +SQL generated: SELECT * FROM customer +Result: Customer data displayed with columns and values +``` + +**Querying data (CRUD mode):** + +```markdown +You: "Show me all users from the customer table" +🤖 LLM automatically uses: scalardb_scan tool +Result: Customer data displayed with columns and values +``` + +**Creating database structures (CRUD mode):** + +```markdown +You: "Create a new table called products with columns id, name, and price" +🤖 LLM automatically uses: scalardb_create_table tool +Result: ✅ Table 'products' created successfully +``` + +**Cross-database operations (multi-storage):** + +```markdown +You: "Get user profile and order history for user ID 123" +🤖 LLM automatically uses: scalardb_get tool (queries across multiple databases) +Result: Combined user profile (from PostgreSQL) and order history (from DynamoDB) +``` + +The LLM automatically selects the appropriate tools based on your request—you don't need to know which specific tools exist or how to use them. + +## Tutorial + +The following configuration samples use the same Cassandra and MySQL multi-storage configuration as our [Multi-Storage Transaction Sample](../scalardb-samples/multi-storage-transaction-sample/). You can follow that hands-on tutorial to set up your databases, then use the same setup to test the MCP server with this tutorial. + +Configurations may vary depending on your specific MCP client and database environment. Refer to your MCP client's documentation for detailed setup instructions on how to add a connection to an MCP server. + +### Setup + +Follow these steps to set up ScalarDB MCP Server. + +#### Prerequisites + +Ensure you have the following: + +- (For JAR distribution) Java Runtime Environment: + - Oracle JDK: 17 or 21 + - OpenJDK (Eclipse Temurin, Amazon Corretto, or Microsoft Build of OpenJDK): 17 or 21 +- (For Docker distribution) Docker 20.10 or later +- (For this tutorial's examples) Cassandra and MySQL databases must be running +- (For SQL mode) ScalarDB Cluster must also be running +- MCP-compatible client (Claude Desktop, Visual Studio Code with Cline, etc.) + +#### Step 1: Choose your MCP client type + +Select the configuration method that matches your MCP client. If you're using the Claude Code CLI or similar tools that support command-line MCP server management, choose **CLI tools**. If you're using Claude Desktop or other clients that require manual JSON configuration files, choose **Manual configuration files**. + + + + For MCP clients with command-line server management (for example, the Claude Code CLI). + + #### Step 2: Choose your distribution method + + + + Pull the Docker image: + + ```bash + docker pull ghcr.io/scalar-labs/scalardb-mcp-server:0.9.0 + ``` + + #### Step 3: Choose your ScalarDB deployment type + + + + Run the following command to add the MCP server: + + ```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 + ``` + + This configuration uses SQL mode, which is recommended for ScalarDB Cluster as it provides a more efficient single-tool approach. + +:::note + +**ScalarDB Cluster configuration** + +The configuration above shows how the MCP server connects to ScalarDB Cluster as a client. The ScalarDB Cluster itself must be separately configured. + +For example, your ScalarDB Cluster configuration with multi-storage support would include: + +```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 + +# License key configurations +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +For complete ScalarDB Cluster deployment and configuration instructions, see [ScalarDB Cluster Configurations](../scalardb-cluster/scalardb-cluster-configurations/). For a hands-on setup guide with multi-storage, see the [Multi-Storage Transaction Sample](../scalardb-samples/multi-storage-transaction-sample/). + +::: + +:::important + +Docker flags: + +- `--rm`: Required to automatically remove the container after the MCP client disconnects +- `--name`: Required to prevent dangling container instances from accumulating + +::: + + + Run the following command to add the MCP server: + + ```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 + ``` + + This configuration uses CRUD mode, which is required for ScalarDB Core as it doesn't include the SQL interface. + +:::note + +The example above demonstrates a multi-storage configuration. For other ScalarDB Core configuration options, see [ScalarDB Configurations](../configurations/). + +::: + +:::important + +Docker flags: + +- `--rm`: Required to automatically remove the container after the MCP client disconnects +- `--name`: Required to prevent ghost container instances from accumulating + +::: + + + + + Download the latest JAR file from the [ScalarDB MCP Server releases page](https://github.com/scalar-labs/scalardb-mcp-server/releases/latest). + + #### Step 3: Choose your ScalarDB deployment type + + + + Run the following command to add the MCP server: + + ```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=indirect:localhost \ + --scalar.db.contact_points=indirect:localhost \ + --scalar.db.contact_port=60053 + ``` + + This configuration uses SQL mode, which is recommended for ScalarDB Cluster as it provides a more efficient single-tool approach. + +:::note + +**ScalarDB Cluster configuration** + +The configuration above shows how the MCP server connects to ScalarDB Cluster as a client. The ScalarDB Cluster itself must be separately configured. + +For example, your ScalarDB Cluster configuration with multi-storage support would include: + +```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 + +# License key configurations +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +For complete ScalarDB Cluster deployment and configuration instructions, see [ScalarDB Cluster Configurations](../scalardb-cluster/scalardb-cluster-configurations/). For a hands-on setup guide with multi-storage, see the [Multi-Storage Transaction Sample](../scalardb-samples/multi-storage-transaction-sample/). + +::: + + + Run the following command to add the MCP server: + + ```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 + ``` + + This configuration uses CRUD mode, which is required for ScalarDB Core as it doesn't include the SQL interface. + +:::note + +The example above demonstrates a multi-storage configuration. For other ScalarDB Core configuration options, see [ScalarDB Configurations](../configurations/). + +::: + + + + + + + The examples below use the configuration format for Claude Desktop, but most MCP clients use the same JSON structure. Refer to your specific client's documentation for the exact configuration file location. + + #### Step 2: Choose your distribution method + + + + Pull the Docker image: + + ```bash + docker pull ghcr.io/scalar-labs/scalardb-mcp-server:0.9.0 + ``` + + #### Step 3: Choose your ScalarDB deployment type + + + + Add the following to your MCP client configuration file: + + ```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" + ] + } + } + } + ``` + + This configuration uses SQL mode, which is recommended for ScalarDB Cluster as it provides a more efficient single-tool approach. + +:::note + +**ScalarDB Cluster configuration** + +The configuration above shows how the MCP server connects to ScalarDB Cluster as a client. The ScalarDB Cluster itself must be separately configured. + +For example, your ScalarDB Cluster configuration with multi-storage support would include: + +```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 + +# License key configurations +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +For complete ScalarDB Cluster deployment and configuration instructions, see [ScalarDB Cluster Configurations](../scalardb-cluster/scalardb-cluster-configurations/). For a hands-on setup guide with multi-storage, see the [Multi-Storage Transaction Sample](../scalardb-samples/multi-storage-transaction-sample/). + +::: + +:::important + +**Docker flags** + +- `--rm`: Required to automatically remove the container after the MCP client disconnects +- `--name`: Required to prevent ghost container instances from accumulating + +::: + + + Add the following to your MCP client configuration file: + + ```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" + ] + } + } + } + ``` + + This configuration uses CRUD mode, which is required for ScalarDB Core as it doesn't include the SQL interface. + +:::note + +The example above demonstrates a multi-storage configuration. For other ScalarDB Core configuration options, see [ScalarDB Configurations](../configurations/). + +::: + +:::important + +**Docker flags** + +- `--rm`: Required to automatically remove the container after the MCP client disconnects +- `--name`: Required to prevent ghost container instances from accumulating + +::: + + + + + Download the latest JAR file from the [ScalarDB MCP Server releases page](https://github.com/scalar-labs/scalardb-mcp-server/releases/latest). + + #### Step 3: Choose your ScalarDB deployment type + + + + Add the following to your MCP client configuration file: + + ```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", + ], + } + } + } + ``` + + This configuration uses SQL mode, which is recommended for ScalarDB Cluster as it provides a more efficient single-tool approach. + +:::note + +**ScalarDB Cluster configuration** + +The configuration above shows how the MCP server connects to ScalarDB Cluster as a client. The ScalarDB Cluster itself must be separately configured. + +For example, your ScalarDB Cluster configuration with multi-storage support would include: + +```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 + +# License key configurations +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +For complete ScalarDB Cluster deployment and configuration instructions, see [ScalarDB Cluster Configurations](../scalardb-cluster/scalardb-cluster-configurations/). For a hands-on setup guide with multi-storage, see the [Multi-Storage Transaction Sample](../scalardb-samples/multi-storage-transaction-sample/). + +::: + + + Add the following to your MCP client configuration file: + + ```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" + ] + } + } + } + ``` + + This configuration uses CRUD mode, which is required for ScalarDB Core as it doesn't include the SQL interface. + +:::note + +The example above demonstrates a multi-storage configuration. For other ScalarDB Core configuration options, see [ScalarDB Configurations](../configurations/). + +::: + + + + + + + +### ScalarDB MCP Server configuration + +Configure the MCP server by providing command-line arguments with lowercase dot notations when starting the server. + +#### ScalarDB MCP Server–specific configuration + +These properties control how the ScalarDB MCP server operates: + +##### `scalar.mcp.db.server.tool.mode` + +- **Property:** `scalar.mcp.db.server.tool.mode` +- **Description:** Tool availability mode. +- **Default value:** `CRUD` +- **Options:** `SQL`, `CRUD` + +##### `scalar.mcp.db.server.connection.health_check_interval_seconds` + +- **Property:** `scalar.mcp.db.server.connection.health_check_interval_seconds` +- **Description:** Health check interval in seconds. +- **Default value:** `30` +- **Options:** Any positive integer value + +##### `scalar.mcp.db.server.logging.file.name` + +- **Property:** `scalar.mcp.db.server.logging.file.name` +- **Description:** Enable file logging by specifying a log file path. +- **Default value:** No file logging +- **Example:** `scalardb-mcp-server.log` + +##### `scalar.mcp.db.server.logging.level` + +- **Property:** `scalar.mcp.db.server.logging.level` +- **Description:** Set the logger level for the MCP server. +- **Default value:** `INFO` +- **Options:** `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR` + +#### ScalarDB connection configuration + +The MCP server uses ScalarDB client configuration properties to connect to your ScalarDB deployment (either ScalarDB Cluster or ScalarDB Core). These properties are passed as command-line arguments with lowercase dot notations. See the setup examples above for complete configuration examples for both connection types. + +## Available tools + +The ScalarDB MCP Server provides comprehensive database operations through specialized MCP tools. The LLM automatically selects and uses the appropriate tools based on your natural language requests. + +For complete tool documentation including all available operations, parameters, and examples, see the [ScalarDB MCP Server Tools Reference](./tools-reference.mdx). + +## ScalarDB version compatibility + +| ScalarDB MCP Server | ScalarDB Core | ScalarDB Cluster | Java Version | Notes | +|-------------------|-------------------|------------------|--------------|--------| +| 0.9.x | 3.16+ | 3.16+ | 17+ | Initial release | diff --git a/docs/scalardb-mcp-server/tools-reference.mdx b/docs/scalardb-mcp-server/tools-reference.mdx new file mode 100644 index 00000000..7ebbc860 --- /dev/null +++ b/docs/scalardb-mcp-server/tools-reference.mdx @@ -0,0 +1,98 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsEnglish +--- + +# ScalarDB MCP Server Tools Reference + +The ScalarDB MCP Server provides comprehensive database operations through more than 20 specialized MCP tools. You can interact with the LLM by using natural language, and the LLM automatically selects and uses the appropriate tools to fulfill requests. Understanding these tools helps you know what database operations the LLM can perform on your behalf. + +## Connection tools + +Monitor and verify your ScalarDB connection status and configuration. The following tool is available in both CRUD and SQL mode. + +| Tool | Description | +|------|-------------| +| `scalardb_connection_info` | Get the current connection status, configuration details, and health check results. | + +## Schema management tools + +Create, modify, and inspect database structures including namespaces, tables, and indexes. The following tools are available in CRUD mode. + +| Tool | Description | +|------|-------------| +| `scalardb_create_namespace` | Create a new namespace/keyspace for organizing tables. | +| `scalardb_drop_namespace` | Drop an existing namespace and all its tables. | +| `scalardb_list_namespaces` | List all available namespaces in the database. | +| `scalardb_create_table` | Create a new table with complete schema definition including partition keys, clustering keys, and columns. | +| `scalardb_drop_table` | Drop an existing table and all its data. | +| `scalardb_truncate_table` | Remove all data from a table while keeping the schema. | +| `scalardb_describe_table` | Get detailed table schema including columns, keys, and metadata. | +| `scalardb_list_tables` | List all tables within a specific namespace. | +| `scalardb_add_new_column` | Add a new column to an existing table schema. | +| `scalardb_create_index` | Create secondary indexes on table columns for faster queries. | +| `scalardb_drop_index` | Drop an existing secondary index. | + +## CRUD operation tools + +Perform data manipulation operations by using the ScalarDB Java client SDK for granular control and type safety. The following tools are available in CRUD mode. + +| Tool | Description | +|------|-------------| +| `scalardb_get` | Retrieve specific records by using partition keys, clustering keys, or secondary indexes. | +| `scalardb_scan` | Scan records with flexible filtering, ordering, and pagination capabilities. | +| `scalardb_insert` | Insert new records with automatic conflict detection. | +| `scalardb_update` | Update existing records with conditional operations. | +| `scalardb_upsert` | Insert new records or update existing ones (insert if they don't exist; update if they do exist). | +| `scalardb_delete` | Delete records by using primary keys or conditional logic. | + +## Transaction management tools + +Control ACID transactions by using the ScalarDB Java client SDK with proper isolation and consistency guarantees. Available in CRUD mode. + +| Tool | Description | +|------|-------------| +| `scalardb_begin_transaction` | Start a new read-write transaction with ACID guarantees. | +| `scalardb_begin_readonly_transaction` | Start an optimized read-only transaction for queries. | +| `scalardb_commit_transaction` | Commit a transaction and make all changes permanent. | +| `scalardb_rollback_transaction` | Roll back a transaction and undo all changes. | + +## SQL tools (ScalarDB Cluster only) + +Execute SQL commands directly through the ScalarDB SQL interface. The following tool is available in SQL mode. + +| Tool | Description | +|------|-------------| +| `scalardb_execute_sql` | Execute SQL queries directly (`SELECT`, `INSERT`, `UPDATE`, `DELETE`) with full SQL syntax support. | + +## Coordinator tools + +Manage distributed transaction Coordinator tables for multi-database consistency. These tools are available in CRUD mode. + +| Tool | Description | +|------|-------------| +| `scalardb_create_coordinator_tables` | Create Coordinator tables required for distributed transactions. | +| `scalardb_drop_coordinator_tables` | Drop Coordinator tables when no longer needed. | +| `scalardb_truncate_coordinator_tables` | Clear Coordinator tables while preserving structure. | + +## Tool availability by mode + +Different tools are available depending on the operational mode you choose. + +### SQL mode + +- **Connection tools:** Monitor connection status and health. +- **SQL tools:** Execute SQL queries directly through the ScalarDB SQL interface. +- **Use case:** Best for ScalarDB Cluster deployments when you prefer using SQL syntax. + +### CRUD mode + +- **Connection tools:** Monitor connection status and health. +- **Schema management tools:** Create and manage namespaces, tables, and indexes. +- **CRUD operation tools:** Perform data manipulation with the ScalarDB Java client SDK. +- **Transaction management tools:** Control ACID transactions programmatically. +- **Coordinator tools:** Manage distributed transaction coordination. +- **Use case:** Required for ScalarDB Core. From d8e45f67849d4ee27d615d71c12c83961102c946 Mon Sep 17 00:00:00 2001 From: Josh Wong <23216828+josh-wong@users.noreply.github.com> Date: Wed, 8 Oct 2025 10:12:10 +0900 Subject: [PATCH 2/2] Add ScalarDB MCP Server docs --- sidebars.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sidebars.js b/sidebars.js index 3ae0c0b8..ecf36e05 100644 --- a/sidebars.js +++ b/sidebars.js @@ -589,6 +589,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: 'Use ScalarDB MCP Server', + }, + { + type: 'doc', + id: 'scalardb-mcp-server/tools-reference', + label: 'ScalarDB MCP Server Tools Reference', + }, + ], + }, ], }, ],