mcpField
S
supabase-automation

supabase-automation

github.com/sickn33データ・データベース48.7k264 回インストール今日更新
リポジトリ

supabase-automation について

Rube MCP と Composio の Supabase ツールキットを通じて、Supabase 操作を自動化するスキルです。データベースの調査とクエリ、プロジェクトや組織、ストレージバケット、Edge Functions、サービス状態を扱い、接続と権限を確認します。

主な機能

  1. 01テーブル、スキーマ、関連の確認
  2. 02データ行の検索と SQL 実行
  3. 03プロジェクトと組織の確認
  4. 04Edge Functions とバケットの調査
  5. 05サービス状態と設定の確認
  6. 06有効かつ承認済みの接続が必須

活用シーン

  1. 01Supabase データベーススキーマの調査
  2. 02データベースレコードの読み取りや更新
  3. 03プロジェクト設定とメンバーの確認
  4. 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 接続の認証フローを明示的に許可してください。エンドポイントを追加しただけではアクセスできません。

  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 は小文字 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. プロジェクトと組織を管理する

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

ツールの実行順序:

  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. Edge Functions を管理する

使用する場面:Supabase Edge Functions の一覧表示、詳細確認、または操作を行いたい場合

ツールの実行順序:

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

主なパラメーター:

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

注意点:

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

使用する場面:Storage Buckets の一覧表示、またはファイルストレージの管理を行いたい場合

ツールの実行順序:

  1. SUPABASE_LIST_ALL_PROJECTS - プロジェクトの参照情報を確認します[前提条件]
  2. 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_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

使用するタイミング

このスキルは、概要で説明されているワークフローまたはアクションを実行する場合に適用できます。

例

ユーザーのリクエスト:

Rube MCP(Composio)経由で、Supabase のデータベースクエリ、テーブル管理、プロジェクト管理、ストレージ、エッジ関数、SQL の実行を自動化してください。

制限事項

  • このスキルは、タスクが上記の説明の範囲に明確に該当する場合にのみ使用してください。
  • 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中止して確認してください。

上記のツール名、スキーマ、識別子の制約、制限は、過去のコネクターのスナップショットを示しています。現在の探索結果を優先し、返された識別子を表示名から推測せず、そのまま保持してください。スキーマの検査は、書き込み、キーの取得、個人データの一括エクスポート、または認証設定の変更を許可するものではありません。管理用 SQL は、特権アクセスで実行され、アプリケーションの RLS を迂回する場合があります。プロジェクト、スキーマ、行を適切に限定し、値をパラメーター化してください。読み取り専用トランザクションでもコストが高くなる場合があります。クエリに上限を設け、DDL の前にロックを確認してください。復旧計画なしにタイムアウトを回避する目的だけで、アトミックなマイグレーションを分割しないでください。オフセットページネーションでは安定した一意の順序を使用し、同時変更による制限を明示してください。結果が不明な書き込みを再実行しないでください。

コメント