Supabase MCP服务器

一个生产就绪的模型上下文协议(MCP)服务器,用于Supabase数据库操作,支持AI助手和代理直接交互。

  • by piyushdhoka
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 piyushdhoka/mcp_server

使用说明

Supabase MCP服务器

一个生产就绪的模型上下文协议(MCP)服务器,用于使用AI代理和助手进行Supabase数据库操作。

建造于 皮尤什·多卡 -AI/ML工程师


🎯 这是什么?

这是一个 模型上下文协议(MCP)服务器 它使GitHub Copilot、Claude和其他AI代理等AI助手能够与您的Supabase数据库进行交互。将其视为人工智能和数据库之间的桥梁——人工智能现在可以直接读取、创建、更新和删除记录!

为什么选择MCP?

MCP(模型上下文协议)是人工智能助手访问外部工具和数据源的标准化方式。此服务器将您的Supabase数据库作为MCP工具公开,使AI代理能够以安全和可控的方式访问您的数据。

✨ 特性

🔥 核心功能

  • 8个强大的MCP工具 -完成Supabase的CRUD操作
  • 可流式HTTP传输 -不需要Redis!开箱即用
  • 生产就绪 -在Vercel上部署全球CDN
  • 类型安全 -通过Zod验证完全支持TypeScript
  • 实时就绪 -基于Supabase的实时基础设施

🎨 现代用户界面

  • 漂亮的登录页面 -展示您的MCP服务器功能
  • 交互式代码示例 -实时代码片段,便于集成
  • 响应式设计 -在所有设备上都能完美工作
  • 深色模式 -采用Tailwind CSS的时尚现代设计

🔒 安全

  • 服务角色身份验证 -安全的数据库访问
  • 环境变量 -敏感数据从未被泄露
  • 输入验证 -所有输入均已Zod模式验证

🛠️ 可用的MCP工具

您的AI助手可以使用以下8个工具与您的数据库进行交互:

工具 描述 用例
creatorInfo 获取创建者信息 了解开发人员
getDocument 按UUID获取文档 检索特定公司数据
listDocuments 列出所有文档 使用分页浏览数据库
createDocument 创建新文档 添加新公司
updateDocument 更新现有文档 修改公司信息
deleteDocument 删除文档 删除公司
upsertDocument 创建或更新 智能插入/更新操作
clearCollection 清除所有文档 重置数据库(确认)

🚀 快速开始

先决条件

  • Node.js 18+ 或 包子 运行时
  • Supabase账户 (免费注册)
  • Vercel帐户 (可选,用于部署)

1.克隆存储库

git clone https://github.com/piyushdhoka/mcp_server.git
cd mcp_server

2.安装依赖项

# Using bun (recommended)
bun install

# Or using npm
npm install

3.建立数据库

创建数据库表:

转到Supabase SQL编辑器并运行:

CREATE TABLE companies (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  company_name TEXT NOT NULL,
  company_id INTEGER UNIQUE NOT NULL,
  description TEXT,
  website TEXT,
  employee_count INTEGER,
  founded_year INTEGER,
  industry TEXT,
  created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
  updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
  search_vector TSVECTOR GENERATED ALWAYS AS (
    setweight(to_tsvector('english', coalesce(company_name, '')), 'A') ||
    setweight(to_tsvector('english', coalesce(description, '')), 'B') ||
    setweight(to_tsvector('english', coalesce(industry, '')), 'C')
  ) STORED
);

-- Create indexes for better performance
CREATE INDEX idx_companies_company_id ON companies(company_id);
CREATE INDEX idx_companies_search_vector ON companies USING GIN(search_vector);
CREATE INDEX idx_companies_created_at ON companies(created_at DESC);

4.配置环境变量

创建一个 .env 根目录中的文件:

# Supabase Configuration
NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key-here

在哪里可以找到这些值:

  1. 去你的 Supabase仪表板
  2. 选择您的项目
  3. 首选 设置 → API
  4. 复制值:
    • 统一资源定位符 → NEXT_PUBLIC_SUPABASE_URL
    • 匿名公开 → NEXT_PUBLIC_SUPABASE_ANON_KEY
    • service_role → SUPABASE_SERVICE_ROLE_KEY

5.运行开发服务器

# Using bun (recommended)
bun dev

# Or using npm
npm run dev

打开 http://localhost:3000 在您的浏览器中。

🤖 使用AI助手

GitHub Copilot 聊天助手

添加到您的 .vscode/settings.json:

{
  "github.copilot.chat.mcp.servers": {
    "supabase-mcp": {
      "type": "http",
      "url": "https://mcp-server-nznpiw5jx-piyushdhokas-projects.vercel.app/mcp",
      "timeout": 60000
    }
  }
}

然后在Copilot聊天中:

  • “列出数据库中的所有公司”
  • “创建一个名为Test Inc的公司,ID为1000”
  • “告诉我此MCP服务器的创建者”

继续扩展

创建 .continue/mcpServers/supabase.yaml:

name: Supabase MCP Server
version: 1.0.0
schema: v1
mcpServers:
  - name: Supabase MCP Server
    transport:
      type: streamable-http
      url: https://mcp-server-nznpiw5jx-piyushdhokas-projects.vercel.app/mcp
    timeout: 60000

克劳德桌面版

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (Mac)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "supabase": {
      "type": "http",
      "url": "https://mcp-server-nznpiw5jx-piyushdhokas-projects.vercel.app/mcp"
    }
  }
}

🌐 部署

部署到Vercel(推荐)

  1. 推送到GitHub:
git add .
git commit -m "Initial commit"
git push origin main
  1. 部署到Vercel:
vercel --prod

或者使用 Vercel仪表板:

  • 导入您的GitHub存储库
  • 添加环境变量
  • 部署!

您的MCP服务器将在以下地址上线: https://your-project.vercel.app/mcp

Vercel上的环境变量

请确保将这些添加到 Vercel仪表板 → 设置 → 环境变量:

  • NEXT_PUBLIC_SUPABASE_URL
  • NEXT_PUBLIC_SUPABASE_ANON_KEY
  • SUPABASE_SERVICE_ROLE_KEY

📚 API文档

MCP端点

网址: https://your-deployment.vercel.app/mcp

运输: 流式HTTP(不需要Redis!)

示例:列出所有文档

curl -X POST https://your-deployment.vercel.app/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "listDocuments",
      "arguments": {
        "limit": 10
      }
    },
    "id": 1
  }'

刀具参数

listDocuments

{
  tableName?: string;    // Default: "companies"
  limit?: number;        // Default: 25
  offset?: number;       // Default: 0
  orderBy?: string;      // Default: "created_at"
  ascending?: boolean;   // Default: false
}

createDocument

{
  company_name: string;
  company_id: number;
  description?: string;
  website?: string;
  employee_count?: number;
  founded_year?: number;
  industry?: string;
  tableName?: string;    // Default: "companies"
}

getDocument

{
  documentId: string;    // UUID
  tableName?: string;    // Default: "companies"
}

API完整文档: API毫米

🏗️ 技术栈

  • 框架: Next.js 15.3.3与应用路由器
  • 运行时间: Bun/Node.js 18+
  • 语言: TypeScript 5
  • 造型: 顺风CSS 4
  • 数据库: Supabase(PostgreSQL)
  • MCP适配器: @vercel/mcp适配器0.7.3
  • 动画: 帧运动
  • UI组件: 根UI+柚子/UI
  • 验证: 萨德
  • 部署: 维塞尔

📁 项目结构

mcp-server/
├── src/
│   ├── app/
│   │   ├── [transport]/     # MCP server routes (/mcp, /sse)
│   │   │   └── route.ts     # Main MCP handler
│   │   ├── layout.tsx       # Root layout
│   │   └── page.tsx         # Landing page
│   ├── components/
│   │   ├── hero-section.tsx
│   │   ├── code-showcase.tsx
│   │   ├── mcp-demo.tsx
│   │   └── ui/              # shadcn components
│   └── lib/
│       └── tools/
│           └── supabase.ts  # 8 MCP tools implementation
├── public/
├── .env                     # Environment variables
├── package.json
└── README.md

🔧 配置

运输选项

此服务器支持 流式HTTP 运输:

{
  streamableHttpEndpoint: "/mcp",
  verboseLogs: true,
  maxDuration: 60
}

为什么是流式HTTP?

  • ✅ 不需要Redis
  • ✅ 开箱即用
  • ✅ 非常适合无服务器
  • ✅ 更简单的部署

🤝 贡献

欢迎投稿!请随时提交拉取请求。

  1. 复刻仓库
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推到分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求

📄 许可证

该项目是开源的,可在 MIT许可证.

👨‍💻 作者

皮尤什·多卡

  • AI/ML工程师和开发人员
  • github: @皮尤什多卡
  • 重点:AI/ML工程、全栈开发、云架构

🙏 致谢

📞 支持

如果您有任何问题或需要帮助,请:


⭐ 如果你觉得这个项目有用,请考虑给它一颗星!

内置于❤️ 通过 皮尤什·多卡

  • 在GitHub上打开一个问题
  • 检查文档
  • 联系人:Piyush Dhoka

由Piyush Dhoka(SparkStudio)部署·原创 @冲压式发动机

实时MCP端点: https://mcp.sparkstudio.in/mcp