supabase-automation について
supabase-automationは、Rube MCP経由でComposioのツールキットを使い、Supabaseの操作を自動化するスキルです。データ照会、スキーマ確認、プロジェクト管理、ストレージ、Edge Functionsの確認、サービス状態の点検を扱います。
主な機能
- 01条件指定とページ分割によるテーブル照会
- 02テーブル、列、リレーションの確認
- 03PostgreSQL SQL文の実行
- 04プロジェクト、組織、設定の確認
- 05ストレージバケットとEdge Functionsの一覧
- 06サービス状態の確認とTypeScript型の生成
活用シーン
- 01Supabaseのテーブルデータの読み取りや更新
- 02SQL実行前のデータベーススキーマ確認
- 03プロジェクト設定とサービス状態の点検
- 04Edge Functionsとストレージバケットの確認
MCP 対応
Rube MCPで最新のツールスキーマを取得し、Supabaseツールキットに接続します。このスキルはツールを使ったSupabase操作の手順を示します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davepoon/ buildwithclaude --skill supabase-automationインストール後、Claude Code で/supabase-automationを入力して読み込まれたか確認します。
詳細
Rube MCP による Supabase の自動化
Composio の Supabase ツールキットを通じて、データベースクエリ、テーブルスキーマの確認、SQL の実行、プロジェクトや組織の管理、ストレージバケット、エッジ関数、サービスの健全性監視など、Supabase の操作を自動化できます。
ツールキットのドキュメント:composio.dev/toolkits/supabase
前提条件
- Rube MCP が接続されていること(RUBE_SEARCH_TOOLS が利用可能であること)
RUBE_MANAGE_CONNECTIONSを通じて、ツールキットsupabaseの有効な Supabase 接続があること- 必ず最初に
RUBE_SEARCH_TOOLSを呼び出して、最新のツールスキーマを取得すること
セットアップ
Rube MCP の取得:クライアント設定で https://rube.app/mcp を MCP サーバーとして追加します。API キーは不要です。エンドポイントを追加するだけで使用できます。
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は小文字のアルファベット(a-z)のみで、正確に 20 文字である必要があります(数字やハイフンは使用できません)SELECT_FROM_TABLEは読み取り専用です。INSERT、UPDATE、DELETE 操作にはRUN_SQL_QUERYを使用します- PostgreSQL の配列カラム(text[]、integer[])には、
ARRAY['item1', 'item2']または'{"item1", "item2"}'の形式を使用します。JSON 配列形式の'["item1", "item2"]'は使用しないでください - 大文字と小文字を区別する SQL 識別子は、クエリ内で二重引用符で囲む必要があります
- 複雑な DDL 操作はタイムアウトする可能性があります(制限は約 60 秒)。小さなクエリに分割してください
- ERROR 42P01「relation does not exist」は、通常、大文字と小文字を区別する識別子が引用符で囲まれていないことを意味します
- 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. エッジ関数の管理
使用する場面:Supabase Edge Functions の一覧表示、詳細確認、または操作を行いたい場合
ツールの順序:
SUPABASE_LIST_ALL_PROJECTS- プロジェクト参照を確認します[前提条件]SUPABASE_LIST_ALL_FUNCTIONS- メタデータを含むすべてのエッジ関数を一覧表示します[必須]SUPABASE_RETRIEVE_A_FUNCTION- 特定の関数の詳細情報を取得します[任意]
主なパラメーター:
ref:プロジェクト参照- RETRIEVE_A_FUNCTION の関数スラッグ
注意点:
LIST_ALL_FUNCTIONSが返すのはメタデータのみで、関数のコードやログは含まれませんcreated_atとupdated_atはエポックミリ秒の場合があります。人が読めるタイムスタンプに変換してください- これらのツールではエッジ関数を作成またはデプロイできません。読み取り専用の確認ツールです
- 組織/プロジェクトの管理者権限がないと、権限エラーが発生する場合があります
5. ストレージバケットの管理
使用する場面:ストレージバケットの一覧表示やファイルストレージの管理を行いたい場合
ツールの順序:
SUPABASE_LIST_ALL_PROJECTS- プロジェクト参照を確認します[前提条件]SUPABASE_LISTS_ALL_BUCKETS- すべてのストレージバケットを一覧表示します[必須]
主なパラメーター:
ref:プロジェクト参照
注意点:
LISTS_ALL_BUCKETSが返すのはバケットの一覧のみで、バケットの内容やアクセス ポリシーは含まれません- ファイルのアップロードでは、
SUPABASE_RESUMABLE_UPLOAD_SIGN_OPTIONS_WITH_IDは TUS の再開可能なアップロードの CORS プリフライトのみを処理します - ファイルを直接操作するには、Supabase Storage API とともに
proxy_executeを使用する必要がある場合があります
よくあるパターン
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 の配列構文を使用します:
ARRAY['a', 'b']。['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 |
Composio 提供