/ 디렉터리 / 플레이그라운드 / Supabase
● 공식 supabase-community 🔑 본인 키 필요

Supabase

제작: supabase-community · supabase-community/supabase-mcp

공식 Supabase MCP — 채팅을 통해 프로젝트 관리, SQL 실행, Edge Functions 배포, 인증 구성, 로그 보기 등의 모든 작업을 수행할 수 있습니다.

Supabase-community org에서 유지 관리하는 Supabase의 공식 MCP입니다. Supabase Management API와 프로젝트별 Postgres 액세스를 래핑합니다. 에이전트가 채팅을 종료하지 않고도 브랜치를 생성하고, 마이그레이션을 실행하고, Edge Functions를 작성하고, DB를 쿼리하고, 로그를 읽을 수 있습니다.

왜 쓰나요

핵심 기능

라이브 데모

실제 사용 모습

supabase.replay ▶ 준비됨
0/0

설치

클라이언트 선택

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config 열기. 저장 후 앱 재시작.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  }
}

Cursor는 Claude Desktop과 동일한 mcpServers 스키마 사용. 프로젝트 설정이 전역보다 우선.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  }
}

Cline 사이드바의 MCP Servers 아이콘 클릭 후 "Edit Configuration" 선택.

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  }
}

Claude Desktop과 같은 형식. Windsurf 재시작 후 적용.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "supabase",
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase"
      ]
    }
  ]
}

Continue는 맵이 아닌 서버 오브젝트 배열 사용.

~/.config/zed/settings.json
{
  "context_servers": {
    "supabase": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@supabase/mcp-server-supabase"
        ]
      }
    }
  }
}

context_servers에 추가. 저장 시 Zed가 핫 리로드.

claude mcp add supabase -- npx -y @supabase/mcp-server-supabase

한 줄 명령. claude mcp list로 확인, claude mcp remove로 제거.

사용 사례

실전 활용법: Supabase

프로덕션에 적용하기 전에 데이터베이스 분기에서 파괴적인 마이그레이션을 테스트하십시오.

👤 엔지니어가 스키마 변경 사항을 배송함 ⏱ ~30 min advanced

언제 쓸까: 열을 삭제하거나 수백만 개의 행을 채우는 마이그레이션이 있으며 먼저 실제 데이터 분기에서 테스트 실행을 원합니다.

사전 조건
  • Supabase Pro 플랜 이상 — 분기는 유료 요금제로 제한됩니다.
  • 개인 액세스 토큰 — supabase.com/dashboard/account/tokens — 조직의 범위
흐름
  1. prod에서 브랜치 생성
    프로젝트 <ref>의 기본 분기에서 'test-drop-legacy-col'이라는 데이터베이스 분기를 만듭니다. 준비가 될 때까지 기다리십시오.✓ 복사됨
    → 자체 연결 문자열로 생성된 분기
  2. 지점에서 마이그레이션 실행
    새 분기에 <paste SQL> 마이그레이션을 적용합니다. 영향을 받은 행과 오류를 보고합니다.✓ 복사됨
    → 마이그레이션이 실행됩니다. 행 개수 표시
  3. 확인하고 승격하거나 삭제합니다.
    분기에서 온전한 SELECT를 실행합니다(영향을 받은 테이블의 상위 10개 행, 변경된 열의 NULL 개수). 좋아 보이면 말해주세요. 홍보하겠습니다. 그렇지 않은 경우 분기를 삭제하십시오.✓ 복사됨
    → 검증 출력 후 명시적인 사람의 go/no-go

결과: 프로덕션에 영향을 미치기 전에 실제 데이터 형태에 대해 검증된 마이그레이션입니다.

함정
  • 지점에는 프로덕션의 정확한 데이터가 없습니다. 지점 생성 시 스냅샷입니다. — 스냅샷 타임스탬프를 확인하세요. 마이그레이션이 최근 행에 민감한 경우 적용 시간에 최대한 가깝게 분기하세요.
  • 지점 생성 비용 계산 시간 — 테스트 후에는 항상 브랜치를 삭제하세요. 버려진 지점 과금 누적
함께 쓰기: github · postgres

채팅에서 Supabase Edge Function 작성 및 배포

👤 소규모 백엔드 엔드포인트(웹후크, 서명된 URL 생성기 등)를 추가하는 개발자 ⏱ ~20 min intermediate

언제 쓸까: Edge 기능에 완벽한 DB 액세스가 가능한 빠른 HTTP 엔드포인트가 필요하며 대시보드로 컨텍스트 전환을 원하지 않습니다.

흐름
  1. 비계 기능
    <ref> 프로젝트에 Edge Function stripe-webhook을 생성합니다. Stripe 서명의 유효성을 검사한 다음 stripe_events 테이블에 행을 삽입해야 합니다. Deno 스타일 가져오기를 사용하세요.✓ 복사됨
    → 적절한 Deno 규칙에 따라 작성된 함수 코드
  2. 배포
    프로젝트 <ref>에 stripe-webhook을 배포합니다. 결과 URL을 보여주세요.✓ 복사됨
    → 배포된 URL이 반환됨
  3. 샘플 페이로드로 테스트
    테스트 페이로드를 URL에 게시하고 함수 로그를 추적합니다. 성공해서 행을 썼나요?✓ 복사됨
    → 로그에는 호출이 표시됩니다. 테이블에 보이는 행

결과: 5분 안에 작동을 증명하기 위한 라이브 엔드포인트와 DB의 행이 추가됩니다.

함정
  • 비밀(STRIPE_SECRET)은 자동으로 삽입되지 않습니다. — 호출하기 전에 Supabase 대시보드 또는 'set_secrets' MCP 도구를 통해 설정하세요. Deno.env.get('STRIPE_SECRET')을 통한 참조
  • 엣지 기능 콜드 스타트; 첫 번째 요청이 느립니다 — '작동'을 선언하기 전에 워밍업을 위해 배포 후 한 번 호출
함께 쓰기: stripe · github

Supabase 프로젝트의 행 수준 보안 정책 감사

👤 보안에 민감한 개발자 및 검토자 ⏱ ~25 min intermediate

언제 쓸까: 시작하기 전에 RLS가 모든 테이블에 대해 켜져 있고 정책이 실제로 생각한 대로 작동하는지 확인하고 싶습니다.

흐름
  1. 테이블 및 RLS 상태 나열
    공개 스키마의 모든 테이블을 나열합니다. 각각에 대해 RLS가 활성화되어 있습니까? 첨부된 정책을 나열하세요.✓ 복사됨
    → 테이블별 RLS 상태 및 정책 본문
  2. RLS가 없는 테이블 찾기
    RLS가 OFF이거나 RLS가 ON이지만 정책이 없는 테이블을 강조 표시합니다(사실상 자동으로 모두 거부).✓ 복사됨
    → 각각에 대한 명확한 카테고리가 포함된 위험 목록
  3. 익명으로 테스트
    3개의 민감한 테이블에 대해 익명 사용자 쿼리를 시뮬레이션합니다(anon 역할 사용). 행을 반환합니까? 그러면 안됩니다.✓ 복사됨
    → 빈 결과 = 좋음; 반환된 행 = 정책 버그

결과: 테이블당 증거가 포함된 인증 상태에 대한 사전 출시 승인입니다.

함정
  • 내부라고 생각했던 테이블에서 RLS가 꺼졌습니다. — 서비스 역할 키는 설계상 RLS를 우회하므로 클라이언트 측에 노출되지 않습니다. 어떤 키가 어디에 사용되는지 감사

사용자가 로그인할 수 없는 이유 조사

👤 지원 엔지니어, 일선 업무를 수행하는 창립자 ⏱ ~10 min beginner

언제 쓸까: 사용자가 '내 로그인 링크가 작동하지 않습니다'라고 보고하고 이메일이 전송되었는지, 어떤 인증 이벤트가 실행되었는지 등을 확인하려고 합니다.

흐름
  1. 사용자 찾기
    이메일이 '[email protected]'인 인증 사용자를 찾으세요. Created_at, last_sign_in_at, email_confirmed_at를 표시합니다.✓ 복사됨
    → 사용자 기록 또는 '찾을 수 없음' 판정
  2. 최근 인증 로그 확인
    지난 24시간 동안 해당 user_id에 대한 인증 로그 항목을 가져옵니다. 이벤트 유형별로 그룹화합니다.✓ 복사됨
    → 인증 이벤트 순서(otp_sent, sign_in_failed 등)
  3. 해결하다
    사건에 따르면 실제 문제는 무엇입니까? 수정 사항을 제안합니다(초대 다시 보내기, 수동으로 확인, 비밀번호 재설정).✓ 복사됨
    → 진단 및 실행 계획

결과: 감사 추적이 포함된 지원 티켓이 5분 안에 해결됩니다.

함정
  • PII가 채팅 로그로 유입됩니다. — 보관된 채팅 기록에 원시 사용자 기록을 붙여넣지 마세요. 요약할 때 이메일 수정

Supabase 스키마에서 TypeScript 유형 생성

👤 `supabase-js`를 사용하는 프런트엔드 개발자 ⏱ ~10 min beginner

언제 쓸까: DB 스키마를 변경했으며 이에 맞게 클라이언트 유형을 업데이트하려고 합니다.

흐름
  1. 유형 생성
    프로젝트 <ref>의 공개 스키마에 대한 TypeScript 유형을 생성합니다. src/types/database.ts에 저장합니다.✓ 복사됨
    → 작성된 파일 유형
  2. 사용법 비교 및 ​​확인
    이전 유형 파일(git)과 비교하여 무엇이 변경되었나요? src/의 기존 호출 사이트에 적용되는 변경 사항이 있습니까?✓ 복사됨
    → 변경당 영향 분석
  3. 공개홍보
    유형 업데이트와 필요한 호출 사이트 수정 사항을 커밋합니다. 'chore: regen db type YYYY-MM-DD'라는 제목의 PR을 엽니다.✓ 복사됨
    → 전체 차이점으로 PR이 열렸습니다.

결과: 유형은 스키마와 동기화 상태를 유지합니다. 프로덕션 단계가 아닌 PR 시간에 끊어진 호출 사이트가 포착되었습니다.

함정
  • 뷰에 SECURITY INVOKER가 설정되어 있지 않으면 생성된 유형에 뷰가 포함되지 않습니다. — 뷰를 명시적으로 추가하거나 격차를 문서화하세요. supabase-js는 상관없이 from('view_name')으로 이를 처리합니다.
함께 쓰기: github · filesystem

조합

다른 MCP와 조합해 10배 효율

supabase + github

마이그레이션을 통해 PR을 열고, 지점에 배포하고, 테스트 결과를 PR에 첨부하세요.

supabase/migrations/에 마이그레이션을 추가하는 PR을 엽니다. 마이그레이션이 적용된 Supabase 분기를 만듭니다. 지점 테스트 결과를 PR에 댓글로 달아주세요.✓ 복사됨
supabase + stripe

Supabase에 이벤트를 기록하는 Stripe webhook Edge Function 구축

Stripe 웹후크를 수신하고, 서명의 유효성을 검사하고, stripe_events 테이블에 이벤트를 삽입하는 Edge 함수를 생성합니다. Stripe에서 웹후크 엔드포인트가 이를 가리키도록 설정합니다.✓ 복사됨
supabase + filesystem

로컬 SQL 마이그레이션 파일을 Supabase 프로젝트 상태와 동기화

디스크의 /supabase/migrations/를 프로젝트에 적용된 마이그레이션과 비교합니다. 누락된 항목을 순서대로 적용하세요.✓ 복사됨

도구

이 MCP가 노출하는 것

도구입력언제 호출비용
list_projects none 귀하의 토큰이 액세스할 수 있는 프로젝트를 알아보세요 free
get_project / pause_project / restore_project project_id: str 프로젝트 검사 또는 제어 free
create_branch / list_branches / merge_branch / delete_branch project_id, name? 마이그레이션 테스트를 위한 데이터베이스 분기(Pro+) Branch compute hours billed
list_tables project_id, schemas?: str[] 스키마 내부 검사 free
list_extensions / list_migrations project_id DB 메타데이터 free
apply_migration project_id, name: str, query: str 프로젝트 DB에 추적된 마이그레이션 적용 free
execute_sql project_id, query: str 임시 SQL — 읽기 또는 쓰기 free
list_edge_functions / get_edge_function / deploy_edge_function project_id, function name, code, entrypoint Deno 기반 엣지 기능 관리 Edge function invocations billed
get_logs project_id, service: 'postgres'|'auth'|'edge-function'|... 서비스에 대한 최근 로그 가져오기 free
generate_typescript_types project_id 스키마 변경 후 클라이언트 유형 재생성 free
get_anon_key / get_project_url / get_advisors project_id 프로젝트 메타데이터 고문은 보안 또는 성능 문제를 표시합니다. free

비용 및 제한

운영 비용

API 쿼터
플랜당 표준 Subabase 요금 제한
호출당 토큰
스키마 쿼리: 작습니다. 로그 및 SQL 결과: 데이터 볼륨에 따라 다름 — 항상 시간/행 제한 설정
금액
MCP는 무료입니다. Supabase 프로젝트는 플랜별로 제공됩니다(무료 등급 $0, Pro $25/월). 분기에는 컴퓨팅 시간이 소모됩니다.
Branch는 테스트에는 좋지만 잊어버리면 비용이 많이 듭니다. 병합 후 또는 폐기 시에는 항상 delete_branch를 사용하세요.

보안

권한, 시크릿, 파급범위

최소 스코프: personal access token scoped to specific projects when possible
자격 증명 저장: 환경 var SUPABASE_ACCESS_TOKEN의 개인 액세스 토큰
데이터 외부 송신: api.supabase.com 및 프로젝트의 지역 엔드포인트에 대한 모든 호출
절대 부여 금지: service_role key to the agent unless absolutely needed — it bypasses RLS

문제 해결

자주 발생하는 오류와 해결

Unauthorized — invalid token

토큰이 만료되었거나 범위가 잘못되었습니다. supabase.com/dashboard/account/tokens에서 새 토큰을 생성하세요.

확인: curl -H 'Authorization: Bearer $TOKEN' https://api.supabase.com/v1/projects
Branching tools fail with 'plan does not support branching'

분기는 Pro+입니다. 계획을 업그레이드하거나 분기 워크플로를 건너뜁니다.

Edge Function deploy fails: 'invalid Deno code'

함수 코드는 Deno와 호환되어야 합니다(노드 스타일이 필요하지 않음). 가져오기에서 https://deno.land/... 또는 npm: 지정자를 사용하는지 확인하세요.

execute_sql returns 'permission denied'

MCP는 프로젝트 범위 역할을 사용합니다. 권한 있는 작업의 경우 대시보드 SQL 편집기를 통해 실행하세요. MCP 역할 슈퍼유저를 부여하지 마세요.

대안

Supabase 다른 것과 비교

대안언제 쓰나단점/장점
Postgres MCP읽기 전용 SQL 액세스만 필요하며 Supabase 관련 기능은 필요하지 않습니다.분기, 에지 기능, 인증 검사 또는 로그 없음
Neon MCP대신 Neon을 사용하고 있습니다. 분기도 있습니다.다른 플랫폼; 인증/에지 기능 없음
Supabase CLI directlysupabase start를 사용하여 전체 로컬 개발 흐름을 원합니다.No agent ergonomics; better for committed workflows

더 보기

리소스

📖 GitHub에서 공식 README 읽기

🐙 열린 이슈 보기

🔍 400+ MCP 서버 및 Skills 전체 보기