BigQuery MCP
npm install @channel.io/bigquery-mcp이 패키지는 Google BigQuery API를 사용하여 특정 쿼리를 실행하고, 그 결과를 반환하거나 CSV 파일로 저장하는 Model Context Protocol(MCP) 도구입니다.
- BigQuery 연동: Google BigQuery 서비스와 안전하게 연동합니다.
- 쿼리 실행 및 결과 반환:
- run_bigquery_query: 지정된 SQL 쿼리를 BigQuery에서 실행하고 결과를 직접 반환합니다.
- 쿼리 결과 다운로드:
- download_bigquery_query: 지정된 SQL 쿼리를 실행하고, 그 결과를 CSV 파일로 지정된 또는 기본 경로에 저장합니다. 저장된 파일 경로를 반환합니다.
- download_bigquery_query_transpose: download_bigquery_query와 유사하나, 결과를 CSV로 저장하기 전에 행과 열을 전치(transpose)합니다.
- MCP 서버 기본 설정: MCP 표준을 준수하는 서버 구조를 가집니다.
- TypeScript 설정: 타입 안정성을 위한 TypeScript 기반입니다.
- 서비스 및 도구 분리: 로직을 서비스와 도구 레이어로 분리하여 관리 용이성을 높였습니다.
- 중앙화된 설정 관리: src/config/index.ts를 통해 환경 변수 기반의 설정을 관리합니다.
이 MCP 도구를 사용하기 위해서는 Google Cloud Platform (GCP) 인증 설정 및 프로젝트 ID 지정이 필요합니다.
1. 필수 환경 변수:
- BIGQUERY_PROJECT_ID: 쿼리를 실행할 Google Cloud 프로젝트의 ID입니다.
``bash`
export BIGQUERY_PROJECT_ID="your-gcp-project-id"
2. Google Cloud 인증 방법 (다음 중 하나를 선택):
- 방법 1: 서비스 계정 키 파일 사용 (권장)
- GCP 서비스 계정을 생성하고, 해당 서비스 계정에 BigQuery 관련 권한(예: BigQuery 데이터 뷰어, BigQuery 사용자 등)을 부여합니다.
- 서비스 계정 키(JSON 파일)를 다운로드합니다.
- 다운로드한 서비스 계정 키 파일의 경로를 GOOGLE_APPLICATION_CREDENTIALS 환경 변수에 설정합니다.`
bash`
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
BIGQUERY_CREDENTIALS_JSON
- 방법 2: 서비스 계정 JSON 문자열 직접 사용
- 서비스 계정 키의 JSON 내용을 문자열 형태로 환경 변수에 설정합니다. JSON 문자열 내의 특수 문자(예: 줄바꿈, 따옴표)는 올바르게 이스케이프되거나, 전체 문자열을 Base64로 인코딩하여 저장 후 애플리케이션에서 디코딩하는 방식을 고려할 수 있습니다. (현재 구현은 Raw JSON 문자열을 가정합니다.)`
bash`
# 예시: 실제 키 값은 매우 길고 복잡합니다.
export BIGQUERY_CREDENTIALS_JSON='{"type": "service_account", "project_id": "...", ...}'
GOOGLE_APPLICATION_CREDENTIALS
- 참고: 이 방법은 보다 우선적으로 사용됩니다. 둘 다 설정된 경우 경고가 표시됩니다.gcloud auth application-default login
- 방법 3: Application Default Credentials (ADC)
- 위 두 환경 변수가 설정되지 않은 경우, Google Cloud SDK는 ADC를 사용하여 인증을 시도합니다. (예: 으로 로컬 개발 환경 설정, 또는 Cloud Run, GKE 등에서 자동으로 주입되는 서비스 계정 사용)
3. 다운로드 디렉토리 (선택 사항):
- download_bigquery_query 및 download_bigquery_query_transpose 도구를 사용하여 파일을 저장할 때, 기본 저장 경로는 사용자 홈 디렉토리의 Downloads 폴더입니다.BIGQUERY_DOWNLOAD_DIR
- 다른 디렉토리를 사용하고 싶다면 환경 변수를 설정하여 원하는 경로를 지정할 수 있습니다.`
bash`
export BIGQUERY_DOWNLOAD_DIR="/custom/download/path"
``
apps/bigquery-mcp/
├── src/
│ ├── config/
│ │ └── index.ts # 환경 변수 로드 및 설정 객체 관리
│ ├── services/
│ │ └── BigQueryService.ts # BigQuery 클라이언트 초기화 및 핵심 쿼리 실행 로직
│ ├── tools/
│ │ ├── runBigQueryQuery.ts # 'run_bigquery_query' 도구 정의
│ │ ├── downloadBigQueryQuery.ts # 'download_bigquery_query' 도구 정의
│ │ └── downloadBigQueryQueryTranspose.ts # 'download_bigquery_query_transpose' 도구 정의
│ └── index.ts # 메인 진입점 (MCP 서버 초기화 및 도구 등록)
├── package.json
├── README.md
└── tsconfig.json
이 패키지를 새로운 MCP 도구의 시작점으로 사용하려면:
1. 디렉토리 이름을 변경하고 모든 파일의 bigquery-mcp 참조를 새 이름으로 변경 (현재 프로젝트는 이미 bigquery-mcp로 설정됨)package.json
2. 의 패키지 이름 업데이트package.json
3. 에서 "private": true,` 부분 제거 (필요시)
4. 필요한 의존성 추가
5. 서비스 및 도구 디렉토리와 구현 파일 추가
Channel 내부용