mcpField
S
Supabase MCP Server

Supabase MCP Server

ローカル
github.com/Niell007クラウド・インフラ285 週間前に更新

Supabase MCP Server について

Supabase MCP Serverは、MCPクライアントをSupabaseのデータベースやプロジェクトAPIに接続します。リスク評価と段階的な安全制御を備えたSQL実行に加え、プロジェクト管理とAuth Admin操作を提供します。

主な機能

  1. 01読み取り専用または読み書きモードでのSQL実行
  2. 02SQLの検証とリスク評価
  3. 03安全・書き込み・破壊的操作の段階管理
  4. 04データベーススキーマ変更のバージョン管理
  5. 05Management APIによるプロジェクト管理
  6. 06Auth Adminメソッドによるユーザー管理

活用シーン

  1. 01IDEからSupabaseデータベースをクエリ
  2. 02安全制御付きのデータベース変更
  3. 03API経由でのSupabaseプロジェクト管理
  4. 04Supabase Authでのユーザー管理

MCP 対応

stdioを使用するMCPクライアントに、データベース、SQL、Supabase Management API、Auth Adminの機能をツールとして公開します。データベース接続はトランザクションプーリングに対応し、APIとAuth Admin機能にはリモートのSupabaseプロジェクトが必要です。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

Supabase MCP Server

Supabase    MCP

お気に入りの IDE で、安全に SQL クエリを実行し、データベースをエンドツーエンドで管理し、Management API にアクセスし、組み込みの安全制御によってユーザー認証を処理できます。

Star History Chart

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

あらゆる MCP クライアント(Cursor、Windsurf、Claude Desktop、Cline など)から Supabase データベースを安全に操作できる、多機能な MCP サーバーです。データベース管理、SQL クエリの実行、Supabase Management API へのアクセスを、組み込みの安全制御とともに提供します。

目次

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

✨ 主な機能

  • 💻 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 サーバー自体では asyncpg を使用するようになり、PostgreSQL の開発ライブラリに依存しなくなったため、PostgreSQL のインストールは不要になりました。

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

MacOS

brew install postgresql@16

Windows

  • https://www.postgresql.org/download/windows/ から PostgreSQL 16 以降をダウンロードしてインストールします
  • インストール時に「PostgreSQL Server」と「Command Line Tools」が選択されていることを確認します
Step 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 サーバーに接続する方法の詳しい手順は、こちらをご覧ください。

Step 2. 設定

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

環境変数

サーバーは次の環境変数を使用します。

変数必須デフォルト説明
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 用のサービスロールキー

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

接続の種類
データベース接続
  • サーバーはトランザクションプーラーのエンドポイントを使用して、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"

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

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": {
          "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": {
            "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": {
            "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 では完全に実装されていないメソッドがあります。
データベース変更の自動バージョン管理

「大きな力には大きな責任が伴います。」execute_postgresql ツールと、名前のとおりの live_dangerously ツールを組み合わせることで、Supabase データベースを強力かつ簡単に管理できます。その一方で、テーブルの削除や変更が、チャットメッセージを 1 つ送るだけで実行されることも意味します。取り消せない変更のリスクを軽減するため、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)

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

Supabase ログへの接続

Supabase のデータベースログに接続できるかどうか(まだサポートされていない場合)、デバッグに役立つ可能性があるため、調査する予定です。


お楽しみください! ☺️

コメント

MCP は初めてですか?

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

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