AI数据库集成工具

一个完整的堆栈,用于构建基于Supabase、Cloudflare Workers和React的AI驱动应用程序。

  • by shotah
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 shotah/mcp-test

使用说明

MCP测试 - 人工智能+数据库集成

一个完整的堆栈,用于使用 Supabase、Cloudflare Workers 和 React 构建 AI 驱动的应用程序。

🏗️ 建筑

  • 数据库Supabase(PostgreSQL + pgvector)
  • MCP服务器Cloudflare Workers(TypeScript)
  • 前端React + Vite + TypeScript(译文保持原样,因为这是一个技术栈的组合名称,直接翻译并无实际意义,但为符合要求,可表述为“React 加上 Vite 再加上 TypeScript”)
  • 认证使用GitHub OAuth的Supabase认证
  • 部署GitHub Actions → Cloudflare(可翻译为:“GitHub 动作 → Cloudflare”)

🚀 快速入门

先决条件

  • Node.js 20多个版本
  • Supabase 命令行界面 (CLI)npm install -g supabase)
  • Cloudflare 账户(用于生产环境)
  • Supabase 账户(用于云数据库)

1. 设置

# Clone and install dependencies
git clone <your-repo>
cd mcp-test
make setup

# Copy environment variables
cp env.example .env
# Edit .env with your API keys (see SUPABASE_SETUP.md)

2. Supabase 云服务设置

重要的这个项目现在使用Supabase Cloud,而不是本地Docker。请按照详细的设置指南进行操作:

👉 请参阅 SUPABASE_SETUP.md 获取完整的设置说明

快速步骤:

  1. 在(某处)创建一个Supabase项目 supabase.com(可译为“苏帕斯数据库网站”或保持原样作为域名使用)
  2. 获取您的项目URL和API密钥
  3. 更新您的 .env 文件
  4. 链接您的项目: make supabase-link
  5. 推动你的模式(或架构): make supabase-push

3. 本地开发

# Start all development services
make dev

# Or start individually:
make dev-worker  # Cloudflare Worker
make dev-web     # React web app

4. 访问您的应用程序

  • 网络应用http://localhost:3000 翻译为中文是:“本地主机:3000” 或 “本机:3000(端口)”。不过,在中文语境中,我们通常更倾向于说“访问本地主机的3000端口”或“打开本机的3000端口”,以更准确地表达这个网址的含义。但简化的说法“本地主机:3000”或“本机:3000”也是可以接受的
  • 工人http://localhost:8787(本地主机的8787端口)
  • Supabase 控制台您的云项目仪表板

📁 项目结构

mcp-test/
├── supabase/           # Supabase configuration
│   ├── config.toml
│   ├── migrations/
│   └── seed.sql
├── worker/             # Cloudflare Worker (MCP Server)
│   ├── src/
│   ├── package.json
│   └── wrangler.toml
├── web/                # React frontend
│   ├── src/
│   ├── package.json
│   └── vite.config.ts
├── .github/workflows/  # CI/CD
├── SUPABASE_SETUP.md   # Supabase cloud setup guide
└── Makefile           # Development commands

🔧 配置

环境变量

复制 env.example 到 .env 并进行配置:

# Supabase (cloud)
SUPABASE_URL=https://your-project-id.supabase.co
SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key

# OpenAI
OPENAI_API_KEY=sk-your-openai-key

# OpenAI Models (optional)
OPENAI_EMBEDDING_MODEL=text-embedding-ada-002
OPENAI_CHAT_MODEL=gpt-4o-mini

# Cloudflare (production)
CLOUDFLARE_API_TOKEN=your-token
CLOUDFLARE_ACCOUNT_ID=your-account-id

# CORS Configuration (production)
ALLOWED_ORIGINS=https://your-project.pages.dev,https://mcptest.bldhosting.com

Supabase 设置

云设置 (推荐):

🚀 部署

GitHub Actions 设置

  1. 在你的GitHub仓库中添加密钥 (设置 → 密钥和变量 → 动作):

    • CLOUDFLARE_API_TOKEN 您的Cloudflare API令牌
    • CLOUDFLARE_ACCOUNT_ID - 您的Cloudflare账户ID
    • SUPABASE_URL - 您的Supabase项目URL
    • SUPABASE_ANON_KEY - 您的Supabase匿名密钥
    • OPENAI_API_KEY - 您的OpenAI API密钥
    • WORKER_URL - 您已部署的工作节点URL(例如。, https://mcp-server-production.your-subdomain.workers.dev)
    • ALLOWED_ORIGINS - 以逗号分隔的允许域名列表(例如。, https://mcp-web.pages.dev,https://mcp.bldhosting.com)
    • OPENAI_EMBEDDING_MODEL (可选)- 默认值: text-embedding-3-small
    • OPENAI_CHAT_MODEL (可选)- 默认: gpt-5-nano
  2. 推送到主分支 触发部署:

    git push origin main
    
  3. 监控部署 在您的GitHub仓库的“操作”选项卡中

手动部署

# Deploy worker
cd worker
npm run deploy

# Deploy web app
cd web
npm run build
# Upload dist/ to Cloudflare Pages

自动部署

该项目使用GitHub Actions进行自动部署:

  • 工人部署到 Cloudflare Workers
  • 网络应用部署到 Cloudflare Pages
  • 质量检查TypeScript + ESLint + 构建验证
  • 环境来自GitHub密钥的Worker URL

🧪 测试

# Test the worker
curl http://localhost:8787/health

# Test embedding
curl -X POST http://localhost:8787/embed \
  -H "Content-Type: application/json" \
  -d '{"text": "Hello world"}'

# Test search
curl -X POST http://localhost:8787/search \
  -H "Content-Type: application/json" \
  -d '{"query": "supabase", "limit": 5}'

📚 API 端点

工作端点

  • GET /health - 健康检查
  • POST /embed - 生成嵌入表示
  • POST /search - 搜索文档
  • POST /chat - 与AI聊天

数据库模式

  • documents - 存储带有嵌入表示的文档
  • chat_sessions - 聊天对话会话
  • chat_messages - 单个聊天消息

🔐 认证与安全

该应用使用Supabase Auth结合GitHub OAuth进行身份验证:

  1. 用户使用GitHub登录
  2. JWT令牌用于API认证
  3. 行级安全性(RLS)保护用户数据

安全特性

  • JWT 认证所有受保护的端点都需要有效的令牌
  • 速率限制每个IP每分钟10个请求
  • 输入验证XSS保护和长度限制
  • CORS 保护限制为允许的来源
  • 用户隔离用户只能访问自己的数据

🛠️ 开发

添加新功能

  1. 数据库添加迁移文件到 supabase/migrations/
  2. 工人添加端点到 worker/src/index.ts
  3. 前端添加组件到 web/src/

开发命令

# Setup everything
npm run setup

# Development
npm run dev              # All services
npm run dev:worker       # Worker only
npm run dev:web          # Web app only

# Quality checks
npm run type-check       # TypeScript checking
npm run lint             # ESLint checking
npm run build            # Build everything
npm run check            # All quality checks

本地测试

# Test worker
make dev-worker

# Test frontend
make dev-web

# Check all services
make health

代码质量

# Type check everything
npm run type-check

# Lint everything
npm run lint

# Build everything
npm run build

# Check everything (type + lint + build)
npm run check

📖 文档

🤝 贡献

  1. 为仓库创建分支(或“克隆仓库”)
  2. 创建一个特性分支
  3. 做出你的更改
  4. 进行质量检查: npm run check
  5. 本地测试: npm run dev
  6. 提交一个拉取请求

开发工作流程

# 1. Setup
git clone <your-fork>
cd mcp-test
npm run setup

# 2. Development
npm run dev

# 3. Quality checks
npm run check

# 4. Test
npm run dev:worker
npm run dev:web

# 5. Commit
git add .
git commit -m "feat: your changes"
git push origin your-branch

📄 许可证

MIT 许可证 - 详情请参见 LICENSE 文件。