supabase-rb MCP server
Point Claude Code, Cursor, or Windsurf at https://supabase-ruby.dev/api/mcp and your AI assistant gets structured access to every supabase-rb (Ruby) and supabase-rails page on this site — search, list, and fetch full markdown — without you copying snippets back and forth.
Sign in to authorize MCP access
The server is gated by OAuth via Better Auth's MCP plugin. MCP-compatible clients discover the authorization server at /.well-known/oauth-authorization-server, register themselves, and walk you through the GitHub login the first time they connect — no tokens to copy or paste.
Why this exists
AI assistants are good at answering Supabase questions; they are less good at answering supabase-rb questions because the gem's surface (Ruby keyword args, the Rails Authentication concern, the encrypted-cookie session store) is small relative to the JS ecosystem and easy to hallucinate. The MCP server pins your assistant to the actual docs: it can search for a topic, list_pages to discover what's covered, and get_page to read the canonical markdown.
Claude Code CLI
One-shot registration. The flag picks the streamable-HTTP transport so no mcp-remote bridge is needed:
claude mcp add --transport http supabase-rb https://supabase-ruby.dev/api/mcpOr, if you'd rather commit the config so collaborators get it for free, drop this in .mcp.json at the root of your project:
{
"mcpServers": {
"supabase-rb": {
"type": "http",
"url": "https://supabase-ruby.dev/api/mcp"
}
}
}Restart Claude Code after either change; it will prompt you to approve the server on first use.
Prefer a personal access token over the OAuth flow? Generate one in the sign-in card above, then either pass it on the CLI:
claude mcp add --transport http supabase-rb https://supabase-ruby.dev/api/mcp \
--header "Authorization: Bearer $SUPABASE_RB_MCP_TOKEN"…or commit it as an Authorization header in .mcp.json:
{
"mcpServers": {
"supabase-rb": {
"type": "http",
"url": "https://supabase-ruby.dev/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN_HERE"
}
}
}
}Don't check a real token into source control — keep it in your shell env (e.g. SUPABASE_RB_MCP_TOKEN) and reference it from the CLI form above.
Codex CLI
Add to ~/.codex/config.toml for your user, or .codex/config.toml at the project root to scope it to one repo. Codex speaks streamable HTTP directly — no stdio bridge:
[mcp_servers.supabase-rb]
url = "https://supabase-ruby.dev/api/mcp"Restart the codex session to pick the new server up. On first connect, Codex will open a browser tab so you can authorize the server with GitHub.
To skip the browser hop, generate a personal token above and add an Authorization header to the same TOML block:
[mcp_servers.supabase-rb]
url = "https://supabase-ruby.dev/api/mcp"
[mcp_servers.supabase-rb.headers]
Authorization = "Bearer YOUR_TOKEN_HERE"stdio-only clients (Claude Desktop, older Cursor)
Tools that only speak stdio reach the remote endpoint through mcp-remote:
{
"mcpServers": {
"supabase-rb": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://supabase-ruby.dev/api/mcp"]
}
}
}If the client can't complete the OAuth flow either, pass the personal token straight through mcp-remote via a header:
{
"mcpServers": {
"supabase-rb": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://supabase-ruby.dev/api/mcp",
"--header",
"Authorization: Bearer ${SUPABASE_RB_MCP_TOKEN}"
],
"env": {
"SUPABASE_RB_MCP_TOKEN": "YOUR_TOKEN_HERE"
}
}
}
}Tools exposed
search({ query, namespace?, limit? })Ranked keyword search across titles, descriptions, and bodies. Returns slug, URL, title, description, namespace, score, and a snippet. Filter to ruby or rails with namespace.
list_pages({ namespace? })Returns every documented page (slug, URL, title, description, namespace). Use this to discover what is covered before searching or fetching.
get_page({ slug })Returns the full markdown body of one page. Slugs look like 'ruby/auth/signinwithpassword' or 'rails/authentication'.
See also
- /llms.txt — the raw site index, for AI tools that consume llms.txt directly.
- /llms-full.txt — every page concatenated into one markdown document.
- Ruby reference — browse the same content the MCP server indexes.