SingleStore

공식

SingleStore 데이터베이스 플랫폼과 상호작용합니다.

Single Store MCP(으)로 무엇을 할 수 있나요?

  • 사용자 및 조직 세부 정보 가져오기 — 어시스턴트에게 get_user_infoorganization_info를 사용하여 계정 정보를 검색하도록 요청하세요.
  • 워크스페이스 관리workspaces_info, create_starter_workspace, resume_workspace, terminate_starter_workspace를 사용하여 워크스페이스를 나열, 생성, 재개 또는 종료합니다.
  • 워크스페이스에서 SQL 쿼리 실행run_sql을 통해 쿼리와 연결 세부 정보를 제공하여 연결된 워크스페이스에 대해 SQL을 실행합니다.
  • 노트북 생성 및 예약create_notebook_file로 노트북을 만들고, upload_notebook_file로 파일을 업로드하며, create_job_from_notebook으로 작업을 예약합니다.
  • Stage 파일 관리stage_list_files, stage_upload_file, stage_move, stage_delete를 사용하여 Stage 배포에서 파일을 나열, 업로드, 이동 및 삭제합니다.

문서

SingleStore MCP 서버

MIT Licence PyPI Downloads

모델 컨텍스트 프로토콜 (MCP)은 대규모 언어 모델(LLM)과 외부 시스템 간의 컨텍스트를 관리하기 위해 설계된 표준화된 프로토콜입니다. 이 저장소는 SingleStore용 설치 프로그램과 MCP 서버를 제공하여 원활한 통합을 가능하게 합니다.

MCP를 사용하면 Claude Desktop, Claude Code, Cursor 또는 호환되는 모든 MCP 클라이언트에서 자연어로 SingleStore와 상호 작용할 수 있어 복잡한 작업을 손쉽게 수행할 수 있습니다.

💡 프로 팁: MCP 서버가 무엇을 할 수 있는지 잘 모르시겠다면? 채팅에서 /help 프롬프트를 호출해 보세요!

요구 사항

  • Python >= v3.10.0
  • Python 환경에 uvx 설치
  • VS Code, Cursor, Windsurf, Claude Desktop, Claude Code, Goose 또는 기타 MCP 클라이언트

시작하기

시작하기

먼저, 클라이언트에 SingleStore MCP 서버를 설치하세요.

표준 구성은 대부분의 도구에서 작동합니다:

{
  "mcpServers": {
    "singlestore-mcp-server": {
      "command": "uvx",
      "args": [
        "singlestore-mcp-server",
        "start"
      ]
    }
  }
}

API 키, 토큰 또는 환경 변수가 필요하지 않습니다! 서버는 시작 시 브라우저 OAuth를 통해 자동으로 인증을 처리합니다.

Claude Desktop

자동 설정:

uvx singlestore-mcp-server init --client=claude-desktop

수동 설정: MCP 설치 가이드를 따라 위의 표준 구성을 사용하세요.

Claude Code

자동 설정:

uvx singlestore-mcp-server init --client=claude-code

이 명령은 Claude CLI 명령을 자동으로 실행합니다.

수동 설정:

claude mcp add singlestore-mcp-server uvx singlestore-mcp-server start
Cursor

자동 설정:

uvx singlestore-mcp-server init --client=cursor

수동 설정: Cursor Settings -> MCP -> Add new MCP Server로 이동합니다. 원하는 이름을 지정하고, command 유형을 사용하며 명령어는 uvx singlestore-mcp-server start입니다. Edit을 클릭하여 구성을 확인하거나 명령줄 인수를 추가할 수도 있습니다.

VS Code

자동 설정:

uvx singlestore-mcp-server init --client=vscode

수동 설정: MCP 설치 가이드를 따라 위의 표준 구성을 사용하세요. VS Code CLI를 사용하여 설치할 수도 있습니다:

code --add-mcp '{"name":"singlestore-mcp-server","command":"uvx","args":["singlestore-mcp-server","start"]}'

설치 후, VS Code에서 GitHub Copilot 에이전트와 함께 SingleStore MCP 서버를 사용할 수 있습니다.

Windsurf

자동 설정:

uvx singlestore-mcp-server init --client=windsurf

수동 설정: Windsurf MCP 문서를 따르세요. 위의 표준 구성을 사용하세요.

Gemini CLI

자동 설정:

uvx singlestore-mcp-server init --client=gemini

수동 설정: MCP 설치 가이드를 따라 위의 표준 구성을 사용하세요.

LM Studio

자동 설정:

uvx singlestore-mcp-server init --client=lm-studio

수동 설정: 오른쪽 사이드바의 Program -> Install -> Edit mcp.json로 이동합니다. 위의 표준 구성을 사용하세요.

Goose

수동 설정만 해당: Advanced settings -> Extensions -> Add custom extension로 이동합니다. 원하는 이름을 지정하고, 유형은 STDIO을 사용하며, commanduvx singlestore-mcp-server start으로 설정합니다. "확장 추가"를 클릭합니다.

Qodo Gen

수동 설정만 해당: VSCode 또는 IntelliJ에서 Qodo Gen 채팅 패널을 열고 → 더 많은 도구 연결 → + 새 MCP 추가 → 위의 표준 구성을 붙여넣습니다.

저장을 클릭합니다.

Docker 사용

참고: Docker 컨테이너에서 실행되는 서버에는 OAuth 흐름이 지원되지 않으므로 Docker 사용 시 API 키가 필요합니다.

{
  "mcpServers": {
    "singlestore-mcp-server": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "--init", "--pull=always",
        "-e", "MCP_API_KEY=your_api_key_here",
        "singlestore/mcp-server-singlestore"
      ]
    }
  }
}

Docker 이미지를 직접 빌드할 수 있습니다:

docker build -t singlestore/mcp-server-singlestore .

더 나은 보안을 위해 Docker Desktop을 사용하여 SingleStore MCP 서버를 구성하는 것이 좋습니다. 자세한 내용은 Docker의 새로운 MCP 카탈로그에 대한 이 블로그 게시물을 참조하세요.

구성 요소

도구

서버는 다음 도구를 구현합니다:

  • get_user_info: 현재 사용자에 대한 세부 정보를 검색합니다.

    • 인수 필요 없음
    • 사용자 정보 및 세부 정보를 반환합니다.
  • organization_info: 사용자의 현재 조직에 대한 세부 정보를 검색합니다.

    • 인수 필요 없음
    • 조직의 세부 정보를 반환합니다.
  • choose_organization: 사용 가능한 조직 중에서 선택합니다 (API 키 환경 변수가 설정되지 않은 경우에만 사용 가능).

    • 인수 필요 없음
    • 선택할 수 있는 사용 가능한 조직 목록을 반환합니다.
  • set_organization: 활성 조직을 설정합니다 (API 키 환경 변수가 설정되지 않은 경우에만 사용 가능).

    • 인수: organization_id (문자열)
    • 지정된 조직을 활성 상태로 설정합니다.
  • workspace_groups_info: 사용자가 액세스할 수 있는 작업 공간 그룹에 대한 세부 정보를 검색합니다.

    • 인수 필요 없음
    • 작업 공간 그룹의 세부 정보를 반환합니다.
  • workspaces_info: 특정 작업 공간 그룹의 작업 공간에 대한 세부 정보를 검색합니다.

    • 인수: workspace_group_id (문자열)
    • 작업 공간의 세부 정보를 반환합니다.
  • resume_workspace: 일시 중단된 작업 공간을 다시 시작합니다.

    • 인수: workspace_id (문자열)
    • 지정된 작업 공간을 다시 시작합니다.
  • list_starter_workspaces: 사용자가 액세스할 수 있는 모든 스타터 작업 공간을 나열합니다.

    • 인수 필요 없음
    • 사용 가능한 스타터 작업 공간의 세부 정보를 반환합니다.
  • create_starter_workspace: 새 스타터 작업 공간을 만듭니다.

    • 인수: 작업 공간 구성 매개변수
    • 생성된 스타터 작업 공간의 세부 정보를 반환합니다.
  • terminate_starter_workspace: 기존 스타터 작업 공간을 종료합니다.

    • 인수: workspace_id (문자열)
    • 지정된 스타터 작업 공간을 종료합니다.
  • list_regions: 작업 공간을 지원하는 모든 리전 목록을 검색합니다.

    • 인수 필요 없음
    • 사용 가능한 리전 목록을 반환합니다.
  • list_sharedtier_regions: 공유 계층 리전 목록을 검색합니다.

    • 인수 필요 없음
    • 공유 계층 리전 목록을 반환합니다.
  • run_sql: 연결된 작업 공간에서 SQL 작업을 실행합니다.

    • 인수: workspace_id, database, sql_query 및 연결 매개변수
    • SQL 쿼리 결과를 구조화된 형식으로 반환합니다.
  • create_notebook_file: SingleStore Spaces에 새 노트북 파일을 만듭니다.

    • 인수: notebook_name, content (선택 사항)
    • 생성된 노트북의 세부 정보를 반환합니다.
  • upload_notebook_file: SingleStore Spaces에 노트북 파일을 업로드합니다.

    • 인수: file_path, notebook_name
    • 업로드된 노트북의 세부 정보를 반환합니다.
  • create_job_from_notebook: 노트북에서 예약된 작업을 만듭니다.

    • 인수: notebook_path, schedule_mode 등을 포함한 작업 구성
    • 생성된 작업의 세부 정보를 반환합니다.
  • get_job: 기존 작업의 세부 정보를 검색합니다.

    • 인수: job_id (문자열)
    • 지정된 작업의 세부 정보를 반환합니다.
  • delete_job: 기존 작업을 삭제합니다.

    • 인수: job_id (문자열)
    • 지정된 작업을 삭제합니다.
  • stage_list_files: Stage 배포의 파일 시스템에 있는 파일 및 폴더를 나열합니다.

    • 인수: deployment_id (문자열), path (문자열, 선택 사항)
    • 파일 및 하위 폴더를 포함한 폴더 내용을 반환합니다.
  • stage_get_file: 경로로 Stage에서 파일을 가져옵니다.

    • 인수: deployment_id (문자열), path (문자열), return_type (문자열: 'metadata', 'url' 또는 'content')
    • 파일 메타데이터, 다운로드 URL 또는 텍스트 내용을 반환합니다.
  • stage_create_folder: Stage에 폴더를 만듭니다.

    • 인수: deployment_id (문자열), path (문자열)
    • 생성 상태를 반환합니다.
  • stage_upload_file: 텍스트 내용이 포함된 파일을 Stage에 업로드합니다.

    • 인수: deployment_id (문자열), path (문자열), content (문자열), local_path (문자열)
    • 업로드 상태를 반환합니다.
  • stage_move: Stage에서 파일 또는 폴더를 이동하거나 이름을 바꿉니다.

    • 인수: deployment_id (문자열), source_path (문자열), destination_path (문자열)
    • 이동 상태를 반환합니다.
  • stage_delete: Stage에서 파일 또는 폴더를 삭제합니다.

    • 인수: deployment_id (문자열), path (문자열)
    • 삭제 상태를 반환합니다.

참고: 조직 관리 도구(choose_organizationset_organization)는 API 키 환경 변수가 설정되지 않은 경우에만 사용할 수 있으며, OAuth 인증 중에 대화형 조직 선택이 가능합니다.

개발

사전 요구 사항

  • Python >= 3.11
  • 의존성 관리를 위한 uv

설정

  1. 저장소를 복제합니다:
git clone https://github.com/singlestore-labs/mcp-server-singlestore.git
cd mcp-server-singlestore
  1. 의존성을 설치합니다:
uv sync --dev
  1. 사전 커밋 훅을 설정합니다 (선택 사항이지만 권장):
uv run pre-commit install

개발 워크플로우

# Quick quality checks (fast feedback)
./scripts/check.sh

# Run tests independently
./scripts/test.sh

# Comprehensive validation (before PRs)
./scripts/check-all.sh

# Create and publish releases
./scripts/release.sh

테스트 실행

# Run test suite with coverage
./scripts/test.sh

# Or use pytest directly
uv run pytest
uv run pytest --cov=src --cov-report=html

코드 품질

린팅 및 포맷팅 모두에 Ruff를 사용합니다:

# Format code
uv run ruff format src/ tests/

# Lint code
uv run ruff check src/ tests/

# Lint and fix issues automatically
uv run ruff check --fix src/ tests/

릴리스 프로세스

릴리스는 git 태그와 자동화된 PyPI 게시를 통해 관리됩니다:

  1. 릴리스 생성: ./scripts/release.sh (대화형 도구)
  2. 자동 게시: 버전 태그 푸시에 의해 트리거됨
  3. 수동 PyPI 업로드 없음 - 완전 자동화된 파이프라인

자세한 워크플로우 문서는 scripts/dev-workflow.md를 참조하세요.