Supabase MCP Server

Supabase MCP 서버

Supabase 데이터베이스와 상호 작용하기 위한 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이 서버는 FastMCP Python SDK를 사용하여 모델 컨텍스트 프로토콜을 구현하여 대규모 언어 모델(LLM)에 대한 데이터베이스 운영 도구를 제공합니다.

특징

  • 필터링, 페이지 매김 및 정렬을 사용하여 Supabase 테이블에서 레코드 읽기
  • Supabase 테이블에 새 레코드(단일 또는 일괄) 생성
  • 필터 조건에 따라 기존 레코드 업데이트
  • 필터 조건에 따라 테이블에서 레코드 삭제
  • MCP의 Stdio 전송을 사용하여 통신합니다.

필수 조건

  • Python 3.8 이상
  • 이미 설정된 테이블이 있는 Supabase 프로젝트
  • 인증을 위한 Supabase 서비스 역할 키

설치

  1. 이 저장소를 복제하세요:지엑스피1
  2. 가상 환경 설정(권장):
    # Create a virtual environment python -m venv venv # Activate the virtual environment # On Windows: venv\Scripts\activate # On macOS/Linux: source venv/bin/activate
  3. 종속성을 설치합니다.
    pip install -r requirements.txt
  4. 환경 변수 설정:
    • .env.example 파일을 .env 로 복사합니다.
      cp .env.example .env # On Windows, use: # copy .env.example .env
    • .env 파일에 Supabase URL과 서비스 역할 키를 입력하세요.
      SUPABASE_URL=your_supabase_project_url SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key

용법

서버 시작

가상 환경이 활성화되었는지 확인한 후 서버를 실행하세요.

python server.py

서버는 Stdio 전송을 사용하므로 표준 입력에서 MCP 요청을 수신하고 표준 출력에서 응답합니다.

MCP 클라이언트와 통합

이 서버는 모델 컨텍스트 프로토콜(Model Context Protocol)을 구현하며 모든 MCP 호환 클라이언트와 통합될 수 있습니다. 예를 들어, MCP 도구를 지원하는 LLM 프레임워크와 함께 사용할 수 있습니다.

Windsurf/Cursor MCP 구성에 추가

Windsurf 또는 Cursor 구성에 이 MCP 서버를 추가하려면:

  1. mcp_config.json 파일을 찾으세요.
    • 윈도우: C:\Users\<username>\.codeium\windsurf\mcp_config.json
    • macOS: ~/.codeium/windsurf/mcp_config.json
    • 리눅스: ~/.codeium/windsurf/mcp_config.json
  2. mcpServers 섹션에 Supabase MCP 서버를 추가합니다.
{ "mcpServers": { // ... other servers "supabase": { "command": "python", "args": [ "/path/to/your/supabase-mcp/server.py" ], "env": { "SUPABASE_URL": "your_supabase_url", "SUPABASE_SERVICE_ROLE_KEY": "your_supabase_key" } } } }

/path/to/your/supabase-mcp/server.py server.py 파일의 절대 경로로 바꾸세요.

참고 : 더 나은 격리를 위해 가상 환경에서 Python 실행 파일을 사용할 수 있습니다.

{ "mcpServers": { "supabase": { "command": "/path/to/your/venv/bin/python", // or "venv\\Scripts\\python.exe" on Windows "args": [ "/path/to/your/supabase-mcp/server.py" ] } } }
  1. 변경 사항을 적용하려면 Windsurf/Cursor 애플리케이션을 다시 시작하세요.
  2. 이제 Supabase MCP 도구를 AI 비서에서 사용할 수 있습니다.

도구 설명

서버는 다음과 같은 도구를 제공합니다.

1. 읽기_레코드

유연한 쿼리 옵션을 사용하여 Supabase 데이터베이스 테이블에서 레코드를 읽습니다.

매개변수:

  • table (문자열, 필수): 읽을 테이블의 이름
  • columns (문자열, 선택 사항, 기본값: "*"): 선택할 열(쉼표로 구분 또는 모든 열의 경우 *)
  • filters (객체, 선택 사항): 키-값 쌍으로 필터링 조건
  • limit (정수, 선택 사항): 반환할 최대 레코드 수
  • offset (정수, 선택 사항): 페이지 매김을 위해 건너뛸 레코드 수
  • order_by (객체, 선택 사항): 열:방향 쌍으로 정렬 옵션

예:

{ "table": "users", "columns": "id,name,email", "filters": {"is_active": true}, "limit": 10, "offset": 0, "order_by": {"created_at": "desc"} }

2. 레코드 생성

Supabase 데이터베이스 테이블에 하나 이상의 레코드를 생성합니다.

매개변수:

  • table (문자열, 필수): 레코드를 생성할 테이블의 이름
  • records (객체 또는 배열, 필수): 생성할 단일 레코드 객체 또는 레코드 객체 배열

예(단일 레코드):

{ "table": "users", "records": { "name": "John Doe", "email": "john@example.com", "role": "user" } }

예(여러 레코드):

{ "table": "users", "records": [ { "name": "John Doe", "email": "john@example.com", "role": "user" }, { "name": "Jane Smith", "email": "jane@example.com", "role": "admin" } ] }

3. 업데이트_레코드

필터 조건에 따라 Supabase 데이터베이스 테이블의 기존 레코드를 업데이트합니다.

매개변수:

  • table (문자열, 필수): 레코드를 업데이트할 테이블의 이름
  • updates (객체, 필수): 키-값 쌍으로 업데이트할 필드
  • filters (객체, 필수): 업데이트할 레코드를 식별하기 위한 필터링 조건

예:

{ "table": "users", "updates": { "is_verified": true, "last_login_at": "2025-04-04T15:30:00Z" }, "filters": { "id": 123 } }

4. 레코드 삭제

필터 조건에 따라 Supabase 데이터베이스 테이블에서 레코드를 삭제합니다.

매개변수:

  • table (문자열, 필수): 레코드를 삭제할 테이블의 이름
  • filters (객체, 필수): 삭제할 레코드를 식별하기 위한 필터링 조건

예:

{ "table": "expired_sessions", "filters": { "expires_at": {"lt": "2025-01-01T00:00:00Z"} } }

개발

프로젝트 구조

  • server.py : 주요 MCP 서버 구현
  • supabase_client.py : Supabase 클라이언트 래퍼
  • requirements.txt : Python 종속성
  • .env.example : 환경 변수 파일 예시

새로운 도구 추가

서버에 새로운 도구를 추가하려면:

  1. server.py 에서 도구의 요청 매개변수에 대한 Pydantic 모델을 정의합니다.
  2. SupabaseMCPServer 클래스에 핸들러 메서드를 추가합니다.
  3. 설명적인 이름과 설명서를 사용하여 _register_tools 메서드에 도구를 등록합니다.

특허

MIT 라이센스

기여하다

기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.

-
security - not tested
-
license - not tested
-
quality - not tested

Supabase 데이터베이스와 상호 작용하고 필터링 및 페이지 매김 기능을 사용하여 레코드 읽기, 생성, 업데이트 및 삭제와 같은 작업을 지원하기 위한 도구를 LLM에 제공하기 위해 모델 컨텍스트 프로토콜을 구현합니다.

  1. Features
    1. Prerequisites
      1. Installation
        1. Usage
          1. Starting the Server
          2. Integrating with MCP Clients
          3. Tool Descriptions
        2. Development
          1. Project Structure
          2. Adding New Tools
        3. License
          1. Contributing
            ID: catmky04lv