supabase-automation について
Rube MCP と Composio の Supabase ツールキットを通じて、Supabase 操作を自動化するスキルです。データベースの調査とクエリ、プロジェクトや組織、ストレージバケット、Edge Functions、サービス状態を扱い、接続と権限を確認します。
主な機能
- 01テーブル、スキーマ、関連の確認
- 02データ行の検索と SQL 実行
- 03プロジェクトと組織の確認
- 04Edge Functions とバケットの調査
- 05サービス状態と設定の確認
- 06有効かつ承認済みの接続が必須
活用シーン
- 01Supabase データベーススキーマの調査
- 02データベースレコードの読み取りや更新
- 03プロジェクト設定とメンバーの確認
- 04Edge Functions とバケットの調査
MCP 対応
Rube MCP 経由で Composio の Supabase ツールキットにアクセスします。操作前に最新のツールスキーマを取得し、明示的に承認された有効な Supabase 接続を確立する必要があります。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill supabase-automationインストール後、Claude Code で/supabase-automationを入力して読み込まれたか確認します。
詳細
Rube MCP による Supabase の自動化
Composio の Supabase ツールキットを通じて、データベースクエリ、テーブルスキーマの確認、SQL の実行、プロジェクトと組織の管理、ストレージバケット、エッジ関数、サービスの稼働状況の監視など、Supabase の操作を自動化します。
前提条件
- Rube MCP が接続されていること(RUBE_SEARCH_TOOLS が利用可能であること)
RUBE_MANAGE_CONNECTIONSを通じて、ツールキットsupabaseの有効な Supabase 接続があること- 最新のツールスキーマを取得するため、必ず最初に
RUBE_SEARCH_TOOLSを呼び出してください
セットアップ
Rube MCP を入手する:クライアントの設定で https://rube.app/mcp を MCP サーバーとして追加します。クライアント/サーバーの認証を完了し、Supabase 接続の認証フローを明示的に許可してください。エンドポイントを追加しただけではアクセスできません。
RUBE_SEARCH_TOOLSが応答することを確認し、Rube MCP が利用可能であることを確認します- ツールキット
supabaseを指定してRUBE_MANAGE_CONNECTIONSを呼び出します - 接続が ACTIVE でない場合は、返された認証リンクから Supabase の認証を完了します
- ワークフローを実行する前に、接続ステータスが ACTIVE と表示されることを確認します
主なワークフロー
1. データベーステーブルのクエリと管理
使用する場面:テーブルからデータを読み取る、スキーマを確認する、または CRUD 操作を実行する場合
ツールの実行順序:
SUPABASE_LIST_ALL_PROJECTS- プロジェクトを一覧表示し、対象の project_ref を見つけます [前提条件]SUPABASE_LIST_TABLES- データベース内のすべてのテーブルとビューを一覧表示します [前提条件]SUPABASE_GET_TABLE_SCHEMAS- 列の型、制約、リレーションの詳細を取得します [書き込みの前提条件]SUPABASE_SELECT_FROM_TABLE- フィルタリング、並べ替え、ページネーションを指定して行をクエリします [読み取りに必須]SUPABASE_BETA_RUN_SQL_QUERY- 複雑なクエリ、挿入、更新、削除のために任意の SQL を実行します [書き込みに必須]
SELECT_FROM_TABLE の主なパラメーター:
project_ref:20 文字の小文字のプロジェクト参照table:クエリ対象のテーブル名またはビュー名select:カンマ区切りの列リスト(profile->avatar_urlのようなネストした選択や JSON パスをサポート)filters:column、operator、valueを含むフィルターオブジェクトの配列order:created_at.descのような並べ替え式limit:返す行の最大数(最小値は 1)offset:ページネーションでスキップする行数
PostgREST のフィルター演算子:
eq、neq:等しい/等しくないgt、gte、lt、lte:比較演算子like、ilike:パターンマッチング(大文字と小文字を区別する/しない)is:IS チェック(null、true、false 用)in:値のリストに含まれるcs、cd:含む/含まれる(配列)fts、plfts、phfts、wfts:全文検索のバリエーション
RUN_SQL_QUERY の主なパラメーター:
ref:プロジェクト参照(小文字 20 文字、パターン^[a-z]{20}$)query:有効な PostgreSQL SQL 文read_only:読み取り専用トランザクションを強制するブール値(SELECT での使用がより安全です)
注意点:
project_refは小文字 20 文字(a-z のみ。数字やハイフンは不可)である必要がありますSELECT_FROM_TABLEは読み取り専用です。書き込みには、利用可能で認証済みの書き込みツールを使用してください。SQL も選択肢の 1 つです- PostgreSQL の配列列(text[]、integer[])には、
ARRAY['item1', 'item2']または'{"item1", "item2"}'の構文を使用してください。JSON 配列構文'["item1", "item2"]'は使用しないでください - 大文字と小文字を区別する SQL 識別子は、クエリ内で二重引用符で囲む必要があります
- 複雑な DDL 操作はタイムアウトする可能性があります(上限は約 60 秒)。小さなクエリに分割してください
- ERROR 42P01 は、データベース/スキーマ/search_path の指定間違い、リレーションの欠落、または引用符の不一致を示している可能性があります
- ERROR 42883「function does not exist」は、標準ではないヘルパーを呼び出していることを意味します。information_schema クエリを優先してください
2. プロジェクトと組織を管理する
使用する状況:ユーザーがプロジェクトの一覧表示、設定の確認、または組織の管理を希望している場合
ツールの実行順序:
SUPABASE_LIST_ALL_ORGANIZATIONS- すべての組織を一覧表示します(ID と名前)[必須]SUPABASE_GETS_INFORMATION_ABOUT_THE_ORGANIZATION- slug を指定して組織の詳細情報を取得します[任意]SUPABASE_LIST_MEMBERS_OF_AN_ORGANIZATION- ロールと MFA のステータスを含め、組織のメンバーを一覧表示します[任意]SUPABASE_LIST_ALL_PROJECTS- メタデータとともにすべてのプロジェクトを一覧表示します[必須]SUPABASE_GETS_PROJECT_S_POSTGRES_CONFIG- データベース設定を取得します[任意]SUPABASE_GETS_PROJECT_S_AUTH_CONFIG- 認証設定を取得します[任意]SUPABASE_GET_PROJECT_API_KEYS- API キーを取得します(機密情報のため、取り扱いに注意してください)[任意]SUPABASE_GETS_PROJECT_S_SERVICE_HEALTH_STATUS- サービスのヘルスステータスを確認します[任意]
主なパラメーター:
ref:プロジェクト固有のツールで使用するプロジェクト参照slug:組織ツールで使用する組織の slug(URL で使える識別子)services:ヘルスチェック対象のサービスの配列:auth、db、db_postgres_user、pg_bouncer、pooler、realtime、rest、storage
注意点:
LIST_ALL_ORGANIZATIONSはidとslugの両方を返します。LIST_MEMBERS_OF_AN_ORGANIZATIONで必要なのはidではなくslugですGET_PROJECT_API_KEYSは有効なシークレットを返します。キーの値全体をログに記録、表示、または永続化することは絶対に避けてくださいGETS_PROJECT_S_SERVICE_HEALTH_STATUSには空でないservices配列が必要です。空の配列を指定するとinvalid_requestエラーが発生します- トークンに必要なスコープがない場合、設定ツールが 401/403 を返すことがあります。ワークフロー全体を失敗させず、適切に処理してください
3. データベーススキーマを確認する
使用する状況:ユーザーがテーブル構造、列、制約を把握したい場合、または型の生成を希望している場合
ツールの実行順序:
SUPABASE_LIST_ALL_PROJECTS- 対象のプロジェクトを特定します[前提条件]SUPABASE_LIST_TABLES- メタデータとともにすべてのテーブルとビューを列挙します[必須]SUPABASE_GET_TABLE_SCHEMAS- 指定したテーブルの詳細なスキーマを取得します[必須]SUPABASE_GENERATE_TYPE_SCRIPT_TYPES- スキーマから TypeScript の型を生成します[任意]
LIST_TABLES の主なパラメーター:
project_ref:プロジェクト参照schemas:検索対象のスキーマ名の配列(例:["public"])。省略すると、すべての非システムスキーマが対象になりますinclude_views:テーブルとともにビューを含めます(デフォルトは true)include_metadata:行数の推定値とサイズを含めます(デフォルトは true)include_system_schemas:pg_catalog、information_schema などを含めます(デフォルトは false)
GET_TABLE_SCHEMAS の主なパラメーター:
project_ref:プロジェクト参照table_names:テーブル名の配列(1 回のリクエストにつき最大 20 件)。public.users、auth.usersのようなスキーマ接頭辞を指定できますinclude_relationships:外部キー情報を含めます(デフォルトは true)include_indexes:インデックス情報を含めます(デフォルトは true)exclude_null_values:null のフィールドを非表示にし、出力を見やすくします(デフォルトは true)
GENERATE_TYPE_SCRIPT_TYPES の主なパラメーター:
ref:プロジェクト参照included_schemas:カンマ区切りのスキーマ名(デフォルトは"public")
注意点:
- スキーマ接頭辞のないテーブル名は、
publicスキーマのものとして扱われます - LIST_TABLES の
row_countとsize_bytesは、ビューや作成したばかりのテーブルでは null の場合があります。0 ではなく、不明として扱ってください - GET_TABLE_SCHEMAS では 1 回のリクエストにつき最大 20 テーブルまでです。必要に応じて分割してください
- TypeScript の型には、指定したスキーマ内のすべてのテーブルが含まれます。個別のテーブルを絞り込むことはできません
4. Edge Functions を管理する
使用する場面:Supabase Edge Functions の一覧表示、詳細確認、または操作を行いたい場合
ツールの実行順序:
SUPABASE_LIST_ALL_PROJECTS- プロジェクトの参照情報を確認します[前提条件]SUPABASE_LIST_ALL_FUNCTIONS- メタデータとともにすべての Edge Functions を一覧表示します[必須]SUPABASE_RETRIEVE_A_FUNCTION- 特定の関数の詳細情報を取得します[任意]
主なパラメーター:
ref:プロジェクトの参照情報- RETRIEVE_A_FUNCTION の関数スラッグ
注意点:
LIST_ALL_FUNCTIONSが返すのはメタデータのみで、関数のコードやログは含まれませんcreated_atとupdated_atはエポックミリ秒の場合があります。人が読めるタイムスタンプに変換してください- これらのツールでは Edge Functions を作成またはデプロイできません。読み取り専用の確認ツールです
- 組織またはプロジェクトの管理者権限がない場合、権限エラーが発生することがあります
5. Storage Buckets を管理する
使用する場面:Storage Buckets の一覧表示、またはファイルストレージの管理を行いたい場合
ツールの実行順序:
SUPABASE_LIST_ALL_PROJECTS- プロジェクトの参照情報を確認します[前提条件]SUPABASE_LISTS_ALL_BUCKETS- すべての Storage Buckets を一覧表示します[必須]
主なパラメーター:
ref:プロジェクトの参照情報
注意点:
LISTS_ALL_BUCKETSが返すのはバケット一覧のみで、バケットの内容やアクセス ポリシーは含まれません- ファイルのアップロードでは、
SUPABASE_RESUMABLE_UPLOAD_SIGN_OPTIONS_WITH_IDは TUS 再開可能アップロードの CORS プリフライトのみを処理します - 同じ許可された範囲内で、ドキュメントに記載されていて利用可能なストレージツール/API のみを使用してください。プロキシツールを作り出さないでください
よくあるパターン
ID の解決
- プロジェクト参照情報:
SUPABASE_LIST_ALL_PROJECTS--refフィールドを抽出します(小文字20文字) - 組織スラッグ:
SUPABASE_LIST_ALL_ORGANIZATIONS-- 後続の組織ツールではidではなくslugを使用します - テーブル名:
SUPABASE_LIST_TABLES-- クエリの前に利用可能なテーブルを列挙します - スキーマの検出:
SUPABASE_GET_TABLE_SCHEMAS-- 書き込みの前にカラムと制約を確認します
ページネーション
SUPABASE_SELECT_FROM_TABLE:offsetとlimitによるページネーションを使用します。返される行数がlimitを下回るまで、offsetをlimitずつ増やしてください。SUPABASE_LIST_ALL_PROJECTS:大規模なアカウントではページネーションが必要になる場合があります。すべてのカーソル/ページを処理してください。SUPABASE_LIST_TABLES:大規模なデータベースではページネーションが必要になる場合があります。
SQL のベストプラクティス
- SQL を記述する前に、必ず
SUPABASE_GET_TABLE_SCHEMASまたはSUPABASE_LIST_TABLESを使用してください - 誤った変更を防ぐため、SELECT クエリでは
read_only: trueを使用してください - 大文字と小文字を区別する識別子は引用符で囲みます。
SELECT * FROM "MyTable"とし、SELECT * FROM MyTableとはしないでください - 配列カラムには PostgreSQL の配列構文を使用します。
['a', 'b']ではなくARRAY['a', 'b']を使用してください - タイムアウトを避けるため、複雑な DDL は小さなステートメントに分割してください
既知の注意点
ID の形式
- プロジェクト参照情報は小文字(a-z)20文字ちょうどです。パターンは
^[a-z]{20}$です - 組織識別子には
id(UUID)とslug(URL で使いやすい文字列)の両方があり、ツールによって受け付ける値が異なります LIST_MEMBERS_OF_AN_ORGANIZATIONにはidではなくslugが必要です
SQL の実行
BETA_RUN_SQL_QUERYは、複雑な操作で約60秒のタイムアウトがあります- PostgreSQL の配列構文が必要です。
ARRAY['item']または'{"item"}'を使用し、JSON 構文の'["item"]'は使用しないでください - 大文字と小文字を区別する識別子は SQL で二重引用符で囲む必要があります
- ERROR 42P01:リレーションが存在しません(引用符とスキーマプレフィックスを確認してください)
- ERROR 42883:関数が存在しません(カスタムヘルパーではなく information_schema を使用してください)
機密データ
GET_PROJECT_API_KEYSはサービスロールキーを返します。値全体を絶対に公開しないでください- Auth 設定ツールではシークレットは除外されますが、機密性の高い設定が含まれている場合があります
- 出力する API キーは必ずマスキングするか、一部を省略してください
スキーマのメタデータ
LIST_TABLESのrow_countとsize_bytesは null の場合があります。ゼロとして扱わないでください- システムスキーマはデフォルトで除外されています。表示するには
include_system_schemas: trueを設定してください include_views: falseを指定しない限り、ビューはテーブルと一緒に表示されます
レート制限と権限
- エンリッチメントツール(API キー、設定)は、適切なスコープがないと 401/403 を返す場合があります。問題なくスキップしてください
- 大規模なテーブル一覧の取得には、ページネーションが必要な場合があります
GETS_PROJECT_S_SERVICE_HEALTH_STATUSはservices配列が空の場合に失敗します。必ず 1 つ以上指定してください
クイックリファレンス
| タスク | ツールスラッグ | 主なパラメーター |
|---|---|---|
| 組織を一覧表示 | SUPABASE_LIST_ALL_ORGANIZATIONS | (なし) |
| 組織情報を取得 | SUPABASE_GETS_INFORMATION_ABOUT_THE_ORGANIZATION | slug |
| 組織のメンバーを一覧表示 | SUPABASE_LIST_MEMBERS_OF_AN_ORGANIZATION | slug |
| プロジェクトを一覧表示 | SUPABASE_LIST_ALL_PROJECTS | (なし) |
| テーブルを一覧表示 | SUPABASE_LIST_TABLES | project_ref, schemas |
| テーブルスキーマを取得 | SUPABASE_GET_TABLE_SCHEMAS | project_ref, table_names |
| テーブルをクエリ | SUPABASE_SELECT_FROM_TABLE | project_ref, table, select, filters |
| SQL を実行 | SUPABASE_BETA_RUN_SQL_QUERY | ref, query, read_only |
| TS 型を生成 | SUPABASE_GENERATE_TYPE_SCRIPT_TYPES | ref, included_schemas |
| Postgres 設定 | SUPABASE_GETS_PROJECT_S_POSTGRES_CONFIG | ref |
| 認証設定 | SUPABASE_GETS_PROJECT_S_AUTH_CONFIG | ref |
| API キーを取得 | SUPABASE_GET_PROJECT_API_KEYS | ref |
| サービスのヘルス状態 | SUPABASE_GETS_PROJECT_S_SERVICE_HEALTH_STATUS | ref, services |
| エッジ関数を一覧表示 | SUPABASE_LIST_ALL_FUNCTIONS | ref |
| エッジ関数を取得 | SUPABASE_RETRIEVE_A_FUNCTION | ref, 関数のスラッグ |
| ストレージバケットを一覧表示 | SUPABASE_LISTS_ALL_BUCKETS | ref |
| DB ブランチを一覧表示 | SUPABASE_LIST_ALL_DATABASE_BRANCHES | ref |
使用するタイミング
このスキルは、概要で説明されているワークフローまたはアクションを実行する場合に適用できます。
例
ユーザーのリクエスト:
Rube MCP(Composio)経由で、Supabase のデータベースクエリ、テーブル管理、プロジェクト管理、ストレージ、エッジ関数、SQL の実行を自動化してください。
制限事項
- このスキルは、タスクが上記の説明の範囲に明確に該当する場合にのみ使用してください。
- 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中止して確認してください。
上記のツール名、スキーマ、識別子の制約、制限は、過去のコネクターのスナップショットを示しています。現在の探索結果を優先し、返された識別子を表示名から推測せず、そのまま保持してください。スキーマの検査は、書き込み、キーの取得、個人データの一括エクスポート、または認証設定の変更を許可するものではありません。管理用 SQL は、特権アクセスで実行され、アプリケーションの RLS を迂回する場合があります。プロジェクト、スキーマ、行を適切に限定し、値をパラメーター化してください。読み取り専用トランザクションでもコストが高くなる場合があります。クエリに上限を設け、DDL の前にロックを確認してください。復旧計画なしにタイムアウトを回避する目的だけで、アトミックなマイグレーションを分割しないでください。オフセットページネーションでは安定した一意の順序を使用し、同時変更による制限を明示してください。結果が不明な書き込みを再実行しないでください。