링크된 문서
Google Sheets
Google Sheets
Google Sheets MCP 서버는 Google Sheets 스프레드시트 데이터에 접근하고 편집할 수 있는 Model Context Protocol 서버입니다. 이 서버를 통해 AI 어시스턴트는 스프레드시트를 읽고 분석하며, 데이터를 업데이트하고, 차트와 피벗 테이블을 관리할 수 있습니다.
특징
- 스프레드시트 데이터 읽기 및 쓰기
- 시트, 행, 열 관리
- 데이터 범위 및 셀 서식 지정
- 수식 작성 및 계산
- 차트 및 그래프 생성 및 수정
- 피벗 테이블 생성 및 관리
- 데이터 필터링 및 정렬
- 조건부 서식 설정
- 스프레드시트 공유 및 권한 관리
- 데이터 검증 규칙 설정
- 매크로 및 스크립트 실행
- 셀 주석 및 코멘트 관리
- 시트 간 데이터 복사 및 이동
- 대량 데이터 작업 최적화
API
리소스
sheets://spreadsheets/{spreadsheet_id}
- 특정 스프레드시트의 정보와 시트 목록을 제공합니다.
sheets://spreadsheets/{spreadsheet_id}/sheets/{sheet_id}
- 특정 시트의 상세 정보와 데이터를 제공합니다.
도구
스프레드시트 관리
list_spreadsheets
사용자의 스프레드시트 목록을 조회합니다. - 입력: - max_results: (선택적) 최대 결과 수 - order_by: (선택적) 정렬 기준 (last_modified_time, name) - query: (선택적) 검색 쿼리 - page_token: (선택적) 페이지 토큰 - 출력: 스프레드시트 ID, 이름, 수정 시간 등을 포함한 스프레드시트 목록
get_spreadsheet
특정 스프레드시트의 정보를 조회합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - include_grid_data: (선택적) 그리드 데이터 포함 여부 - 출력: 스프레드시트 제목, 시트 목록, 속성 등의 상세 정보
create_spreadsheet
새 스프레드시트를 생성합니다. - 입력: - title: 스프레드시트 제목 - sheets: (선택적) 초기 시트 정보 배열 - properties: (선택적) 스프레드시트 속성 - 출력: 생성된 스프레드시트 정보
update_spreadsheet_properties
스프레드시트 속성을 업데이트합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - title: (선택적) 새 제목 - locale: (선택적) 새 로케일 - time_zone: (선택적) 새 시간대 - auto_recalc: (선택적) 자동 재계산 설정 - 출력: 업데이트된 스프레드시트 정보
시트 관리
list_sheets
스프레드시트 내의 시트 목록을 조회합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - 출력: 시트 ID, 제목, 인덱스, 상태 등을 포함한 시트 목록
add_sheet
스프레드시트에 새 시트를 추가합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - title: 시트 제목 - index: (선택적) 시트 인덱스 - rows: (선택적) 행 수 - columns: (선택적) 열 수 - hidden: (선택적) 숨김 여부 - tab_color: (선택적) 탭 색상 - 출력: 추가된 시트 정보
update_sheet_properties
시트 속성을 업데이트합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - sheet_id: 시트 ID - title: (선택적) 새 제목 - index: (선택적) 새 인덱스 - hidden: (선택적) 새 숨김 설정 - right_to_left: (선택적) 오른쪽에서 왼쪽 방향 표시 여부 - tab_color: (선택적) 새 탭 색상 - 출력: 업데이트된 시트 정보
delete_sheet
시트를 삭제합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - sheet_id: 삭제할 시트 ID - 출력: 삭제 결과
데이터 관리
get_values
특정 범위의 값을 조회합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - range: 데이터 범위 (예: Sheet1!A1:B10) - major_dimension: (선택적) 기본 차원 (ROWS, COLUMNS) - value_render_option: (선택적) 값 렌더링 옵션 - date_time_render_option: (선택적) 날짜/시간 렌더링 옵션 - 출력: 데이터 값 배열
batch_get_values
여러 범위의 값을 일괄적으로 조회합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - ranges: 데이터 범위 배열 - major_dimension: (선택적) 기본 차원 - value_render_option: (선택적) 값 렌더링 옵션 - date_time_render_option: (선택적) 날짜/시간 렌더링 옵션 - 출력: 각 범위의 데이터 값
update_values
특정 범위의 값을 업데이트합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - range: 데이터 범위 - values: 새 값 배열 - major_dimension: (선택적) 기본 차원 - value_input_option: (선택적) 값 입력 옵션 (RAW, USER_ENTERED) - 출력: 업데이트된 셀 수 및 정보
batch_update_values
여러 범위의 값을 일괄적으로 업데이트합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - data: 업데이트할 데이터 배열 (각 항목은 range와 values를 포함) - value_input_option: (선택적) 값 입력 옵션 - 출력: 업데이트된 셀 수 및 정보
append_values
특정 범위에 값을 추가합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - range: 데이터 범위 - values: 추가할 값 배열 - value_input_option: (선택적) 값 입력 옵션 - insert_data_option: (선택적) 데이터 삽입 옵션 (OVERWRITE, INSERT_ROWS) - 출력: 추가된 셀 수 및 정보
clear_values
특정 범위의 값을 지웁니다. - 입력: - spreadsheet_id: 스프레드시트 ID - range: 지울 데이터 범위 - 출력: 지워진 범위 정보
서식 및 조건부 서식
get_cell_format
특정 범위의 셀 서식을 조회합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - ranges: 서식을 조회할 범위 배열 - 출력: 셀 서식 정보
update_cell_format
셀 서식을 업데이트합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - range: 업데이트할 범위 - format: 서식 정보 (폰트, 배경색, 테두리 등) - 출력: 업데이트된 셀 정보
add_conditional_format_rule
조건부 서식 규칙을 추가합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - sheet_id: 시트 ID - range: 적용할 범위 - condition: 조건 (타입, 값 등) - format: 적용할 서식 - index: (선택적) 규칙 인덱스 - 출력: 추가된 규칙 정보
update_conditional_format_rule
조건부 서식 규칙을 업데이트합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - sheet_id: 시트 ID - rule_id: 규칙 ID - condition: (선택적) 새 조건 - format: (선택적) 새 서식 - index: (선택적) 새 규칙 인덱스 - 출력: 업데이트된 규칙 정보
차트 및 데이터 시각화
create_chart
차트를 생성합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - sheet_id: 시트 ID - chart_type: 차트 유형 (BAR, LINE, PIE 등) - source_range: 데이터 소스 범위 - title: (선택적) 차트 제목 - position: 차트 위치 - options: (선택적) 차트 옵션 - 출력: 생성된 차트 정보
update_chart
차트를 업데이트합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - sheet_id: 시트 ID - chart_id: 차트 ID - chart_type: (선택적) 새 차트 유형 - source_range: (선택적) 새 데이터 소스 범위 - title: (선택적) 새 차트 제목 - position: (선택적) 새 차트 위치 - options: (선택적) 새 차트 옵션 - 출력: 업데이트된 차트 정보
피벗 테이블
create_pivot_table
피벗 테이블을 생성합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - sheet_id: 시트 ID - source_range: 데이터 소스 범위 - rows: 행 필드 배열 - columns: 열 필드 배열 - values: 값 필드 배열 - filters: (선택적) 필터 배열 - start_row_index: 시작 행 인덱스 - start_column_index: 시작 열 인덱스 - 출력: 생성된 피벗 테이블 정보
update_pivot_table
피벗 테이블을 업데이트합니다. - 입력: - spreadsheet_id: 스프레드시트 ID - sheet_id: 시트 ID - pivot_table_id: 피벗 테이블 ID - rows: (선택적) 새 행 필드 배열 - columns: (선택적) 새 열 필드 배열 - values: (선택적) 새 값 필드 배열 - filters: (선택적) 새 필터 배열 - 출력: 업데이트된 피벗 테이블 정보
사용 방법
설치 및 구성
- 사전 요구 사항:
- Google 계정
- Google Sheets API 접근 권한
-
OAuth 2.0 인증 설정
-
MCP 서버 설치:
pip install googlesheets-mcp-server -
Claude Desktop 구성:
{ "mcpServers": { "googlesheets": { "command": "python", "args": ["-m", "googlesheets_mcp"], "env": { "GOOGLE_SHEETS_CLIENT_ID": "your-client-id", "GOOGLE_SHEETS_CLIENT_SECRET": "your-client-secret", "GOOGLE_SHEETS_REDIRECT_URI": "your-redirect-uri", "GOOGLE_SHEETS_DEFAULT_SPREADSHEET": "your-default-spreadsheet-id" } } } } -
OAuth 인증 설정:
- Google Cloud Console에서 프로젝트 생성
- Google Sheets API 활성화
- OAuth 2.0 클라이언트 ID 생성
- 적절한 스코프 설정 (https://www.googleapis.com/auth/spreadsheets)
-
리디렉션 URI 구성
-
구성 옵션:
GOOGLE_SHEETS_CLIENT_ID: OAuth 클라이언트 IDGOOGLE_SHEETS_CLIENT_SECRET: OAuth 클라이언트 시크릿GOOGLE_SHEETS_REDIRECT_URI: OAuth 리디렉션 URIGOOGLE_SHEETS_DEFAULT_SPREADSHEET: 기본 스프레드시트 IDGOOGLE_SHEETS_TOKEN_PATH: 토큰 저장 경로GOOGLE_SHEETS_CACHE_TTL: 캐시 수명(초) (기본값: 300)GOOGLE_SHEETS_LOG_LEVEL: 로그 수준 (기본값: INFO)
기본 사용 예시
-
스프레드시트 목록 보기:
list_spreadsheets({ max_results: 10, order_by: "last_modified_time" }) -
시트 데이터 읽기:
get_values({ spreadsheet_id: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms", range: "Sheet1!A1:E10" }) -
데이터 업데이트:
update_values({ spreadsheet_id: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms", range: "Sheet1!A1:B2", values: [ ["이름", "점수"], ["김철수", 85] ], value_input_option: "USER_ENTERED" }) -
데이터 추가:
append_values({ spreadsheet_id: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms", range: "Sheet1!A:B", values: [ ["이영희", 92], ["박지민", 78] ], value_input_option: "USER_ENTERED" }) -
차트 생성:
create_chart({ spreadsheet_id: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms", sheet_id: 0, chart_type: "BAR", source_range: { sheet_id: 0, start_row_index: 0, end_row_index: 5, start_column_index: 0, end_column_index: 2 }, title: "학생 점수", position: { row_index: 10, column_index: 3 } }) -
피벗 테이블 생성:
create_pivot_table({ spreadsheet_id: "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms", sheet_id: 0, source_range: { sheet_id: 0, start_row_index: 0, end_row_index: 20, start_column_index: 0, end_column_index: 5 }, rows: [ { source_column_index: 0, show_totals: true } ], columns: [ { source_column_index: 2, show_totals: true } ], values: [ { source_column_index: 3, summarize_function: "SUM" } ], start_row_index: 25, start_column_index: 0 })
보안 고려사항
- Google API 자격 증명은 민감한 정보이므로 안전하게 관리해야 합니다.
- OAuth 토큰은 안전하게 저장하고 관리해야 합니다.
- 필요한 최소한의 권한만 요청하세요.
- 민감한 데이터가 포함된 스프레드시트에 대한 접근은 특별히 주의하세요.
- 스프레드시트 공유 설정을 정기적으로 검토하세요.
- API 호출 제한을 고려하여 불필요한 요청을 최소화하세요.
연결된 구성 요소
- Google Calendar - 일정 확인, 시간 찾기, 이벤트 추가/삭제를 위한 Google Calendar 통합
- Google Tasks - Google Tasks API Model Context Protocol 서버
- Gmail - Claude Desktop에서 자동 인증 지원이 포함된 Gmail 통합을 위한 MCP 서버
- Airtable - Airtable 데이터베이스에 대한 읽기 및 쓰기 접근, 스키마 검사 포함