Supabase MCP Server について
Supabase MCP Server は Python で書かれた MCP サーバーで、AI アシスタントが標準化されたインターフェースを通じて Supabase データベースの読み取り、作成、更新、削除を行えるようにします。Docker で実行され、アシスタントから Supabase のテーブルデータを扱いたいユーザーを想定しています。
主な機能
- 01フィルター、ページネーション、列選択を伴うテーブル行の読み取り
- 02Supabase テーブルへのレコード追加
- 03条件に一致するレコードの更新
- 04条件に一致するレコードの削除
- 05Docker コンテナとしての実行
活用シーン
- 01AI アシスタントによる Supabase テーブルデータの照会
- 02アシスタント経由のデータベースレコードの追加・更新
- 03MCP 対応デスクトップクライアントからの Supabase データ管理
MCP 対応
MCP サーバーとして、read_table_rows、create_table_records、update_table_records、delete_table_records などのツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Supabase MCP サーバー
Supabase データベースとやり取りするためのツールを提供する、Model Context Protocol(MCP)サーバーです。このサーバーにより、AI アシスタントは標準化されたインターフェースを通じてデータベース操作を実行できます。
注意:この Supabase MCP サーバーは、私の AI IDE コーディングワークフローのデモとして作成されました。現在も開発中で、今後 私のチャンネル で公開する動画を通じて拡張していく予定です。
機能
- テーブル行の読み取り:任意のフィルタリング、ページネーション、列選択を指定して、Supabase テーブルからデータをクエリします
- テーブルレコードの作成:Supabase テーブルに新しいレコードを挿入します
- テーブルレコードの更新:フィルターに基づいて、Supabase テーブルの既存レコードを変更します
- テーブルレコードの削除:フィルターに基づいて、Supabase テーブルのレコードを削除します
前提条件
- Docker または Docker Desktop
- Supabase アカウントとプロジェクト
インストール
- リポジトリをクローンします:
git clone https://github.com/coleam00/supabase-mcp.git cd supabase-mcp
Docker のセットアップ
- Docker イメージをビルドします:
docker build -t mcp/supabase .
使用方法
Docker で MCP サーバーとして実行する
Supabase MCP サーバーは、Model Context Protocol を使用する AI アシスタントと統合できます。
- MCP 設定に以下の構成を追加します(Claude Desktop、Windsurf など)。
まず、インストール手順に従ってコンテナをビルドしてください!
{
"mcpServers": {
"supabase": {
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "SUPABASE_URL", "-e", "SUPABASE_SERVICE_KEY", "mcp/supabase"],
"env": {
"SUPABASE_URL": "YOUR-SUPABASE-URL",
"SUPABASE_SERVICE_KEY": "YOUR-SUPABASE-SERVICE-ROLE-KEY"
}
}
}
}
-
YOUR-SUPABASE-URLとYOUR-SUPABASE-SERVICE-ROLE-KEYを実際の Supabase 認証情報に置き換えます。 -
AI アシスタントは、提供されたツールを使用して MCP サーバー経由で Supabase データベースにアクセスできるようになります。
Model Context Protocol の詳細については、modelcontextprotocol.io をご覧ください。
利用可能なツール
テーブル行の読み取り
read_table_rows(
table_name: str,
columns: Optional[List[str]] = None,
filters: Optional[Dict[str, Any]] = None,
limit: Optional[int] = None,
offset: Optional[int] = None
)
例:
# Read active users
read_table_rows(
table_name="users",
columns=["id", "name", "email"],
filters={"is_active": True},
limit=10,
offset=0
)
テーブルレコードの作成
create_table_records(
table_name: str,
records: Union[Dict[str, Any], List[Dict[str, Any]]]
)
例:
# Create a new user
create_table_records(
table_name="users",
records={
"name": "John Doe",
"email": "[email protected]",
"is_active": True
}
)
テーブルレコードの更新
update_table_records(
table_name: str,
updates: Dict[str, Any],
filters: Dict[str, Any]
)
例:
# Update user status
update_table_records(
table_name="users",
updates={"status": "premium"},
filters={"is_active": True}
)
テーブルレコードの削除
delete_table_records(
table_name: str,
filters: Dict[str, Any]
)
例:
# Delete inactive users
delete_table_records(
table_name="users",
filters={"is_active": False}
)
開発
プロジェクト構成
supabase-mcp/
├── supabase_mcp/
│ ├── __init__.py
│ ├── server.py # Main MCP server implementation
│ └── tests/ # Unit tests
├── Dockerfile # Docker configuration for MCP server
├── example_mcp_config.json # Example MCP configuration
├── requirements.txt # Python dependencies
├── .env.example # Example environment variables
├── README.md # Project documentation
├── PLANNING.md # Project planning
└── TASKS.md # Task tracking
テストの実行
pytest supabase_mcp/tests/
Model Context Protocol の統合
Supabase MCP サーバーは Model Context Protocol を実装しており、AI アシスタントが標準化された方法で Supabase データベースとやり取りできるようにします。
仕組み
- MCP サーバーはデータベース操作(読み取り、作成、更新、削除)用のツールを公開します
- AI アシスタントは stdio トランスポートを使用して MCP サーバーに接続します
- AI アシスタントはツールを呼び出してデータベース操作を実行できます
- MCP サーバーは Supabase との通信を処理し、結果を返します
MCP の設定
example_mcp_config.json ファイルには、AI アシスタントが Supabase MCP サーバーを使用するための設定方法が示されています。
{
"mcpServers": {
"supabase": {
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "SUPABASE_URL", "-e", "SUPABASE_SERVICE_KEY", "mcp/supabase"],
"env": {
"SUPABASE_URL": "YOUR-SUPABASE-URL",
"SUPABASE_SERVICE_KEY": "YOUR-SUPABASE-SERVICE-ROLE-KEY"
}
}
}
}
この設定では、AI アシスタントに次のことを指示します:
- Docker を使用して MCP サーバーを実行する
- Supabase の認証情報を環境変数として渡す
mcp/supabaseDocker イメージを使用する
AI アシスタントでの使用
Model Context Protocol に対応した AI アシスタントは、このサーバーを使用して次の操作を実行できます:
- Supabase テーブルからデータをクエリする
- テーブルに新しいレコードを挿入する
- 既存のレコードを更新する
- レコードを削除する
アシスタントは、上記の「利用可能なツール」セクションに記載されているツールを使用できます。
環境変数
| 変数 | 説明 |
|---|---|
SUPABASE_URL | Supabase プロジェクトの URL |
SUPABASE_SERVICE_KEY | Supabase 認証用のサービスロールキー |
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。