Supabase MCP

ทางการ

เซิร์ฟเวอร์ MCP อย่างเป็นทางการของ Supabase สำหรับจัดการโปรเจกต์ Supabase, ฐานข้อมูล, การยืนยันตัวตน, พื้นที่จัดเก็บ, ฟังก์ชัน Edge และเวิร์กโฟลว์ SQL จากเอเจนต์ AI

GitHub
2.9k
ลองใช้ MCP นี้ผู้สนับสนุน

คุณทำอะไรได้บ้างด้วย Supabase MCP?

  • จัดการตารางฐานข้อมูล — ขอให้ผู้ช่วยของคุณสร้าง แก้ไข หรือลบตารางในโปรเจกต์ Supabase ผ่านเครื่องมือ MCP เช่น create_table และ alter_table
  • สอบถามข้อมูลโปรเจกต์ — สั่งให้ AI ของคุณรันคำสั่ง SQL แบบอ่านอย่างเดียวกับฐานข้อมูลของคุณ ดึงแถวข้อมูล กรองผลลัพธ์ หรือตรวจสอบโครงสร้างโดยไม่ต้องเขียนโค้ด
  • ดึงการกำหนดค่าโปรเจกต์ — ให้ผู้ช่วยของคุณดึงการตั้งค่าโปรเจกต์ รายละเอียดการเชื่อมต่อ หรือข้อมูลสภาพแวดล้อมโดยใช้เครื่องมือ เช่น get_project_url เพื่อปรับขั้นตอนการตั้งค่าให้ง่ายขึ้น
  • จำกัดการเข้าถึงเครื่องมือตามฟีเจอร์ — กำหนดค่าการเชื่อมต่อ MCP ของคุณเพื่อจำกัดเครื่องมือที่ใช้ได้ให้อยู่ในกลุ่มฟีเจอร์เฉพาะ (เช่น database หรือ docs) หรือเปิดใช้งานโหมดอ่านอย่างเดียวเพื่อการโต้ตอบกับ AI ที่ปลอดภัยยิ่งขึ้น
  • ผสานรวมกับไคลเอนต์ AI SDK — ใช้ createToolSchemas() เพื่อสร้างสคีมาอินพุต/เอาต์พุตแบบมีชนิดสำหรับไคลเอนต์ MCP ของ Vercel AI SDK ซึ่งช่วยให้สามารถตรวจสอบเครื่องมือแบบคงที่ในแอปของคุณได้

เอกสาร

เซิร์ฟเวอร์ Supabase MCP

MCP Registry Version

เชื่อมต่อโปรเจกต์ Supabase ของคุณกับ Cursor, Claude, Windsurf และผู้ช่วย AI อื่นๆ

supabase-mcp-demo

Model Context Protocol (MCP) กำหนดมาตรฐานวิธีการที่ Large Language Models (LLMs) สื่อสารกับบริการภายนอกอย่าง Supabase โดยเชื่อมต่อผู้ช่วย AI เข้ากับโปรเจกต์ Supabase ของคุณโดยตรง และช่วยให้พวกเขาสามารถทำงานต่างๆ เช่น การจัดการตาราง การดึงข้อมูลคอนฟิก และการสอบถามข้อมูล ดู รายการเครื่องมือทั้งหมด

การตั้งค่า

1. ปฏิบัติตามแนวทางปฏิบัติด้านความปลอดภัยที่ดีที่สุดของเรา

ก่อนตั้งค่าเซิร์ฟเวอร์ MCP เราขอแนะนำให้คุณอ่าน แนวทางปฏิบัติด้านความปลอดภัยที่ดีที่สุด เพื่อทำความเข้าใจความเสี่ยงของการเชื่อมต่อ LLM เข้ากับโปรเจกต์ Supabase ของคุณและวิธีลดความเสี่ยงเหล่านั้น

2. กำหนดค่าไคลเอนต์ MCP ของคุณ

หากต้องการกำหนดค่าเซิร์ฟเวอร์ Supabase MCP บนไคลเอนต์ของคุณ โปรดเยี่ยมชม เอกสารการตั้งค่า ของเรา คุณยังสามารถสร้าง URL MCP ที่กำหนดเองสำหรับโปรเจกต์ของคุณได้โดยไปที่ แท็บการเชื่อมต่อ MCP ในแดชบอร์ด Supabase

ไคลเอนต์ MCP ของคุณจะแจ้งให้คุณเข้าสู่ระบบ Supabase โดยอัตโนมัติระหว่างการตั้งค่า ตรวจสอบให้แน่ใจว่าคุณเลือกองค์กรที่มีโปรเจกต์ที่คุณต้องการทำงานด้วย

ไคลเอนต์ MCP ส่วนใหญ่ต้องการข้อมูลต่อไปนี้:

{
  "mcpServers": {
    "supabase": {
      "type": "http",
      "url": "https://mcp.supabase.com/mcp"
    }
  }
}

หากคุณไม่เห็นไคลเอนต์ MCP ของคุณอยู่ในเอกสารของเรา โปรดตรวจสอบเอกสาร MCP ของไคลเอนต์ของคุณและคัดลอกข้อมูล MCP ด้านบนลงในรูปแบบที่คาดหวัง (json, yaml ฯลฯ)

CLI

หากคุณรัน Supabase ในเครื่องด้วย Supabase CLI คุณสามารถเข้าถึงเซิร์ฟเวอร์ MCP ได้ที่ http://localhost:54321/mcp ปัจจุบัน เซิร์ฟเวอร์ MCP ในสภาพแวดล้อม CLI มีเครื่องมือชุดย่อยที่จำกัดและไม่มี OAuth 2.1

โฮสต์ด้วยตนเอง

สำหรับ Supabase ที่โฮสต์ด้วยตนเอง โปรดตรวจสอบหน้า การเปิดใช้งานเซิร์ฟเวอร์ MCP ปัจจุบัน เซิร์ฟเวอร์ MCP ในสภาพแวดล้อมที่โฮสต์ด้วยตนเองมีเครื่องมือชุดย่อยที่จำกัดและไม่มี OAuth 2.1

ตัวเลือกการกำหนดค่าและเครื่องมือ

ดูเอกสาร Supabase MCP Server สำหรับ รายการเครื่องมือที่มี และ ตัวเลือกการกำหนดค่า ทั้งหมด

เอกสารยังมีตัวสร้าง URL แบบโต้ตอบเพื่อเติมตัวเลือกการกำหนดค่าให้คุณ

การใช้งานกับ MCP Client ของ AI SDK

แพ็คเกจ @supabase/mcp-server-supabase ส่งออก createToolSchemas() เพื่อเติมสคีมาอินพุตและเอาต์พุตสำหรับ MCP client ของ Vercel AI SDK ซึ่งช่วยให้เครื่องมือ Supabase MCP ถูกจัดการเป็นเครื่องมือแบบคงที่พร้อมการตรวจสอบฝั่งไคลเอนต์และประเภท TypeScript ที่อนุมานสำหรับอินพุตและเอาต์พุต

import { createToolSchemas } from '@supabase/mcp-server-supabase';
import { createMCPClient } from '@ai-sdk/mcp';
import { streamText } from 'ai';

const mcpClient = await createMCPClient({
  transport: {
    type: 'http',
    url: 'https://mcp.supabase.com/mcp',
  },
});

const tools = await mcpClient.tools({
  schemas: createToolSchemas(),
});

const result = streamText({ model, tools, prompt: '...' });

for (const step of await result.steps) {
  for (const toolResult of step.staticToolResults) {
    if (toolResult.toolName === 'get_project_url') {
      toolResult.input;  // { project_id: string }
      toolResult.output; // { url: string }
    }
  }
}

createToolSchemas() รองรับตัวเลือกการกรองที่คล้ายกับพารามิเตอร์ URL ของเซิร์ฟเวอร์ MCP:

  • features: จำกัดเฉพาะ กลุ่มคุณสมบัติ ที่ระบุ (เช่น ['database', 'docs']) ค่าเริ่มต้นคือกลุ่มคุณสมบัติเริ่มต้นทั้งหมด
  • projectScoped: เมื่อเป็น true จะละเว้น project_id จากสคีมาอินพุตของเครื่องมือและไม่รวมเครื่องมือระดับบัญชี — ใช้เมื่อเชื่อมต่อกับเซิร์ฟเวอร์ที่กำหนดค่าด้วย project_ref ค่าเริ่มต้นคือ false
  • readOnly: เมื่อเป็น true จะไม่รวมเครื่องมือที่แก้ไขข้อมูล — ใช้เมื่อเชื่อมต่อกับเซิร์ฟเวอร์ที่กำหนดค่าด้วย read_only=true ค่าเริ่มต้นคือ false
const mcpClient = await createMCPClient({
  transport: {
    type: 'http',
    url: 'https://mcp.supabase.com/mcp?project_ref=<project-ref>&read_only=true&features=database,docs',
  },
});

const tools = await mcpClient.tools({
  schemas: createToolSchemas({
    features: ['database', 'docs'],
    projectScoped: true,
    readOnly: true,
  }),
});

[!NOTE] เซิร์ฟเวอร์นี้ไม่ส่ง structuredContent ในผลลัพธ์เครื่องมือ MCP AI SDK จะย้อนกลับไปแยกวิเคราะห์ JSON จากข้อความ content

สำหรับข้อมูลเพิ่มเติม โปรดดู คำจำกัดความของสคีมา และ ผลลัพธ์เครื่องมือที่พิมพ์ ในเอกสาร AI SDK

การโฮสต์ปลายทาง MCP ด้วยตนเอง

แพ็คเกจ @supabase/mcp-server-supabase ส่งออก createSupabaseMcpHandler() เพื่อให้บริการเครื่องมือผ่าน HTTP จากปลายทางของคุณเอง โดยยอมรับ SupabaseMcpServerOptions เดียวกับ createSupabaseMcpServer() โดยเฉพาะอย่างยิ่ง platform

ตัวจัดการรองรับเฉพาะโปรโตคอลเวอร์ชันปัจจุบันเท่านั้น มันถูกสร้างด้วย legacy: 'reject' ดังนั้นไคลเอนต์ที่พูดเฉพาะโปรโตคอลยุค 2025 จะได้รับ HTTP 400 แทนที่จะได้รับบริการ

เมื่อ platform มีข้อมูลประจำตัวต่อคำขอ ให้สร้างตัวจัดการต่อคำขอและปิดเมื่อการตอบสนองเสร็จสิ้น ตัวจัดการปิดทับ platform ที่คุณให้ไว้ ดังนั้นตัวจัดการที่ใช้ร่วมกันจะให้บริการทุกคำขอด้วยแพลตฟอร์มนั้น

ตัวจัดการที่มีอายุยาวนานนั้นใช้ได้เมื่อ platform ตั้งใจให้แชร์ เช่น โทเค็นบัญชีบริการ สร้างมันครั้งเดียวและ close() เมื่อปิดระบบแทนที่จะต่อคำขอ เนื่องจาก close() ทำลายเราเตอร์การสมัครสมาชิกและปฏิเสธคำขอในภายหลัง

import { createServer } from 'node:http';
import { toNodeHandler } from '@modelcontextprotocol/node';
import { createSupabaseMcpHandler } from '@supabase/mcp-server-supabase';
import { createSupabaseApiPlatform } from '@supabase/mcp-server-supabase/platform/api';

const server = createServer((req, res) => {
  const accessToken = getAccessTokenFromRequest(req); // your own auth

  const handler = createSupabaseMcpHandler({
    platform: createSupabaseApiPlatform({ accessToken }),
  });

  // `close()` aborts in-flight exchanges, so close on `res` finishing rather
  // than when the handler resolves, which would cut streaming responses short.
  res.on('close', () => {
    handler.close().catch((error) => console.error(error));
  });

  toNodeHandler(handler)(req, res).catch((error) => console.error(error));
});

toNodeHandler มาจาก @modelcontextprotocol/node ซึ่งไม่ใช่ dependency ของแพ็คเกจนี้ ติดตั้งควบคู่กัน

เซิร์ฟเวอร์ MCP อื่นๆ

@supabase/mcp-server-postgrest

เซิร์ฟเวอร์ PostgREST MCP ช่วยให้คุณเชื่อมต่อผู้ใช้ของคุณเองกับแอปของคุณผ่าน REST API ดูรายละเอียดเพิ่มเติมได้ที่ README ของโปรเจกต์

ทรัพยากร

สำหรับนักพัฒนา

ดู CONTRIBUTING สำหรับรายละเอียดเกี่ยวกับวิธีการมีส่วนร่วมในโปรเจกต์นี้

ใบอนุญาต

โปรเจกต์นี้ได้รับอนุญาตภายใต้ Apache 2.0 ดูไฟล์ LICENSE สำหรับรายละเอียด