S sarfaraz.pro Visit
Connect CV — · Hyderabad
Open Source · MIT License

MCP Client + Server
for Supabase

Built the full Model Context Protocol stack from scratch — a TypeScript MCP server exposing 18 Supabase tools, and a web-based client with two modes: an agentic Claude AI chat and a direct MCP Inspector. Ask your database anything in plain English.

TypeScript 🤖 Claude API 🔌 MCP SDK 🗄️ Supabase 🚀 Express.js 🟢 Node.js v18+
Build Story — The Visual Walkthrough Prefer to swipe? This is the LinkedIn carousel version.

18 tools. One server.

Runs as a child process, communicates over stdio · JSON-RPC. Plug it into Claude Desktop, Claude Code, or the companion client below.

🗄️ Database — 6 tools
db_list_tablesList all tables and columns in your public schema
db_querySELECT rows with filters, ordering, and pagination
db_insertINSERT or UPSERT one or more rows
db_updateUPDATE rows matching a filter condition
db_deleteDELETE rows matching a filter condition
db_rpcCall a Postgres function via RPC
🔐 Auth — 6 tools
auth_list_usersList all registered users in Supabase Auth
auth_get_userGet a specific user by UUID
auth_create_userCreate a new user programmatically
auth_update_userUpdate email, password, metadata, or ban status
auth_delete_userPermanently delete a user
auth_generate_magic_linkGenerate a one-time magic login link
📦 Storage — 7 tools
storage_list_bucketsList all storage buckets
storage_list_filesList files inside a bucket or folder
storage_get_public_urlGet the public URL for a file
storage_create_signed_urlCreate a time-limited private access URL
storage_upload_from_urlUpload a file from a remote URL
storage_move_fileMove or rename a file within storage
storage_delete_filesDelete one or more files
View mcp-server-supabase on GitHub

Two modes. One interface.

Node.js + Express backend, vanilla HTML/JS frontend — no framework. Spawns the MCP server as a child process over stdio.

Mode 01 · Agentic
Claude AI Chat
Type in plain English. Claude receives your message alongside the full list of available MCP tools, decides which ones to call, executes them through the server, feeds the results back, and returns a synthesised answer. Each response shows a collapsible tool call log so you can see exactly what happened under the hood.
You: "How many subscribers do I have and who signed up most recently?"
→ Claude calls db_query (subscribers table)
→ Claude calls db_query (order by created_at desc, limit 1)
→ Claude synthesises and replies in plain English
Mode 02 · Direct
MCP Inspector
Pick a tool from the sidebar (grouped by Database / Auth / Storage), edit the auto-generated JSON arguments, and hit Run. No AI involved — this is raw MCP protocol talking directly to the server. Equivalent to the official MCP Inspector, but built into the same interface. Perfect for debugging the server or understanding exactly what each tool returns.
# Tool: db_query
POST /api/tool
{
  "tool": "db_query",
  "args": { "table": "site_analytics", "limit": 10 }
}
View mcp-client on GitHub
🔌
Why Build It From Scratch?

Because understanding beats using.

Claude Desktop will connect to any MCP server in two config lines. But building the client yourself — spawning the child process, wiring the stdio transport, implementing the agentic loop — means you understand exactly how the protocol works and where to extend it. That's the point of this project.