SingleStore MCP Server
공식SingleStore 데이터베이스 플랫폼과 상호작용합니다.
문서
SingleStore MCP 서버
모델 컨텍스트 프로토콜 (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을 사용하며, command를 uvx 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_organization 및 set_organization)는 API 키 환경 변수가 설정되지 않은 경우에만 사용할 수 있으며, OAuth 인증 중에 대화형 조직 선택이 가능합니다.
개발
사전 요구 사항
- Python >= 3.11
- 의존성 관리를 위한 uv
설정
- 저장소를 복제합니다:
git clone https://github.com/singlestore-labs/mcp-server-singlestore.git
cd mcp-server-singlestore
- 의존성을 설치합니다:
uv sync --dev
- 사전 커밋 훅을 설정합니다 (선택 사항이지만 권장):
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 게시를 통해 관리됩니다:
- 릴리스 생성:
./scripts/release.sh(대화형 도구) - 자동 게시: 버전 태그 푸시에 의해 트리거됨
- 수동 PyPI 업로드 없음 - 완전 자동화된 파이프라인
자세한 워크플로우 문서는 scripts/dev-workflow.md를 참조하세요.