Snowflake MCP 서버
개요
Snowflake와 데이터베이스 간 상호작용을 제공하는 모델 컨텍스트 프로토콜(MCP) 서버 구현입니다. 이 서버는 도구를 통해 SQL 쿼리를 실행하고 데이터 인사이트와 스키마 컨텍스트를 리소스로 제공합니다.
구성 요소
자원
memo://insights
발견된 데이터 통찰력을 집계하여 지속적으로 업데이트되는 메모입니다.
append_insight
도구를 통해 새로운 통찰력이 추가되면 자동으로 업데이트됩니다.context://table/{table_name}
(사전 페치가 활성화된 경우) 열과 주석을 포함한 테이블별 스키마 요약이 개별 리소스로 표시됩니다.
도구
서버는 다음 도구를 제공합니다.
쿼리 도구
read_query
SELECT
쿼리를 실행하여 데이터베이스에서 데이터를 읽습니다.
입력:query
(문자열): 실행할 SELECT
SQL 쿼리
반환: 객체 배열로 쿼리 결과
write_query
( --allow-write
로만 활성화됨)
INSERT
, UPDATE
또는 DELETE
쿼리를 실행합니다.
입력:query
(문자열): SQL 수정 쿼리
반환: 영향을 받은 행 수 또는 확인
create_table
( --allow-write
로만 활성화됨)
데이터베이스에 새로운 테이블을 만듭니다.
입력:query
(문자열): CREATE TABLE
SQL 문
반환: 테이블 생성 확인
스키마 도구
list_databases
Snowflake 인스턴스의 모든 데이터베이스를 나열합니다.
반환: 데이터베이스 이름 배열list_schemas
특정 데이터베이스 내의 모든 스키마를 나열합니다.
입력:database
(문자열): 데이터베이스 이름
반환: 스키마 이름 배열
list_tables
특정 데이터베이스와 스키마 내의 모든 테이블을 나열합니다.
입력:database
(문자열): 데이터베이스 이름schema
(문자열): 스키마의 이름
반환: 테이블 메타데이터 배열
describe_table
특정 테이블의 열 정보를 봅니다.
입력:table_name
(문자열): 정규화된 테이블 이름( database.schema.table
)
반환: 이름, 유형, Null 허용 여부, 기본값 및 주석이 포함된 열 정의 배열
분석 도구
append_insight
메모 리소스에 새로운 데이터 통찰력을 추가합니다.
입력:insight
(문자열): 분석을 통해 발견된 데이터 통찰력
반환: 통찰력 추가 확인
효과: memo://insights
리소스 업데이트를 트리거합니다.
Claude Desktop과 함께 사용
Smithery를 통해 설치
Smithery를 통해 Claude Desktop에 Snowflake Server를 자동으로 설치하는 방법:
지엑스피1
UVX를 통해 설치
"mcpServers": {
"snowflake_pip": {
"command": "uvx",
"args": [
"--python=3.12", // Optional: specify Python version <=3.12
"mcp_snowflake_server",
"--account", "your_account",
"--warehouse", "your_warehouse",
"--user", "your_user",
"--password", "your_password",
"--role", "your_role",
"--database", "your_database",
"--schema", "your_schema"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
}
}
로컬 설치
- Claude AI 데스크톱 앱 설치
uv
설치 :
curl -LsSf https://astral.sh/uv/install.sh | sh
- Snowflake 자격 증명으로
.env
파일을 만듭니다.
SNOWFLAKE_USER="xxx@your_email.com"
SNOWFLAKE_ACCOUNT="xxx"
SNOWFLAKE_ROLE="xxx"
SNOWFLAKE_DATABASE="xxx"
SNOWFLAKE_SCHEMA="xxx"
SNOWFLAKE_WAREHOUSE="xxx"
SNOWFLAKE_PASSWORD="xxx"
# Alternatively, use external browser authentication:
# SNOWFLAKE_AUTHENTICATOR="externalbrowser"
- [선택 사항]
runtime_config.json
수정하여 데이터베이스, 스키마 또는 테이블에 대한 제외 패턴을 설정합니다. - 로컬로 테스트:
uv --directory /absolute/path/to/mcp_snowflake_server run mcp_snowflake_server
claude_desktop_config.json
에 서버를 추가합니다.
"mcpServers": {
"snowflake_local": {
"command": "/absolute/path/to/uv",
"args": [
"--python=3.12", // Optional
"--directory", "/absolute/path/to/mcp_snowflake_server",
"run", "mcp_snowflake_server"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
}
}
노트
- 기본적으로 쓰기 작업은 비활성화되어 있습니다 .
--allow-write
사용하여 명시적으로 활성화하세요. - 서버는 제외 패턴을 통해 특정 데이터베이스, 스키마 또는 테이블을 필터링하는 기능을 지원합니다.
- 사전 페칭이 활성화된 경우 서버는 추가적인 테이블별 컨텍스트 리소스를 노출합니다.
append_insight
도구는 memo://insights
리소스를 동적으로 업데이트합니다.
특허
MIT