使用说明
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
在哪里可以找到这些值:
- 去你的 Supabase仪表板
- 选择您的项目
- 首选 设置 → API
- 复制值:
- 统一资源定位符 →
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(推荐)
- 推送到GitHub:
git add .
git commit -m "Initial commit"
git push origin main
- 部署到Vercel:
vercel --prod
或者使用 Vercel仪表板:
- 导入您的GitHub存储库
- 添加环境变量
- 部署!
您的MCP服务器将在以下地址上线: https://your-project.vercel.app/mcp
Vercel上的环境变量
请确保将这些添加到 Vercel仪表板 → 设置 → 环境变量:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_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
- ✅ 开箱即用
- ✅ 非常适合无服务器
- ✅ 更简单的部署
🤝 贡献
欢迎投稿!请随时提交拉取请求。
- 复刻仓库
- 创建功能分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推到分支(
git push origin feature/AmazingFeature) - 打开拉取请求
📄 许可证
该项目是开源的,可在 MIT许可证.
👨💻 作者
皮尤什·多卡
- AI/ML工程师和开发人员
- github: @皮尤什多卡
- 重点:AI/ML工程、全栈开发、云架构
🙏 致谢
📞 支持
如果您有任何问题或需要帮助,请:
⭐ 如果你觉得这个项目有用,请考虑给它一颗星!
内置于❤️ 通过 皮尤什·多卡
- 在GitHub上打开一个问题
- 检查文档
- 联系人:Piyush Dhoka
由Piyush Dhoka(SparkStudio)部署·原创 @冲压式发动机
实时MCP端点: https://mcp.sparkstudio.in/mcp