Supabase MCP サーバー
Supabaseデータベースと連携するためのモデルコンテキストプロトコル(MCP)サーバー。このサーバーは、FastMCP Python SDKを使用してモデルコンテキストプロトコルを実装し、大規模言語モデル(LLM)用のデータベース操作ツールを提供します。
特徴
- フィルタリング、ページネーション、ソート機能を使用して Supabase テーブルからレコードを読み取ります
- Supabase テーブルに新しいレコード (単一またはバッチ) を作成します
- フィルター条件に基づいて既存のレコードを更新する
- フィルター条件に基づいてテーブルからレコードを削除する
- MCPのStdioトランスポートを使用して通信します
前提条件
- Python 3.8以上
- テーブルがすでに設定されているSupabaseプロジェクト
- 認証用の Supabase サービス ロール キー
インストール
- このリポジトリをクローンします:Copy
- 仮想環境をセットアップします (推奨):Copy
- 依存関係をインストールします。Copy
- 環境変数を設定します。
.env.example
ファイルを.env
にコピーします。Copy.env
ファイルに Supabase URL とサービス ロール キーを入力します。Copy
使用法
サーバーの起動
仮想環境がアクティブになっていることを確認してから、サーバーを実行します。
サーバーは Stdio トランスポートを使用するため、標準入力で MCP 要求をリッスンし、標準出力で応答します。
MCPクライアントとの統合
このサーバーはモデルコンテキストプロトコル(MCP)を実装しており、MCP対応のあらゆるクライアントと統合できます。例えば、MCPツールをサポートするLLMフレームワークと連携して使用できます。
Windsurf/Cursor MCP設定への追加
この MCP サーバーを Windsurf または Cursor 構成に追加するには:
mcp_config.json
ファイルを見つけます。- Windows:
C:\Users\<username>\.codeium\windsurf\mcp_config.json
- macOS:
~/.codeium/windsurf/mcp_config.json
- Linux:
~/.codeium/windsurf/mcp_config.json
- Windows:
- Supabase MCP サーバーを
mcpServers
セクションに追加します。
/path/to/your/supabase-mcp/server.py
を server.py ファイルへの絶対パスに置き換えます。
注: 分離性を高めるために、仮想環境から Python 実行ファイルを使用できます。
- 変更を適用するには、Windsurf/Cursor アプリケーションを再起動します。
- Supabase MCP ツールが AI アシスタントで利用できるようになります。
ツールの説明
サーバーは次のツールを提供します。
1. レコードの読み取り
柔軟なクエリ オプションを使用して、Supabase データベース テーブルからレコードを読み取ります。
パラメータ:
table
(文字列、必須): 読み取るテーブルの名前columns
(文字列、オプション、デフォルト: "*"): 選択する列 (カンマ区切り、またはすべてを指定する場合は *)filters
(オブジェクト、オプション):キーと値のペアとしてのフィルタリング条件limit
(整数、オプション): 返されるレコードの最大数offset
(整数、オプション):ページ区切りでスキップするレコード数order_by
(オブジェクト、オプション): 列:方向のペアとして並べ替えオプションを指定します。
例:
2. レコードを作成する
Supabase データベース テーブルに 1 つ以上のレコードを作成します。
パラメータ:
table
(文字列、必須): レコードを作成するテーブルの名前records
(オブジェクトまたは配列、必須): 作成する単一のレコードオブジェクトまたはレコードオブジェクトの配列
例(単一レコード):
例 (複数のレコード):
3. レコードの更新
フィルター条件に基づいて、Supabase データベース テーブル内の既存のレコードを更新します。
パラメータ:
table
(文字列、必須): レコードを更新するテーブルの名前updates
(オブジェクト、必須): キーと値のペアとして更新するフィールドfilters
(オブジェクト、必須):更新するレコードを識別するためのフィルタリング条件
例:
4. レコードの削除
フィルター条件に基づいて Supabase データベース テーブルからレコードを削除します。
パラメータ:
table
(文字列、必須): レコードを削除するテーブルの名前filters
(オブジェクト、必須): 削除するレコードを識別するためのフィルタリング条件
例:
発達
プロジェクト構造
server.py
: メイン MCP サーバーの実装supabase_client.py
: Supabase クライアントラッパーrequirements.txt
: Python の依存関係.env.example
: 環境変数ファイルの例
新しいツールの追加
サーバーに新しいツールを追加するには:
server.py
でツールのリクエストパラメータの Pydantic モデルを定義します。SupabaseMCPServer
クラスにハンドラーメソッドを追加する_register_tools
メソッドで、わかりやすい名前とドキュメントを付けてツールを登録します。
ライセンス
貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。
This server cannot be installed
モデル コンテキスト プロトコルを実装して、LLM に Supabase データベースと対話するためのツールを提供し、フィルタリング機能やページ区切り機能を使用してレコードの読み取り、作成、更新、削除などの操作をサポートします。