mcpField
Q
Query | MCP server for Supabase

Query | MCP server for Supabase

ローカル
github.com/alexander-zuevクラウド・インフラ83564 週間前に更新

Query | MCP server for Supabase について

Query MCP は、IDE から SQL の実行、スキーマ変更の管理、Management API と Auth Admin SDK の呼び出しを行えるオープンソースの MCP サーバーです。SQL 操作には安全制御が組み込まれています。作者は公式の Supabase MCP サーバーが公開されたため、本プロジェクトの積極的な保守を終了したと述べています。

主な機能

  1. 01読み取り専用と読み書きモードを切り替えるSQL実行
  2. 02実行時のSQL検証とリスクレベル評価
  3. 03安全・書き込み・破壊的の3段階の操作分類
  4. 04スキーマ変更の自動バージョン管理
  5. 05Management API による Supabase プロジェクト管理
  6. 06Python SDK による Auth Admin メソッドのユーザー管理

活用シーン

  1. 01Cursor や Windsurf から Supabase データベースに対してSQLを実行
  2. 02データベーススキーマの変更履歴の追跡と確認
  3. 03IDE 内での Supabase プロジェクトとユーザーの管理

MCP 対応

本プロジェクトは MCP サーバーであり、Cursor、Windsurf、Cline など stdio に対応する MCP クライアントに、データベース、プロジェクト管理、ユーザー管理のツールを公開します。動作には QUERY_API_KEY が必要です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Query | Supabase 用 MCP サーバー

🌅 PyPI 経由で 17,000 件以上インストールされ、Smithery.ai では 30,000 件近くダウンロードされました。ひと言で言えば、楽しい経験でした! 🥳 この数か月間、このサーバーを使ってくださった皆さんに感謝します。お役に立てていたなら幸いです。 Supabase が独自の公式 MCP サーバーをリリースしたため、 このサーバーの積極的なメンテナンスは終了することにしました。公式 MCP サーバーも同様に機能が充実しており、今後さらに多くの 機能が追加される予定です。ぜひご確認ください!

Query MCP は、IDE から安全に SQL を実行し、スキーマの変更を管理し、Supabase Management API を呼び出し、Auth Admin SDK を使用できるオープンソースの MCP サーバーです。安全性を確保するための機能を標準で備えています。

PyPI のバージョン CI のステータス コードカバレッジ Python 3.12+ uv パッケージマネージャー PyPI のダウンロード数 Smithery.ai のダウンロード数 MCP サーバー ライセンス

目次

はじめに • 機能の概要 • トラブルシューティング • 変更履歴

✨ 主な機能

  • 💻 stdio プロトコルに対応した Cursor、Windsurf、Cline などの MCP クライアントと互換性があります
  • 🔐 SQL クエリ実行の読み取り専用モードと読み書きモードを制御できます
  • 🔍 リスクレベルの評価を伴う、実行時の SQL クエリ検証
  • 🛡️ SQL 操作向けの 3 段階の安全システム:安全、書き込み、破壊的
  • 🔄 直接接続とプール接続の両方に対応した堅牢なトランザクション処理
  • 📝 データベースのスキーマ変更を自動でバージョン管理
  • 💻 Supabase Management API を使用して Supabase プロジェクトを管理
  • 🧑‍💻 Python SDK の Supabase Auth Admin メソッドを使用してユーザーを管理
  • 🔨 Cursor と Windsurf が MCP をより効果的に利用できるようにする、すぐに使えるツール
  • 📦 パッケージマネージャー(uv、pipx など)を使った簡単なインストールとセットアップ

はじめに

前提条件

サーバーをインストールするには、システムに以下が必要です。

  • Python 3.12+

uv 経由でインストールする場合は、インストール済みであることを確認してください。

PostgreSQL のインストール

現在、MCP サーバー自体は PostgreSQL に依存しない asyncpg を使用しているため、PostgreSQL のインストールは不要です。asyncpg は PostgreSQL 開発ライブラリに依存しません。

ただし、ローカルの Supabase インスタンスを実行する場合は、引き続き PostgreSQL が必要です。

MacOS

brew install postgresql@16

Windows

  • https://www.postgresql.org/download/windows/ から PostgreSQL 16+ をダウンロードしてインストールします
  • インストール時に「PostgreSQL Server」と「Command Line Tools」が選択されていることを確認します
ステップ 1.インストール

v0.2.0 から、パッケージのインストールに対応しました。お好みの Python パッケージマネージャーを使って、次のコマンドでサーバーをインストールできます。

# if pipx is installed (recommended)
pipx install supabase-mcp-server

# if uv is installed
uv pip install supabase-mcp-server

pipx は、パッケージごとに分離された環境を作成するため、推奨されています。

リポジトリをクローンし、ルートディレクトリから pipx install -e . を実行して、サーバーを手動でインストールすることもできます。

ソースからのインストール

ローカル開発などのためにソースからインストールする場合は、次の手順に従ってください。

uv venv
# On Mac
source .venv/bin/activate
# On Windows
.venv\Scripts\activate
# Install package in editable mode
uv pip install -e .
Smithery.ai 経由でのインストール

Smithery.ai を使ってこの MCP サーバーに接続する手順の全容は、こちらをご覧ください。

ステップ 2.設定

Supabase MCP サーバーでは、Supabase データベースへの接続、Management API へのアクセス、Auth Admin SDK の使用に設定が必要です。このセクションでは、利用可能なすべての設定オプションと設定方法を説明します。

🔑 重要:v0.4 から、この MCP サーバーを使用するには API キーが必要です。API キーは thequery.dev で無料で取得できます。

環境変数

サーバーでは、以下の環境変数を使用します。

変数必須デフォルト説明
SUPABASE_PROJECT_REFはい127.0.0.1:54322Supabase プロジェクトの参照 ID(またはローカルのホスト名:ポート)
SUPABASE_DB_PASSWORDはいpostgresデータベースのパスワード
SUPABASE_REGIONはい*us-east-1Supabase プロジェクトがホストされている AWS リージョン
SUPABASE_ACCESS_TOKENいいえなしSupabase Management API 用の個人用アクセストークン
SUPABASE_SERVICE_ROLE_KEYいいえなしAuth Admin SDK 用のサービスロールキー
QUERY_API_KEYはいなしthequery.dev の API キー(すべての操作に必須)

注:デフォルト値は、ローカルでの Supabase 開発用に設定されています。リモートの Supabase プロジェクトでは、SUPABASE_PROJECT_REF と SUPABASE_DB_PASSWORD に独自の値を指定する必要があります。

🚨 重要な設定に関する注意:リモートの Supabase プロジェクトでは、SUPABASE_REGION を使って、プロジェクトがホストされている正しいリージョンを必ず指定してください。「Tenant or user not found」エラーが発生した場合、ほぼ間違いなく、リージョンの設定が実際のプロジェクトのリージョンと一致していません。プロジェクトのリージョンは、Supabase ダッシュボードの Project Settings で確認できます。

接続の種類
データベース接続
  • サーバーはトランザクションプーラーのエンドポイントを使って、Supabase PostgreSQL データベースに接続します
  • ローカル開発では、127.0.0.1:54322 に直接接続します
  • リモートプロジェクトでは、次の形式を使用します:postgresql://postgres.[project_ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres

⚠️ 重要:セッションプーリング接続には対応していません。MCP サーバーのアーキテクチャとの互換性を高めるため、サーバーはトランザクションプーリングのみを使用します。

Management API 接続
  • SUPABASE_ACCESS_TOKEN の設定が必要です
  • https://api.supabase.com の Supabase Management API に接続します
  • リモートの Supabase プロジェクトでのみ動作します(ローカル開発では動作しません)
Auth Admin SDK 接続
  • SUPABASE_SERVICE_ROLE_KEY の設定が必要です
  • ローカル開発では、http://127.0.0.1:54321 に接続します
  • リモートプロジェクトでは、https://[project_ref].supabase.co に接続します
設定方法

サーバーは、次の優先順位(高い順)で設定を検索します。

  1. 環境変数:環境に直接設定された値
  2. ローカルの .env ファイル:現在の作業ディレクトリにある .env ファイル(ソースから実行する場合のみ有効)
  3. グローバル設定ファイル:
    • Windows:%APPDATA%\supabase-mcp\.env
    • macOS/Linux:~/.config/supabase-mcp/.env
  4. デフォルト設定:ローカル開発用のデフォルト設定(ほかの設定が見つからない場合)

⚠️ 重要:pipx または uv でインストールしたパッケージを使用する場合、プロジェクトディレクトリ内のローカルな .env ファイルは検出されません。環境変数またはグローバル設定ファイルを使用する必要があります。

設定のセットアップ
オプション 1:クライアント固有の設定(推奨)

MCP クライアントの設定に環境変数を直接設定します(ステップ 3 のクライアント固有のセットアップ手順を参照してください)。ほとんどの MCP クライアントがこの方法に対応しており、クライアントの設定と一緒に設定を管理できます。

オプション 2:グローバル設定

すべての MCP サーバーインスタンスで使用するグローバルな .env 設定ファイルを作成します。

# Create config directory
# On macOS/Linux
mkdir -p ~/.config/supabase-mcp
# On Windows (PowerShell)
mkdir -Force "$env:APPDATA\supabase-mcp"

# Create and edit .env file
# On macOS/Linux
nano ~/.config/supabase-mcp/.env
# On Windows (PowerShell)
notepad "$env:APPDATA\supabase-mcp\.env"

ファイルに設定値を追加します。

QUERY_API_KEY=your-api-key
SUPABASE_PROJECT_REF=your-project-ref
SUPABASE_DB_PASSWORD=your-db-password
SUPABASE_REGION=us-east-1
SUPABASE_ACCESS_TOKEN=your-access-token
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
オプション 3:プロジェクト固有の設定(ソースからインストールした場合のみ)

サーバーをパッケージ経由ではなくソースから実行する場合は、上記と同じ形式でプロジェクトディレクトリに .env ファイルを作成できます。

Supabase プロジェクト情報の確認方法
  • プロジェクト参照 ID:Supabase プロジェクト URL にあります:https://supabase.com/dashboard/project/<project-ref>
  • データベースのパスワード:プロジェクト作成時に設定するか、Project Settings → Database で確認できます
  • アクセストークン:https://supabase.com/dashboard/account/tokens で生成します
  • サービスロールキー:Project Settings → API → Project API keys で確認できます
対応リージョン

サーバーは、すべての Supabase リージョンに対応しています。

  • us-west-1 - 米国西部(北カリフォルニア)
  • us-east-1 - 米国東部(北バージニア)- デフォルト
  • us-east-2 - 米国東部(オハイオ)
  • ca-central-1 - カナダ(中部)
  • eu-west-1 - EU 西部(アイルランド)
  • eu-west-2 - 西ヨーロッパ(ロンドン)
  • eu-west-3 - EU 西部(パリ)
  • eu-central-1 - EU 中部(フランクフルト)
  • eu-central-2 - 中央ヨーロッパ(チューリッヒ)
  • eu-north-1 - EU 北部(ストックホルム)
  • ap-south-1 - 南アジア(ムンバイ)
  • ap-southeast-1 - 東南アジア(シンガポール)
  • ap-northeast-1 - 北東アジア(東京)
  • ap-northeast-2 - 北東アジア(ソウル)
  • ap-southeast-2 - オセアニア(シドニー)
  • sa-east-1 - 南米(サンパウロ)
制限事項
  • セルフホスト非対応:サーバーは、公式の Supabase.com ホスト型プロジェクトとローカル開発のみをサポートします
  • 接続文字列非対応:カスタム接続文字列はサポートされていません
  • セッションプーリング非対応:データベース接続ではトランザクションプーリングのみサポートされています
  • API と SDK の機能:Management API と Auth Admin SDK の機能は、リモート Supabase プロジェクトでのみ動作し、ローカル開発では動作しません
ステップ 3. 使用方法

一般に、stdio プロトコルに対応する MCP クライアントであれば、この MCP サーバーを利用できます。このサーバーは、以下のクライアントで動作することを明示的にテスト済みです。

  • Cursor
  • Windsurf
  • Cline
  • Claude Desktop

また、smithery.ai を使って、このサーバーを上記を含む複数のクライアントにインストールすることもできます。

以下のガイドに従って、この MCP サーバーをクライアントにインストールしてください。

Cursor

Settings -> Features -> MCP Servers に移動し、次の設定で新しいサーバーを追加します。

# can be set to any name
name: supabase
type: command
# if you installed with pipx
command: supabase-mcp-server
# if you installed with uv
command: uv run supabase-mcp-server
# if the above doesn't work, use the full path (recommended)
command: /full/path/to/supabase-mcp-server  # Find with 'which supabase-mcp-server' (macOS/Linux) or 'where supabase-mcp-server' (Windows)

設定が正しければ、緑色の点と、サーバーが公開するツールの数が表示されます。 Cursor の設定が成功した場合の表示

Windsurf

Cascade に移動 -> ハンマーアイコンをクリック -> Configure -> 設定を入力します:

{
    "mcpServers": {
      "supabase": {
        "command": "/Users/username/.local/bin/supabase-mcp-server",  // update path
        "env": {
          "QUERY_API_KEY": "your-api-key",  // Required - get your API key at thequery.dev
          "SUPABASE_PROJECT_REF": "your-project-ref",
          "SUPABASE_DB_PASSWORD": "your-db-password",
          "SUPABASE_REGION": "us-east-1",  // optional, defaults to us-east-1
          "SUPABASE_ACCESS_TOKEN": "your-access-token",  // optional, for management API
          "SUPABASE_SERVICE_ROLE_KEY": "your-service-role-key"  // optional, for Auth Admin SDK
        }
      }
    }
}

設定が正しければ、緑色のドットインジケーターと、利用可能なサーバー一覧にクリック可能な supabase サーバーが表示されます。

Windsurf の設定が正しく完了した状態

Claude Desktop

Claude Desktop は JSON 設定を使用した MCP サーバーにも対応しています。以下の手順で Supabase MCP サーバーを設定します:

  1. 実行可能ファイルの完全なパスを確認します(この手順は重要です):

    # On macOS/Linux
    which supabase-mcp-server
    
    # On Windows
    where supabase-mcp-server
    

    返された完全なパスをコピーします(例:/Users/username/.local/bin/supabase-mcp-server)。

  2. Claude Desktop で MCP サーバーを設定します:

    • Claude Desktop を開きます
    • Settings → Developer -> Edit Config MCP Servers に移動します
    • 次の JSON を使って新しい設定を追加します:
    {
      "mcpServers": {
        "supabase": {
          "command": "/full/path/to/supabase-mcp-server",  // Replace with the actual path from step 1
          "env": {
            "QUERY_API_KEY": "your-api-key",  // Required - get your API key at thequery.dev
            "SUPABASE_PROJECT_REF": "your-project-ref",
            "SUPABASE_DB_PASSWORD": "your-db-password",
            "SUPABASE_REGION": "us-east-1",  // optional, defaults to us-east-1
            "SUPABASE_ACCESS_TOKEN": "your-access-token",  // optional, for management API
            "SUPABASE_SERVICE_ROLE_KEY": "your-service-role-key"  // optional, for Auth Admin SDK
          }
        }
      }
    }
    

⚠️ 重要:Windsurf や Cursor とは異なり、Claude Desktop では実行可能ファイルの絶対パス全体が必要です。コマンド名だけ(supabase-mcp-server)を使用すると、「spawn ENOENT」エラーが発生します。

設定が正しければ、Claude Desktop で Supabase MCP サーバーが利用可能なサーバーとして表示されます。

Windsurf の設定が正しく完了した状態

Cline

Cline は同様の JSON 設定を使用した MCP サーバーにも対応しています。以下の手順で Supabase MCP サーバーを設定します:

  1. 実行可能ファイルの完全なパスを確認します(この手順は重要です):

    # On macOS/Linux
    which supabase-mcp-server
    
    # On Windows
    where supabase-mcp-server
    

    返された完全なパスをコピーします(例:/Users/username/.local/bin/supabase-mcp-server)。

  2. Cline で MCP サーバーを設定します:

    • VS Code で Cline を開きます
    • Cline のサイドバーにある「MCP Servers」タブをクリックします
    • 「Configure MCP Servers」をクリックします
    • cline_mcp_settings.json ファイルが開きます
    • 次の設定を追加します:
    {
      "mcpServers": {
        "supabase": {
          "command": "/full/path/to/supabase-mcp-server",  // Replace with the actual path from step 1
          "env": {
            "QUERY_API_KEY": "your-api-key",  // Required - get your API key at thequery.dev
            "SUPABASE_PROJECT_REF": "your-project-ref",
            "SUPABASE_DB_PASSWORD": "your-db-password",
            "SUPABASE_REGION": "us-east-1",  // optional, defaults to us-east-1
            "SUPABASE_ACCESS_TOKEN": "your-access-token",  // optional, for management API
            "SUPABASE_SERVICE_ROLE_KEY": "your-service-role-key"  // optional, for Auth Admin SDK
          }
        }
      }
    }
    

設定が正しければ、Cline の MCP Servers 一覧で Supabase MCP サーバーの横に緑色のインジケーターが表示され、パネル下部に「supabase MCP server connected」という確認メッセージが表示されます。

Cline で設定が正しく完了した状態

トラブルシューティング

役立つヒントやコツをいくつかご紹介します。

  • インストールのデバッグ - ターミナルから直接 supabase-mcp-server を実行し、動作するか確認してください。動作しない場合は、インストールに問題がある可能性があります。
  • MCP サーバーの設定 - 上記の手順で動作した場合、サーバーは正しくインストールされ、設定されています。適切なコマンドを指定していれば、IDE は接続できるはずです。サーバーの実行ファイルへの正しいパスを指定してください。
  • 「No tools found」エラー - パッケージがインストールされているにもかかわらず、Cursor で「Client closed - no tools available」と表示される場合:
    • which supabase-mcp-server(macOS/Linux)または where supabase-mcp-server(Windows)を実行して、実行ファイルのフルパスを確認してください
    • MCP サーバーの設定では、supabase-mcp-server だけでなくフルパスを使用してください
    • 例:/Users/username/.local/bin/supabase-mcp-server または C:\Users\username\.local\bin\supabase-mcp-server.exe
  • 環境変数 - 正しいデータベースに接続するには、mcp_config.json で環境変数を設定するか、グローバル設定ディレクトリに配置した .env ファイル(macOS/Linux では ~/.config/supabase-mcp/.env、Windows では %APPDATA%\supabase-mcp\.env)で設定してください。
  • ログへのアクセス - MCP サーバーは詳細なログをファイルに書き込みます。
    • ログファイルの場所:
      • macOS/Linux:~/.local/share/supabase-mcp/mcp_server.log
      • Windows:%USERPROFILE%\.local\share\supabase-mcp\mcp_server.log
    • ログには接続状況、設定の詳細、操作結果が含まれます
    • 任意のテキストエディターまたはターミナルコマンドでログを表示できます。
      # macOS/Linux の場合
      cat ~/.local/share/supabase-mcp/mcp_server.log
      
      # Windows(PowerShell)の場合
      Get-Content "$env:USERPROFILE\.local\share\supabase-mcp\mcp_server.log"
      

行き詰まった場合や、上記の手順に誤りがある場合は、イシューを報告してください。

MCP Inspector

MCP サーバーの問題のデバッグに非常に役立つツールが MCP Inspector です。ソースからインストールした場合は、プロジェクトのリポジトリから supabase-mcp-inspector を実行すると、インスペクターのインスタンスが起動します。ログと併せて使用すれば、サーバーで何が起きているかを詳しく把握できます。

📝 パッケージからインストールした場合、supabase-mcp-inspector は正常に動作しません。次回のリリースで検証して修正します。

機能概要

データベースクエリツール

v0.3 以降、サーバーは安全制御機能を組み込んだ包括的なデータベース管理機能を提供します。

  • SQL クエリの実行:リスク評価を行いながら PostgreSQL クエリを実行します

    • 3 段階の安全システム:
      • safe:読み取り専用操作(SELECT)— 常に許可されます
      • write:データ変更(INSERT、UPDATE、DELETE)— unsafe モードが必要です
      • destructive:スキーマ変更(DROP、CREATE)— unsafe モードと確認が必要です
  • SQL の解析と検証:

    • PostgreSQL のパーサー(pglast)を使用して正確に分析し、安全要件について明確なフィードバックを提供します
  • マイグレーションの自動バージョン管理:

    • データベースを変更する操作には自動的にバージョンが付与されます
    • 操作の種類と対象に基づいて、内容を示す名前を生成します
  • 安全制御:

    • デフォルトの SAFE モードでは読み取り専用操作のみが許可されます
    • asyncpg を介して、すべてのステートメントをトランザクションモードで実行します
    • 高リスク操作には 2 段階の確認が必要です
  • 利用可能なツール:

    • get_schemas:スキーマのサイズとテーブル数を一覧表示します
    • get_tables:テーブル、外部テーブル、ビューをメタデータと併せて一覧表示します
    • get_table_schema:テーブル構造(列、キー、リレーションシップ)の詳細を取得します
    • execute_postgresql:データベースに対して SQL ステートメントを実行します
    • confirm_destructive_operation:確認後に高リスク操作を実行します
    • retrieve_migrations:フィルタリングとページネーションのオプションを指定してマイグレーションを取得します
    • live_dangerously:safe モードと unsafe モードを切り替えます
管理 API ツール

v0.3.0 以降、サーバーは組み込みの安全制御により、Supabase Management API への安全なアクセスを提供します。

  • 利用可能なツール:

    • send_management_api_request:プロジェクト参照を自動的に挿入し、Supabase Management API に任意のリクエストを送信します
    • get_management_api_spec:安全性情報を付加した API 仕様を取得します
      • ドメイン別、特定のパス/メソッド別、またはすべてのパスなど、複数のクエリモードに対応しています
      • 各エンドポイントのリスク評価情報が含まれます
      • 詳細なパラメーター要件とレスポンス形式を提供します
      • LLM が Supabase Management API のすべての機能を理解するのに役立ちます
    • get_management_api_safety_rules:人が読みやすい説明付きで、すべての安全ルールを取得します
    • live_dangerously:安全モードと危険モードを切り替えます
  • 安全制御:

    • データベース操作と同じ安全性マネージャーを使用し、一貫したリスク管理を行います
    • 操作はリスクレベル別に分類されます:
      • safe:読み取り専用操作(GET)— 常に許可されます
      • unsafe:状態を変更する操作(POST、PUT、PATCH、DELETE)— 危険モードが必要です
      • blocked:破壊的な操作(プロジェクトの削除など)— 常に禁止されます
    • デフォルトの安全モードにより、意図しない状態変更を防ぎます
    • パスベースのパターンマッチングにより、正確な安全ルールを適用します

注:Management API ツールはリモートの Supabase インスタンスでのみ動作し、ローカルの Supabase 開発環境には対応していません。

Auth Admin ツール

当初は Python SDK のメソッドに対応する機能を MCP サーバーに追加する予定でした。検討の結果、Auth admin メソッドのみを追加することにしました。テストユーザーを手動で作成することが多く、エラーが起きやすいうえ、時間もかかっていたためです。これで Cursor にテストユーザーの作成を依頼するだけで、スムーズに作成できるようになりました。機能の詳細については、Auth Admin SDK メソッドのドキュメント全文をご確認ください。

v0.3.6 以降、サーバーは Python SDK を介して Supabase Auth Admin メソッドに直接アクセスできます。

  • 以下のツールが含まれます:
    • get_auth_admin_methods_spec:利用可能なすべての Auth Admin メソッドのドキュメントを取得します
    • call_auth_admin_method:適切なパラメーター処理により、Auth Admin メソッドを直接呼び出します
  • 対応メソッド:
    • get_user_by_id:ID でユーザーを取得します
    • list_users:ページネーションを使用して、すべてのユーザーを一覧表示します
    • create_user:新しいユーザーを作成します
    • delete_user:ID でユーザーを削除します
    • invite_user_by_email:ユーザーのメールアドレスに招待リンクを送信します
    • generate_link:さまざまな認証用途に使うメールリンクを生成します
    • update_user_by_id:ID でユーザー属性を更新します
    • delete_factor:ユーザーのファクターを削除します(現在、SDK には未実装です)
生の SQL クエリではなく Auth Admin SDK を使用する理由

Auth Admin SDK には、直接 SQL を操作する場合と比べて、次のような主な利点があります。

  • 機能性:SQL だけでは実行できない操作(招待、マジックリンク、MFA)を実行できます

  • 正確性:認証スキーマに対する生の SQL クエリを作成・実行するよりも信頼性が高くなります

  • シンプルさ:適切な検証とエラーハンドリングを備えた、わかりやすいメソッドを利用できます

    • レスポンス形式:
      • すべてのメソッドは、生の辞書ではなく構造化された Python オブジェクトを返します
      • オブジェクトの属性はドット表記でアクセスできます(例:user["id"] ではなく user.id)
    • エッジケースと制限事項:
      • UUID の検証:多くのメソッドではユーザー ID に有効な UUID 形式が必要で、形式が無効な場合は特定の検証エラーが返されます
      • メール設定:invite_user_by_email や generate_link などのメソッドを使用するには、Supabase プロジェクトでメール送信を設定する必要があります
      • リンクの種類:リンクを生成する場合、リンクの種類によって要件が異なります。
        • signup リンクでは、ユーザーが存在している必要はありません
        • magiclink と recovery リンクでは、ユーザーがすでにシステムに存在している必要があります
      • エラーハンドリング:サーバーは Supabase API から詳細なエラーメッセージを返します。これらはダッシュボードのインターフェースに表示される内容と異なる場合があります
      • メソッドの利用可否:delete_factor など、一部のメソッドは API で公開されていますが、SDK では完全に実装されていません
ログと分析

このサーバーでは、Supabase のログと分析データにアクセスできるため、アプリケーションの監視やトラブルシューティングが容易になります。

  • 利用可能なツール:retrieve_logs - 任意の Supabase サービスのログにアクセスできます

  • ログコレクション:

    • postgres:データベースサーバーのログ
    • api_gateway:API ゲートウェイのリクエスト
    • auth:認証イベント
    • postgrest:RESTful API サービスのログ
    • pooler:コネクションプーリングのログ
    • storage:オブジェクトストレージの操作
    • realtime:WebSocket サブスクリプションのログ
    • edge_functions:サーバーレス関数の実行
    • cron:スケジュール済みジョブのログ
    • pgbouncer:コネクションプーラーのログ
  • 機能:時間で絞り込む、テキストを検索する、フィールドフィルターを適用する、またはカスタム SQL クエリを使用できます

インターフェースを切り替えたり複雑なクエリを記述したりすることなく、Supabase スタック全体のデバッグを簡素化できます。

データベース変更の自動バージョン管理

「大いなる力には、大いなる責任が伴います。」execute_postgresql ツールと、名前のとおりの live_dangerously ツールを組み合わせると、Supabase データベースを強力かつ簡単に管理できます。その一方で、テーブルの削除や変更がチャットメッセージひとつで実行できてしまいます。取り消せない変更のリスクを減らすため、v0.3.8 以降、サーバーでは次の機能をサポートしています。

  • データベース上で実行された、すべての書き込み系および破壊的な SQL 操作に対するマイグレーションスクリプトの自動作成
  • クエリ実行のセーフティモードの改善。このモードでは、すべてのクエリが次のように分類されます。
    • safe タイプ:常に許可されます。読み取り専用操作がすべて含まれます。
    • writeタイプ:ユーザーが write モードを有効にする必要があります。
    • destructive タイプ:ユーザーが write モードを有効にする必要があり、さらにツールを自動実行しないクライアントでは、クエリ実行の2段階確認が必要です。
ユニバーサルセーフティモード

v0.3.8 以降、ユニバーサルセーフティマネージャーを使用して、すべてのサービス(データベース、API、SDK)でセーフティモードが標準化されました。これにより、リスク管理に一貫性がもたらされ、MCP サーバー全体の安全設定を制御するための統一インターフェースが提供されます。

すべての操作(SQL クエリ、API リクエスト、SDK メソッド)はリスクレベルに分類されます。

  • Low リスク:データや構造を変更しない読み取り専用操作(SELECT クエリ、GET API リクエスト)
  • Medium リスク:構造は変更せずにデータを変更する書き込み操作(INSERT/UPDATE/DELETE、ほとんどの POST/PUT API リクエスト)
  • High リスク:データベース構造を変更する、またはデータ損失を引き起こす可能性がある破壊的な操作(DROP/TRUNCATE、DELETE API エンドポイント)
  • Extreme リスク:深刻な結果を招く操作で、全面的にブロックされます(プロジェクトの削除)

安全制御はリスクレベルに応じて適用されます。

  • 低リスクの操作は常に許可されます
  • 中リスクの操作には、unsafe モードを有効にする必要があります
  • 高リスクの操作には、unsafe モードの有効化と明示的な確認が必要です
  • 極めて高リスクの操作は決して許可されません
確認フローの仕組み

高リスクの操作(PostgreSQL リクエスト、API リクエストを問わず)は、unsafe モードでもブロックされます。 すべての高リスク操作はブロックされます 実行するには、高リスクの操作ごとに明示的に確認して承認する必要があります。 常に明示的な承認が必要です

変更履歴

  • 📦 パッケージマネージャーを利用したインストールの簡素化 - ✅ (v0.2.0)
  • 🌎 各種 Supabase リージョンへの対応 - ✅ (v0.2.2)
  • 🎮 安全制御を備えた Supabase 管理 API へのプログラムによるアクセス - ✅ (v0.3.0)
  • 👷‍♂️ 安全制御を備えた読み取りおよび読み書きのデータベース SQL クエリ - ✅ (v0.3.0)
  • 🔄 直接接続とプール接続の両方に対応した堅牢なトランザクション処理 - ✅ (v0.3.2)
  • 🐍 ネイティブ Python SDK で利用可能なメソッドとオブジェクトへの対応 - ✅ (v0.3.6)
  • 🔍 SQL クエリの検証を強化 ✅ (v0.3.8)
  • 📝 データベース変更の自動バージョン管理 ✅ (v0.3.8)
  • 📖 API 仕様に関するナレッジとツールを大幅に改善 ✅ (v0.3.8)
  • ✍️ 整理されたデータベース VCS を実現するため、マイグレーション関連ツールの一貫性を改善 ✅ (v0.3.10)
  • 🥳 Query MCP をリリース (v0.4.0)

より詳細なロードマップについては、GitHub のこちらのディスカッションをご覧ください。

Star History

Star History Chart


お楽しみください! ☺️

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。