Supabaseは2026年10月21日(現地時間)、同社の「Supabase Select」を通じて、Supabaseアプリに独自のModel Context Protocol(MCP)サーバーを提供する新機能を発表した。これにより、ChatGPTやClaudeといったMCPクライアントからSupabaseアプリの機能を利用できるようになる。ユーザーは既存アカウントでサインインし、そのユーザーとして全てのツール呼び出しが実行され、既存のRow Level Security(RLS)ポリシーに基づき各エージェントのアクセス範囲が決定される。

Supabaseアプリの各種アクションは、Model Context Protocol(MCP)を介して外部エージェントにツールとして公開される。この機能は、MCP Serverブロックをプロジェクトに追加することで利用可能となり、サーバーコードが組み込まれる。

認証フローはSupabase Authが担当し、@supabase/serverが提供するヘルパー機能によって、サインイン済みのユーザー用のSupabaseクライアントが各ツールに供給される。これにより、各ツールはサービスロールキーなしでプレーンなクエリを実行できる設計となっている。

MCP ServerブロックはSupabase Libraryからインストールでき、Edge Functionとしてプロジェクト内にコピーされる。このブロックには、MCPハンドラー、認証ミドルウェア、および呼び出し元の識別を確認するwhoamiツールが含まれている。ユーザーはこのコードを完全に所有し、独自のツールを追加したり、その入力や返される情報をカスタマイズしたりすることが可能だ。このブロックは公式のMCP TypeScript SDKを利用し、SupabaseヘルパーがSupabase Authへの接続やユーザーのクライアント管理を処理する。

顧客のエージェント(MCPクライアント)がサーバーのURLにアクセスすると、認証ミドルウェアがプロジェクトのOAuthサーバーの場所を伝える。ユーザーはアプリを通じてサインインし、同意ページでクライアントを承認することで、Supabase Authがそのユーザーのアクセストークンを発行する。以降のツール呼び出しはこのトークンを携帯し、withSupabase({ auth: 'user' })によって検証される。これにより、クエリはユーザーのIDで実行され、PostgresのRow Level Security(RLS)ポリシーが適用される。

さらに、MCP Appsの拡張機能を利用することで、MCPツールはチャットインターフェース内でアプリのユーザーインターフェース(UI)の一部を表示できる。ChatGPTなどの対応クライアントは、会話内にこのUIをレンダリングすることが可能だ。例えば、デモアプリSizzleでは、顧客がChatGPTに製品を要求すると製品カードが表示され、新しい広告を要求すると同じチャット内で広告がレンダリングされる様子が示された。外部エージェントを接続するためには、Supabaseプロジェクトの非対称署名キーの設定、OAuth 2.1サーバーと動的クライアント登録の有効化、およびOAuth Consentブロックのフロントエンドへの追加が必要となる。


参考: Supabase Blog (アーカイブ) — 2026年10月22日 09:00 (JST)

原文ハイライト

"Give your Supabase app its own MCP server."

この記事をシェア
X はてブ LinkedIn