Supabase MCP
ทางการเซิร์ฟเวอร์ MCP อย่างเป็นทางการของ Supabase สำหรับจัดการโปรเจกต์ Supabase, ฐานข้อมูล, การยืนยันตัวตน, พื้นที่จัดเก็บ, ฟังก์ชัน Edge และเวิร์กโฟลว์ SQL จากเอเจนต์ AI
คุณทำอะไรได้บ้างด้วย Supabase MCP?
- จัดการตารางฐานข้อมูล — ขอให้ผู้ช่วยของคุณสร้าง แก้ไข หรือลบตารางในฐานข้อมูลของโปรเจกต์ Supabase
- สอบถามและตรวจสอบข้อมูล — ให้ผู้ช่วยของคุณรันคำสั่ง SQL หรือดึงเนื้อหาของตารางเพื่อตอบคำถามเกี่ยวกับข้อมูลของคุณ
- ดึงการกำหนดค่าโปรเจกต์ — ขอรายละเอียดเกี่ยวกับการตั้งค่าโปรเจกต์ Supabase เช่น ข้อมูลการเชื่อมต่อหรือแฟล็กคุณสมบัติ
- จำกัดขอบเขตการเข้าถึง — กำหนดค่าบนเซิร์ฟเวอร์ด้วย
read_only=trueหรือproject_refเพื่อจำกัดเครื่องมือให้ทำงานเฉพาะการดำเนินการที่ปลอดภัยและเฉพาะโปรเจกต์
เซิร์ฟเวอร์ MCP แบบโฮสต์
npx add-mcp 'https://mcp.supabase.com/mcp'ติดตั้งลง Claude Code, Codex, Cursor และอื่นๆ
เอกสาร
เซิร์ฟเวอร์ Supabase MCP
เชื่อมต่อโปรเจกต์ Supabase ของคุณกับ Cursor, Claude, Windsurf และผู้ช่วย AI อื่นๆ
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ค่าเริ่มต้นคือfalsereadOnly: เมื่อเป็น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 โค้ดของคุณนำเข้ามันโดยตรง ดังนั้นติดตั้งมันควบคู่กัน
การสังเกตการณ์
ส่ง observer ไปยัง createSupabaseMcpServer เพื่อรวบรวมผลลัพธ์วงจรชีวิตของคำขอและข้อเท็จจริงในตัวของ Supabase ที่นี่ platform คืออะแดปเตอร์แพลตฟอร์มที่มีอยู่ของคุณ:
import { createSupabaseMcpServer } from '@supabase/mcp-server-supabase';
const server = createSupabaseMcpServer({
platform,
observer: (context) => ({
record(fact) {
console.info(fact);
},
end(result) {
console.info({ ...context, ...result });
},
}),
});
เซิร์ฟเวอร์ไม่ส่งต่อเพย์โหลดคำขอหรือการตอบสนองไปยังผู้สังเกตการณ์โดยอัตโนมัติ ข้อเท็จจริงในตัวของ Supabase ใช้ชุดฟิลด์และค่าที่มีขอบเขตจำกัด ข้อเท็จจริงที่กำหนดเองไม่ได้รับการตรวจสอบความเป็นส่วนตัวอัตโนมัติ การละเว้น observer จะข้ามงานสังเกตการณ์ทั้งหมด ความล้มเหลวของผู้สังเกตการณ์ ตัวจำแนก และซิงก์ไม่เปลี่ยนพฤติกรรมของคำขอ แต่งานสังเกตการณ์และตัวจำแนกแบบซิงโครนัสสามารถบล็อกคำขอได้
เซิร์ฟเวอร์ MCP อื่นๆ
@supabase/mcp-server-postgrest
เซิร์ฟเวอร์ PostgREST MCP ช่วยให้คุณเชื่อมต่อผู้ใช้ของคุณเองกับแอปของคุณผ่าน REST API ดูรายละเอียดเพิ่มเติมได้ที่ README ของโปรเจกต์
ทรัพยากร
- Model Context Protocol: เรียนรู้เพิ่มเติมเกี่ยวกับ MCP และความสามารถของมัน
- จากการพัฒนาไปสู่การผลิต: เรียนรู้วิธีเลื่อนการเปลี่ยนแปลงไปยังสภาพแวดล้อมการผลิตอย่างปลอดภัย
สำหรับนักพัฒนา
ดู CONTRIBUTING สำหรับรายละเอียดเกี่ยวกับวิธีมีส่วนร่วมในโปรเจกต์นี้
ลิขสิทธิ์
โปรเจกต์นี้ได้รับอนุญาตภายใต้ Apache 2.0 ดูไฟล์ LICENSE สำหรับรายละเอียด