mcpField
S
supabase-automation

supabase-automation

github.com/composiohqデータ・データベース78.3k86 回インストール14 週間前に更新
リポジトリ

supabase-automation について

Composio のツールキットを通じて Supabase の操作を自動化するスキルです。データベースクエリ、プロジェクトと組織の情報、ストレージバケット、Edge Functions、サービスの健全性を扱い、SQL 書き込みや機密 API キーの注意点も示します。

主な機能

  1. 01テーブルの照会とスキーマ確認
  2. 02SQL クエリの実行
  3. 03プロジェクトと組織設定の確認
  4. 04Edge Functions とストレージバケットの調査
  5. 05サービス健全性の確認と TypeScript 型の生成

活用シーン

  1. 01クエリ作成前のデータベース構造の把握
  2. 02SQL によるテーブルデータの読み取りや変更
  3. 03プロジェクト設定とサービス健全性の確認
  4. 04Edge Functions の調査やストレージバケットの一覧表示

MCP 対応

Rube MCP 経由で Composio の Supabase ツールキットを利用します。最新のツールスキーマを確認し、Supabase 接続が有効であることを確かめます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/composiohq/awesome-claude-skills --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 キーは不要です。エンドポイントを追加するだけで使用できます。

  1. RUBE_SEARCH_TOOLS が応答することを確認し、Rube MCP が利用可能であることを確かめます
  2. ツールキット supabase を指定して RUBE_MANAGE_CONNECTIONS を呼び出します
  3. 接続が ACTIVE でない場合は、返された認証リンクに従って Supabase 認証を完了します
  4. ワークフローを実行する前に、接続ステータスが ACTIVE であることを確認します

主なワークフロー

1. データベーステーブルのクエリと管理

使用する場面:テーブルからデータを読み取る、スキーマを確認する、または CRUD 操作を実行する場合

ツールの順序:

  1. SUPABASE_LIST_ALL_PROJECTS - プロジェクトを一覧表示して、対象の project_ref を見つけます[前提条件]
  2. SUPABASE_LIST_TABLES - データベース内のすべてのテーブルとビューを一覧表示します[前提条件]
  3. SUPABASE_GET_TABLE_SCHEMAS - カラムの型、制約、リレーションシップの詳細を取得します[書き込みの前提条件]
  4. SUPABASE_SELECT_FROM_TABLE - フィルタリング、並べ替え、ページネーションを使って行をクエリします[読み取りに必須]
  5. 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. プロジェクトと組織を管理する

使用する状況:ユーザーがプロジェクトの一覧表示、設定の確認、または組織の管理を希望している場合

ツールの実行順序:

  1. SUPABASE_LIST_ALL_ORGANIZATIONS - すべての組織を一覧表示します(ID と名前)[必須]
  2. SUPABASE_GETS_INFORMATION_ABOUT_THE_ORGANIZATION - slug を指定して組織の詳細情報を取得します[任意]
  3. SUPABASE_LIST_MEMBERS_OF_AN_ORGANIZATION - ロールと MFA のステータスを含め、組織のメンバーを一覧表示します[任意]
  4. SUPABASE_LIST_ALL_PROJECTS - メタデータとともにすべてのプロジェクトを一覧表示します[必須]
  5. SUPABASE_GETS_PROJECT_S_POSTGRES_CONFIG - データベース設定を取得します[任意]
  6. SUPABASE_GETS_PROJECT_S_AUTH_CONFIG - 認証設定を取得します[任意]
  7. SUPABASE_GET_PROJECT_API_KEYS - API キーを取得します(機密情報のため、取り扱いに注意してください)[任意]
  8. 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. データベーススキーマを確認する

使用する状況:ユーザーがテーブル構造、列、制約を把握したい場合、または型の生成を希望している場合

ツールの実行順序:

  1. SUPABASE_LIST_ALL_PROJECTS - 対象のプロジェクトを特定します[前提条件]
  2. SUPABASE_LIST_TABLES - メタデータとともにすべてのテーブルとビューを列挙します[必須]
  3. SUPABASE_GET_TABLE_SCHEMAS - 指定したテーブルの詳細なスキーマを取得します[必須]
  4. 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 の一覧表示、詳細確認、または操作を行いたい場合

ツールの順序:

  1. SUPABASE_LIST_ALL_PROJECTS - プロジェクト参照を確認します[前提条件]
  2. SUPABASE_LIST_ALL_FUNCTIONS - メタデータを含むすべてのエッジ関数を一覧表示します[必須]
  3. SUPABASE_RETRIEVE_A_FUNCTION - 特定の関数の詳細情報を取得します[任意]

主なパラメーター:

  • ref:プロジェクト参照
  • RETRIEVE_A_FUNCTION の関数スラッグ

注意点:

  • LIST_ALL_FUNCTIONS が返すのはメタデータのみで、関数のコードやログは含まれません
  • created_at と updated_at はエポックミリ秒の場合があります。人が読めるタイムスタンプに変換してください
  • これらのツールではエッジ関数を作成またはデプロイできません。読み取り専用の確認ツールです
  • 組織/プロジェクトの管理者権限がないと、権限エラーが発生する場合があります
5. ストレージバケットの管理

使用する場面:ストレージバケットの一覧表示やファイルストレージの管理を行いたい場合

ツールの順序:

  1. SUPABASE_LIST_ALL_PROJECTS - プロジェクト参照を確認します[前提条件]
  2. 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_ORGANIZATIONslug
組織メンバー一覧を取得SUPABASE_LIST_MEMBERS_OF_AN_ORGANIZATIONslug
プロジェクト一覧を取得SUPABASE_LIST_ALL_PROJECTS(なし)
テーブル一覧を取得SUPABASE_LIST_TABLESproject_ref、schemas
テーブルスキーマを取得SUPABASE_GET_TABLE_SCHEMASproject_ref、table_names
テーブルをクエリSUPABASE_SELECT_FROM_TABLEproject_ref、table、select、filters
SQL を実行SUPABASE_BETA_RUN_SQL_QUERYref、query、read_only
TS 型を生成SUPABASE_GENERATE_TYPE_SCRIPT_TYPESref、included_schemas
Postgres 設定SUPABASE_GETS_PROJECT_S_POSTGRES_CONFIGref
認証設定SUPABASE_GETS_PROJECT_S_AUTH_CONFIGref
API キーを取得SUPABASE_GET_PROJECT_API_KEYSref
サービスのヘルス状態SUPABASE_GETS_PROJECT_S_SERVICE_HEALTH_STATUSref、services
エッジ関数一覧を取得SUPABASE_LIST_ALL_FUNCTIONSref
エッジ関数を取得SUPABASE_RETRIEVE_A_FUNCTIONref、関数スラッグ
ストレージバケット一覧を取得SUPABASE_LISTS_ALL_BUCKETSref
DB ブランチ一覧を取得SUPABASE_LIST_ALL_DATABASE_BRANCHESref

Composio 提供

コメント