From 4a6e682ee046a9652d8c323259735a3c2c5e0b0f Mon Sep 17 00:00:00 2001 From: Pedro Rodrigues <44656907+Rodriguespn@users.noreply.github.com> Date: Wed, 12 Nov 2025 16:08:56 +0000 Subject: [PATCH] feat: add Supabase MCP server to registry (#5629) Signed-off-by: Pedro Rodrigues --- documentation/docs/mcp/supabase-mcp.md | 213 +++++++++++++++++++++++++ documentation/static/servers.json | 40 +++-- 2 files changed, 242 insertions(+), 11 deletions(-) create mode 100644 documentation/docs/mcp/supabase-mcp.md diff --git a/documentation/docs/mcp/supabase-mcp.md b/documentation/docs/mcp/supabase-mcp.md new file mode 100644 index 00000000..80290f29 --- /dev/null +++ b/documentation/docs/mcp/supabase-mcp.md @@ -0,0 +1,213 @@ +--- +title: Supabase Extension +description: Add Supabase MCP Server as a goose Extension +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import CLIExtensionInstructions from '@site/src/components/CLIExtensionInstructions'; +import GooseDesktopInstaller from '@site/src/components/GooseDesktopInstaller'; + +This tutorial covers how to add the [Supabase MCP Server](https://github.com/supabase-community/supabase-mcp) as a goose extension to interact with your Supabase projects, manage tables, query data, deploy Edge Functions, and interact with your Supabase backend directly. + +:::tip TLDR + + + [Launch the installer](goose://extension?type=streamable_http&url=https%3A%2F%2Fmcp.supabase.com%2Fmcp&id=supabase&name=Supabase&description=Connect%20your%20Supabase%20projects%20to%20AI%20assistants.%20Manage%20tables%2C%20query%20data%2C%20deploy%20Edge%20Functions%2C%20and%20interact%20with%20your%20Supabase%20backend%20directly%20from%20your%20MCP%20client.) + + + Use `goose configure` to add a `Remote Extension (Streaming HTTP)` extension type with: + + **Endpoint URL** + ``` + https://mcp.supabase.com/mcp + ``` + + +::: + +## Configuration + +### Supabase Remote MCP + +The Supabase MCP Server is hosted by Supabase and provides OAuth-based authentication. When you connect, you'll be redirected to supabase.com to sign in to your account. + + + + + + + + + + + + + + +#### OAuth Flow + +When you first connect to the Supabase MCP Server through goose, an OAuth window will open in your browser. Follow the prompts to authorize access to your Supabase projects. + +:::note Security Note +The Supabase MCP Server grants access to your database and project management capabilities. Always review LLM-requested actions before execution and ensure you're working in the appropriate environment (development, staging, production). +::: + +## Example Usage + +### Example 1: List Your Supabase Projects + +Get an overview of all your Supabase projects and their configurations. + +#### goose Prompt + +``` +List all my Supabase projects +``` + +#### goose Output + +:::note Desktop + +``` +Here are your Supabase projects: + +1. my project (ID: abc123xyz789defg) + - Region: US West 1 + - Created: October 30, 2025 + - Status: ACTIVE_HEALTHY + - Database: PostgreSQL 17.6.1.031 (Engine v17) + - Host: db.abc123xyz789defg.supabase.co + +2. new project (ID: jkl456mno012pqrs) + - Region: US West 1 + - Created: October 31, 2025 + - Status: INACTIVE + - Database: PostgreSQL 17.6.1.032 (Engine v17) + - Host: db.jkl456mno012pqrs.supabase.co + +Would you like more detailed information about any specific project? +``` + +::: + +### Example 2: Query Database Tables + +Discover and query tables within your Supabase project. + +#### goose Prompt + +``` +What tables exist in my project? +``` + +#### goose Output + +:::note Desktop + +``` +Tables in my project (public schema): + +1. users + - RLS Enabled: Yes + - Row count: 150 + - Columns: id (uuid), email (text), name (text), created_at (timestamptz), role (text) + - Primary Key: id + - Foreign Keys: Referenced by posts.user_id, profiles.user_id + +2. posts + - RLS Enabled: Yes + - Row count: 342 + - Columns: id (uuid), user_id (uuid), title (text), content (text), created_at (timestamptz) + - Primary Key: id + - Foreign Keys: References users.id, referenced by comments.post_id + +3. comments + - RLS Enabled: Yes + - Row count: 1089 + - Columns: id (uuid), post_id (uuid), user_id (uuid), content (text), created_at (timestamptz) + - Primary Key: id + - Foreign Keys: References posts.id, references users.id + +4. profiles + - RLS Enabled: Yes + - Row count: 150 + - Columns: id (uuid), user_id (uuid), bio (text), avatar_url (text), updated_at (timestamptz) + - Primary Key: id + - Foreign Keys: References users.id + +5. categories + - RLS Enabled: No + - Row count: 12 + - Columns: id (uuid), name (text), description (text), created_at (timestamptz) + - Primary Key: id + +Would you like to query data from any of these tables? +``` + +::: + +### Example 3: Deploy an Edge Function + +Deploy and manage Supabase Edge Functions directly through goose. + +#### goose Prompt + +``` +Deploy a new Edge Function called 'hello-world' that returns a simple JSON response +``` + +#### goose Output + +:::note Desktop + +``` +Edge Function deployed successfully! + +Function Name: hello-world +Version: 1 +Status: ACTIVE +Function ID: c4e03748-3e72-45e2-bdca-03f7e4800874 +Project: my project (tabowbdrhvtlvzvfyinw) +Entrypoint: index.ts +JWT Verification: Enabled +Created: November 8, 2025 + +Function code: +```typescript +Deno.serve(async (req) => { + return new Response( + JSON.stringify({ message: "Hello World!" }), + { headers: { "Content-Type": "application/json" } }, + ) +}) +``` + +Endpoint: +https://tabowbdrhvtlvzvfyinw.supabase.co/functions/v1/hello-world + +You can test the function by sending a request to the endpoint above. +``` + +::: + +## Additional Resources + +For more information about the Supabase MCP Server and its capabilities, visit: +- [Supabase MCP Server GitHub Repository](https://github.com/supabase-community/supabase-mcp) +- [Supabase Documentation](https://supabase.com/docs) +- [Supabase Dashboard](https://supabase.com/dashboard) diff --git a/documentation/static/servers.json b/documentation/static/servers.json index 9ad78dfe..b95ef227 100644 --- a/documentation/static/servers.json +++ b/documentation/static/servers.json @@ -308,6 +308,17 @@ "endorsed": false, "environmentVariables": [] }, + { + "id": "gotoHuman-mcp", + "name": "gotoHuman MCP Server", + "description": "Adds human approvals into your workflows", + "command": "npx -y @gotohuman/mcp-server", + "link": "https://github.com/gotohuman/gotohuman-mcp-server", + "installation_notes": "Install using npx package manager.", + "is_builtin": false, + "endorsed": false, + "environmentVariables": [] + }, { "id": "i-ching", "name": "I Ching", @@ -561,6 +572,24 @@ } ] }, + { + "id": "supabase", + "name": "Supabase", + "description": "Connect your Supabase projects to AI assistants. Manage tables, query data, deploy Edge Functions, and interact with your Supabase backend directly from your MCP client.", + "type": "streamable-http", + "url": "https://mcp.supabase.com/mcp", + "link": "https://github.com/supabase-community/supabase-mcp", + "installation_notes": "Streaming HTTP extension with OAuth browser authentication to your Supabase account.", + "is_builtin": false, + "endorsed": true, + "environmentVariables": [ + { + "name": "SUPABASE_PERSONAL_ACCESS_TOKEN", + "description": "Personal access token (optional; use if not authenticating via browser OAuth)", + "required": false + } + ] + }, { "id": "tavily", "name": "Tavily Web Search", @@ -599,16 +628,5 @@ "is_builtin": false, "endorsed": false, "environmentVariables": [] - }, - { - "id": "gotoHuman-mcp", - "name": "gotoHuman MCP Server", - "description": "Adds human approvals into your workflows", - "command": "npx -y @gotohuman/mcp-server", - "link": "https://github.com/gotohuman/gotohuman-mcp-server", - "installation_notes": "Install using npx package manager.", - "is_builtin": false, - "endorsed": false, - "environmentVariables": [] } ]