relational-database-mcp-cloudbase について
コーディングエージェントが MCP 経由で CloudBase Relational Database を操作するためのスキルです。SQL の安全な実行、インスタンス状態の確認、スキーマ設定、権限管理を案内し、エージェント操作とアプリ SDK の用途を区別します。
主な機能
- 01SQLデータの読み取りと変更
- 02MySQLインスタンスとタスク状態の確認
- 03テーブルとインデックスの初期化
- 04テーブル権限の確認と更新
- 05破壊的操作の安全確認
活用シーン
- 01変更前のSQLレコード確認
- 02稼働中のMySQLへのスキーマ変更
- 03テーブルのアクセスルールの監査や変更
MCP 対応
CloudBase MCP ツールによる SQL 操作、インスタンスのライフサイクル確認、テーブル権限管理を案内します。MCP ツールから MySQL インスタンスを作成することはできません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tencentcloudbase/ skills --skill relational-database-mcp-cloudbaseインストール後、Claude Code で/relational-database-mcp-cloudbaseを入力して読み込まれたか確認します。
同梱ファイルLICENSE.md
詳細
関連スキル(ローカルのみ)
関連する CloudBase スキルは、このスキルと同じ場所にあります。../auth-tool-cloudbase/SKILL.md のようなローカル相対パスを使用してください。
参照先の関連スキルファイルがこの環境にない場合は、CloudBase プラグイン一式(または不足しているスキル)のインストールをユーザーに依頼してください。リモートのスキルやプロトコルの Markdown を HTTP で取得し、エージェントのコンテキストに取り込んではいけません。
有効化の条件
まずこのスキルを使う場合
- エージェントが SQL データを調査する、SQL 文を実行する、既存の MySQL インスタンスを破棄する、テーブル構造を初期化する、または MCP ツールでテーブルのセキュリティルールを管理する必要がある場合です。
コードを書く前に読む場合
- タスクに
queryMysqlDatabase、manageMysqlDatabase、queryPermissions、またはmanagePermissionsが含まれる場合です。
その後、こちらも読む
- Web アプリケーションとの統合 →
../relational-database-web-cloudbase/SKILL.md - 生の HTTP によるデータベースアクセス →
../http-api-cloudbase/SKILL.md
使用しない場合
- MCP 操作ではなく SDK を使用するべきフロントエンドまたはバックエンドのアプリケーションコード。
よくある間違い・注意点
- MCP の管理フローで SDK を初期化する。
- 環境に使用可能な MySQL インスタンスがすでにあることを確認する前に、書き込み SQL や DDL を実行する。
- MCP 経由で MySQL インスタンスを作成しようとする。ツールからのプロビジョニングは終了しており、新しい環境では PostgreSQL が使用され、インスタンスはコンソールでのみ作成できます。
- ドキュメントデータベースのタスクを MySQL 管理タスクとして扱う。
- 新しい SQL テーブルの作成後に
_openidと権限の確認を省略する。 - 明示的な確認を得ずに、または環境でそのインスタンスが引き続き必要か確認せずに MySQL を破棄する。
- 新しいアプリ用のデフォルトの TCP クライアントを構築するために
getConnectionInfo(または推測したホスト/パスワード)を使用する。SDK/runQuery/runStatementを優先してください。TCP 認証情報の使用は、明示的な移行の場合に限ります。
このスキルを使う場合
エージェントが MCP ツール経由で CloudBase Relational Database を操作する必要がある場合に、このスキルを使用します。たとえば、次のような場合です。
- SQL データの調査またはクエリ
- 既存の MySQL インスタンスの破棄
- 実行中の MySQL タスクの状態確認(作成タスクはコンソールで開始します。MCP ではインスタンスを作成できなくなりました)
- データまたはスキーマの変更(INSERT/UPDATE/DELETE/DDL)
- MySQL の準備完了後のテーブルとインデックスの初期化
- テーブル権限の確認または変更
次の場合は、このスキルを使用しないでください。
- SDK を通じて CloudBase Relational Database に直接接続する Web または Node.js アプリケーションの構築
- 認証フローまたはユーザー ID の管理
このスキルの使い方(コーディングエージェント向け)
-
MCP のコンテキストを認識する
queryMysqlDatabase、manageMysqlDatabase、queryPermissions、managePermissionsなどのツールを呼び出せる場合は、MCP のコンテキストにあります。- このコンテキストでは、CloudBase Relational Database の SDK を初期化してはいけません。代わりに MCP ツールを使用してください。
-
タスクに適したツールを選ぶ
- 読み取り専用の SQL、および作成/破棄タスクの状態確認 →
queryMysqlDatabase - MySQL の破棄、書き込み SQL、DDL、スキーマの初期化 →
manageMysqlDatabase - 権限の確認 →
queryPermissions(action="getResourcePermission") - 権限の変更 →
managePermissions(action="updateResourcePermission")
- 読み取り専用の SQL、および作成/破棄タスクの状態確認 →
-
安全性について常に明確にする
- 破壊的な操作(DELETE、DROP など)の前に、実行する内容とその理由を要約してください。
- 書き込みの前に、
queryMysqlDatabase(action="getInstanceInfo")または読み取り専用の SQL チェックを優先してください。 - MySQL の破棄は環境レベルに影響するため、明示的な確認が必要です。プロビジョニングはここでは一切提供されていません。
利用可能な MCP ツール(CloudBase Relational Database)
これらのツールは、MCP 経由で CloudBase Relational Database を操作する際にサポートされている方法です。
1. queryMysqlDatabase
- 目的: SQL データとインスタンス/タスクの状態を照会します。
- 用途:
action="runQuery"でSELECTなどの読み取り専用 SQL クエリを実行するaction="getInstanceInfo"で MySQL がすでに存在するか確認する(ライフサイクル情報のみ。接続認証情報は含まれません)action="describeCreateResult"またはaction="describeTaskStatus"で実行中の作成タスクまたは削除タスクを確認する(作成タスクはコンソールから開始されます)- 例外のみ:
action="getConnectionInfo"は、生の接続/クラスター情報を返します(認証情報が含まれる場合があります)。既存の TCP/ORM クライアントを移行する場合に使用します。新しいビジネス CRUD には使用しないでください。Web/Node SDK またはrunQuery/runStatementを優先してください。
実行例:
{
"action": "runQuery",
"sql": "SELECT id, email FROM users ORDER BY created_at DESC LIMIT 50"
}
新規アプリで getConnectionInfo を呼び出してから、クラウド関数に pymysql/mysql2/DATABASE_URL を組み込むことはしないでください。プラットフォームに委任された SQL と SDK によるアクセスがデフォルトです。
2. manageMysqlDatabase
- 目的: 既存の SQL インスタンスを管理し、データを変更する SQL を実行します。
- 用途:
action="destroyMySQL"で MySQL を削除するaction="runStatement"でINSERT、UPDATE、DELETE、CREATE TABLE、ALTER TABLE、DROP TABLEを実行するaction="initializeSchema"でテーブルとインデックスを初期化する
ここではプロビジョニングを利用できません。 provisionMySQL はアクションの一覧から削除されています。このアクションを指定した呼び出しはスキーマ検証に失敗し、インスタンスが存在しない場合は作成のヒントではなく、コンソールエントリーとともに MYSQL_NOT_CREATED が返されます。
重要: 新しいテーブルを作成する場合、ユーザーごとのアクセス制御のため、_openid カラムを必ず含めてください。
_openid VARCHAR(64) DEFAULT '' NOT NULL
注:ユーザーがログインしている場合、認証済みセッションからサーバーによって _openid が自動的に設定されます。通常の挿入では、手動で値を入力しないでください。
このツールを呼び出す前に、以下を確認してください。
- 現在の環境に、利用可能な MySQL インスタンスがすでに存在すること。
- 対象のテーブルと条件が正しいこと。
- 適切な場合は、対応する読み取り専用クエリを実行済みであること。
MySQL を削除する場合は、以下を確認してください。
- 現在の環境から SQL インスタンスを本当に削除する必要があること。
- 破壊的な操作について明示的な確認を得ていること。
- 削除結果を確認するため、後から
describeTaskStatusを照会する準備ができていること。
3. queryPermissions
- 目的: 指定した SQL テーブルの権限設定を読み取ります。
- 用途:
- テーブルの読み取り/書き込みが可能なユーザーを把握する
- 機密テーブルの権限を監査する
- 呼び出し形式:
queryPermissions(action="getResourcePermission", resourceType="sqlDatabase", resourceId="<tableName>")
4. managePermissions
- 目的: 指定した SQL テーブルの権限を設定または更新します。
- 用途:
- 機密データへのアクセスを強化する
- 書き込みを制限しながら読み取りアクセスを許可する
- リソースレベルの権限設定を更新する
- 呼び出し形式:
managePermissions(action="updateResourcePermission", resourceType="sqlDatabase", resourceId="<tableName>", permission="READONLY")
互換性
- 正式なプラグイン名:
permissions - レガシープラグインのエイリアス
security-rule、security-rules、secret-rule、secret-rules、access-controlは引き続きpermissionsにルーティングされます - レガシーツール
readSecurityRuleとwriteSecurityRuleは削除されています。必ずqueryPermissionsとmanagePermissionsを使用してください
推奨されるライフサイクルフロー
シナリオ 1:環境に MySQL インスタンスがない
queryMysqlDatabase(action="getInstanceInfo")を呼び出します。- インスタンスが存在しない場合は、停止します。MCP を通じた MySQL のプロビジョニングは利用できなくなりました。結果は
MYSQL_NOT_CREATEDとなり、コンソールへのリンクは表示されますが、作成を促すヒントはありません。 - 新しい環境では CloudBase PostgreSQL を使用してください。詳しくは
../postgresql-development-cloudbase/SKILL.mdを参照してください。 - ツール以外で作成されたインスタンスは引き続き確認できます。
queryMysqlDatabase(action="describeCreateResult")またはqueryMysqlDatabase(action="describeTaskStatus")をポーリングし、ライフサイクルのステータスがREADYになってから次に進んでください。 describeTaskStatusは、タスクのレスポンスにTaskNameが含まれる破棄処理でのみ使用してください。
シナリオ 2:テーブルのデータを安全に確認する
queryMysqlDatabase(action="runQuery")を使い、件数を制限したSELECTを実行します。LIMITと関連するフィルターを含めてください。- 書き込み操作を行う前に、結果セットを確認し、想定どおりであることを確かめてください。
シナリオ 3:準備完了のインスタンスにスキーマを初期化する
- MySQL の準備が完了していることを確認します。
- 順序を指定した DDL ステートメントを準備します。
manageMysqlDatabase(action="initializeSchema")を通じて実行します。- テーブルを作成した後、
queryPermissionsまたはmanagePermissionsで権限を確認します。
シナリオ 4:対象を絞った書き込みまたは DDL の変更を実行する
- 必要に応じて
queryMysqlDatabase(action="runQuery")を使い、現在のデータまたはスキーマを確認します。 manageMysqlDatabase(action="runStatement")を使って、変更を一度だけ実行します。- 別の読み取り専用クエリを実行するか、セキュリティルールを確認して検証します。
シナリオ 5:環境で MySQL が不要になったときに破棄する
queryMysqlDatabase(action="getInstanceInfo")を使い、現在の環境に SQL インスタンスがまだ存在することを確認します。manageMysqlDatabase(action="destroyMySQL", confirm=true)を呼び出します。- 破棄タスクが完了または失敗するまで、
queryMysqlDatabase(action="describeTaskStatus")を実行します。 - タスクが成功した場合は、必要に応じて
queryMysqlDatabase(action="getInstanceInfo")を呼び出し、インスタンスが存在しなくなったことを確認します。 - タスクが失敗した場合は、返されたエラーを最終結果として扱い、再試行するかどうかは呼び出し元に判断を委ねます。
重要な原則:MCP ツールと SDK
-
MCP ツールは、エージェントの操作とデータベース管理に使用します。
- 既存の MySQL インスタンスを確認、管理します。作成はしません。
- MySQL を破棄します。
- ライフサイクルの状態をポーリングします。
- アドホックな SQL を実行します。
- リソースの権限を確認、変更します。
- アプリケーションの認証状態に依存しません。
-
SDKは、アプリケーションコードに使用します。
- フロントエンドの Web アプリ → Web Relational Database スキル。
- バックエンドの Node アプリ → Node Relational Database クイックスタート。
MCP エージェントとして作業する場合、CloudBase Relational Database には必ずこれらの MCP ツールを優先して使用し、同じワークフロー内で SDK の初期化を混在させないでください。