home / skills / tencentcloudbase / cloudbase-mcp / relational-database-tool

This skill helps agents safely manage CloudBase Relational Database operations via MCP tools, avoiding SDKs and ensuring secure inserts, updates, and deletions.

This is most likely a fork of the relational-database-tool skill from tencentcloudbase
npx playbooks add skill tencentcloudbase/cloudbase-mcp --skill relational-database-tool

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
5.4 KB
---
name: relational-database-mcp-cloudbase
description: This is the required documentation for agents operating on the CloudBase Relational Database. It lists the only four supported tools for running SQL and managing security rules. Read the full content to understand why you must NOT use standard Application SDKs and how to safely execute INSERT, UPDATE, or DELETE operations without corrupting production data.
alwaysApply: false
---

## When to use this skill

Use this skill when an **agent** needs to operate on **CloudBase Relational Database via MCP tools**, for example:

- Inspecting or querying data in tables
- Modifying data or schema (INSERT/UPDATE/DELETE/DDL)
- Reading or changing table security rules

Do **NOT** use this skill for:

- Building Web or Node.js applications that talk to CloudBase Relational Database (use the Web/Node Relational Database skills)
- Auth flows or user identity (use the Auth skills)

## How to use this skill (for a coding agent)

1. **Recognize MCP context**
   - If you can call tools like `executeReadOnlySQL`, `executeWriteSQL`, `readSecurityRule`, `writeSecurityRule`, you are in MCP context.
   - In this context, **never initialize SDKs for CloudBase Relational Database**; use MCP tools instead.

2. **Pick the right tool for the job**
   - Reads → `executeReadOnlySQL`
   - Writes/DDL → `executeWriteSQL`
   - Inspect rules → `readSecurityRule`
   - Change rules → `writeSecurityRule`

3. **Always be explicit about safety**
   - Before destructive operations (DELETE, DROP, etc.), summarize what you are about to run and why.
   - Prefer running read-only SELECTs first to verify assumptions.

---

## Available MCP tools (CloudBase Relational Database)

These tools are the **only** supported way to interact with CloudBase Relational Database via MCP:

### 1. `executeReadOnlySQL`

- **Purpose:** Run `SELECT` queries (read-only).
- **Use for:**
  - Listing rows, aggregations, joins.
  - Inspecting data before changing it.

**Example call (conceptual):**

```sql
SELECT id, email FROM users WHERE active = true ORDER BY created_at DESC LIMIT 50;
```

Call this through the MCP tool instead of embedding SQL in code.

### 2. `executeWriteSQL`

- **Purpose:** Run **write or DDL** statements:
  - `INSERT`, `UPDATE`, `DELETE`
  - `CREATE TABLE`, `ALTER TABLE`, `DROP TABLE`
- **Use for:**
  - Data migrations
  - Fixing or seeding data
  - Schema changes

**Important:** When creating a new table, you **must** include the `_openid` column for per-user access control:

```sql
_openid VARCHAR(64) DEFAULT '' NOT NULL
```

> 💡 **Note about `_openid`**: When a user is logged in, the `_openid` field is **automatically populated by the server** with the current user's identity. You do NOT need to manually set this field in INSERT operations - the server will fill it automatically based on the authenticated user's session.

Before calling this tool, **confirm**:

- The target tables and conditions are correct.
- You have run a corresponding `SELECT` via `executeReadOnlySQL` when appropriate.

### 3. `readSecurityRule`

- **Purpose:** Read security rules for a given table.
- **Use for:**
  - Understanding who can read/write a table.
  - Auditing permissions on sensitive tables.

Security rule types typically include:

- `READONLY` – anyone can read, no one can write
- `PRIVATE` – only authenticated users can read/write
- `ADMINWRITE` – anyone can read, only admins can write
- `ADMINONLY` – only admins can read/write
- `CUSTOM` – custom security logic

### 4. `writeSecurityRule`

- **Purpose:** Set or update security rules for a table.
- **Use for:**
  - Hardening access to sensitive data
  - Opening up read access while restricting writes
  - Applying custom rules when needed

When using this tool:

- Clearly explain the **intent** (who should read/write what).
- Prefer standard rule types (`READONLY`, `PRIVATE`, etc.) before `CUSTOM`.

---

## Scenario 1: Safely inspect data in a table

1. Use `executeReadOnlySQL` with a limited `SELECT`:
   - Include a `LIMIT` clause.
   - Filter by relevant conditions.
2. Review the result set and confirm it matches expectations.

This pattern prevents accidental full-table scans and gives you context before any write operations.

---

## Scenario 2: Apply a schema change

1. Use `executeReadOnlySQL` to inspect the current schema or data (if needed).
2. Plan the `CREATE TABLE` / `ALTER TABLE` statement.
3. Run it once via `executeWriteSQL`.
4. Optionally, validate by running `SELECT` again.

Always describe:

- What schema change you are making.
- Why it is safe in the current context.

---

## Scenario 3: Tighten security rules on a sensitive table

1. Call `readSecurityRule` for the table to see current settings.
2. Decide on the target rule (e.g., from `READONLY` → `PRIVATE`).
3. Explain the change and why it matches the user’s requirements.
4. Call `writeSecurityRule` with the new rule.
5. Optionally, re-read the rule to confirm the update.

---

## Key principle: MCP tools vs SDKs

- **MCP tools** are for **agent operations** and **database management**:
  - Run ad-hoc SQL.
  - Inspect and change security rules.
  - Do not depend on application auth state.

- **SDKs** are for **application code**:
  - Frontend Web apps → Web Relational Database skill.
  - Backend Node apps → Node Relational Database quickstart.

When working as an MCP agent, **always prefer these MCP tools** for CloudBase Relational Database, and avoid mixing them with SDK initialization in the same flow.

Overview

This skill documents how an agent should operate on the CloudBase Relational Database using the MCP tools. It defines the only supported tools for running SQL and managing table security, and explains why application SDKs must not be initialized in an MCP agent flow. The guidance focuses on safe read-first patterns, explicit confirmation before destructive actions, and correct handling of per-user access fields like _openid.

How this skill works

The skill identifies four MCP tools available to agents: executeReadOnlySQL for SELECTs, executeWriteSQL for INSERT/UPDATE/DELETE and DDL, readSecurityRule to inspect table permissions, and writeSecurityRule to change them. Agents must call these tools directly rather than initializing CloudBase SDKs. Before any write or schema change, agents should run targeted read queries to verify assumptions and explicitly summarize intended destructive operations.

When to use it

  • When an agent needs to inspect or query tables in CloudBase via MCP tools.
  • When an agent must perform data modifications or schema changes (INSERT/UPDATE/DELETE/DDL).
  • When reading or updating table security rules and permissions.
  • Not for building Web/Node apps or handling auth flows—use dedicated SDK skills for those cases.

Best practices

  • Always detect MCP context by the presence of executeReadOnlySQL, executeWriteSQL, readSecurityRule, writeSecurityRule.
  • Prefer read-only SELECTs with LIMIT and filters to validate assumptions before any write.
  • Before running destructive SQL, summarize the exact statement, target tables, and why it is safe.
  • When creating tables include _openid VARCHAR(64) DEFAULT '' NOT NULL for per-user access; do not set _openid manually on INSERT.
  • Favor standard security rule types (READONLY, PRIVATE, ADMINWRITE, ADMINONLY) before using CUSTOM rules.

Example use cases

  • List the most recent active users with executeReadOnlySQL to confirm a subset before an update.
  • Apply a schema change: inspect schema, run CREATE/ALTER via executeWriteSQL, then validate with a SELECT.
  • Tighten access: readSecurityRule, switch a table from READONLY to PRIVATE, then re-read to confirm.
  • Seed or fix data during maintenance using executeWriteSQL while documenting each mutation beforehand.

FAQ

Why must I avoid initializing CloudBase SDKs in an MCP agent?

SDKs are intended for application runtime and depend on app auth flows; MCP agents must use the provided tools to perform ad-hoc operations and avoid mixing contexts.

Do I need to set _openid in INSERT statements?

No. When a user is authenticated, the server automatically populates _openid. Include the column when creating tables but do not manually fill it on INSERT.