A guide to deploying any Open Brain extension as a Supabase Edge Function. This is the same pattern used by the core Open Brain MCP server — one deployment, accessible from any AI client.
- Completed the Getting Started Guide — you should already have:
- Supabase CLI installed
- A project folder with
supabase initandsupabase linkalready done - Your credential tracker with Supabase project ref and secrets
Navigate to your Open Brain project folder — the one you created during the Getting Started guide.
🟩 Mac/Linux:
cd /paste/your/path/here🟦 Windows (PowerShell):
cd "C:\paste\your\path\here"Not sure where it is? It's the folder you created in Step 6 of the Getting Started guide — the one with the
supabase/directory inside it.
Every extension README includes a deployment table like this:
| Setting | Value |
|---|---|
| Function name | extension-name-mcp |
| Download path | extensions/extension-name |
You'll use these values in the steps below. Replace FUNCTION_NAME and DOWNLOAD_PATH with the values from the extension you're deploying.
supabase functions new FUNCTION_NAMEExample: supabase functions new household-knowledge-mcp
🟩 Mac/Linux:
curl -o supabase/functions/FUNCTION_NAME/index.ts https://raw.githubusercontent.com/NateBJones-Projects/OB1/main/DOWNLOAD_PATH/index.tscurl -o supabase/functions/FUNCTION_NAME/deno.json https://raw.githubusercontent.com/NateBJones-Projects/OB1/main/DOWNLOAD_PATH/deno.json🟦 Windows (PowerShell):
Invoke-WebRequest -Uri https://raw.githubusercontent.com/NateBJones-Projects/OB1/main/DOWNLOAD_PATH/index.ts -OutFile supabase\functions\FUNCTION_NAME\index.tsInvoke-WebRequest -Uri https://raw.githubusercontent.com/NateBJones-Projects/OB1/main/DOWNLOAD_PATH/deno.json -OutFile supabase\functions\FUNCTION_NAME\deno.jsonReplace
FUNCTION_NAMEandDOWNLOAD_PATHwith the values from the extension's deployment table.
Already have an access key from a previous extension? You can reuse it — skip to Step 4 and use the same key. Or generate a new one if you prefer each extension to have its own key.
🟩 Mac/Linux:
openssl rand -hex 32🟦 Windows (PowerShell):
-join ((1..32) | ForEach-Object { '{0:x2}' -f (Get-Random -Maximum 256) })Copy the output (64 characters). Save it in your credential tracker.
Set it as a Supabase secret:
supabase secrets set MCP_ACCESS_KEY=your-generated-key-hereIf you already set
MCP_ACCESS_KEYfor a previous extension or during the Getting Started guide, setting it again will overwrite it. All functions share the same secrets, so every deployed function will use the new key. If you want separate keys per extension, use a different secret name (e.g.,HOUSEHOLD_MCP_KEY) and update the extension'sindex.tsto read from that name instead.
supabase functions deploy FUNCTION_NAME --no-verify-jwtYour MCP server is now live at:
https://YOUR_PROJECT_REF.supabase.co/functions/v1/FUNCTION_NAME
Build your MCP Connection URL by adding your access key:
https://YOUR_PROJECT_REF.supabase.co/functions/v1/FUNCTION_NAME?key=your-access-key
Save this in your credential tracker, then follow the Remote MCP Connection guide to connect it to your AI client.
When the extension code is updated in the repo, pull the latest version and redeploy:
🟩 Mac/Linux:
curl -o supabase/functions/FUNCTION_NAME/index.ts https://raw.githubusercontent.com/NateBJones-Projects/OB1/main/DOWNLOAD_PATH/index.ts🟦 Windows (PowerShell):
Invoke-WebRequest -Uri https://raw.githubusercontent.com/NateBJones-Projects/OB1/main/DOWNLOAD_PATH/index.ts -OutFile supabase\functions\FUNCTION_NAME\index.tsThen deploy:
supabase functions deploy FUNCTION_NAME --no-verify-jwtThe URL and access key stay the same — no need to reconfigure your AI clients.
"Function not found" during deploy
- Verify you ran
supabase functions new FUNCTION_NAMEfirst - Make sure you're in your Open Brain project folder (the one with the
supabase/directory)
Import errors or "not in import map"
- Verify
deno.jsonwas downloaded into the function directory, not the project root - Run
ls supabase/functions/FUNCTION_NAME/— you should see bothindex.tsanddeno.json
Deploy succeeds but function returns errors
- Check Edge Function logs: Supabase Dashboard → Edge Functions → your function → Logs
- Verify secrets are set:
supabase secrets listshould showMCP_ACCESS_KEY SUPABASE_URLandSUPABASE_SERVICE_ROLE_KEYare auto-injected — if they're missing, your Supabase project may need to be restarted
"Invalid JWT" or authentication errors
- Make sure you deployed with
--no-verify-jwtflag
- Household Knowledge Base (Extension 1)
- Home Maintenance Tracker (Extension 2)
- Family Calendar (Extension 3)
- Meal Planning (Extension 4)
- Professional CRM (Extension 5)
- Job Hunt Pipeline (Extension 6)