-
Google Workspace API 전체를 단일 CLI로 제어할 수 있는 도구로, Drive·Gmail·Calendar·Sheets·Docs·Chat·Admin 등을 지원
-
Google Discovery Service를 기반으로 런타임 시 명령 구성을 동적으로 생성해, 새로운 API가 추가되면 자동 반영
-
AI 에이전트용 스킬 100개 이상을 포함하며, 구조화된 JSON 출력을 통해 LLM과의 통합을 지원
-
OAuth·Service Account·CI 환경 등 다양한 인증 방식을 제공하고, Model Armor를 통한 응답 보안 기능을 지원
- 사람과 AI 모두를 위한 자동화 중심의 CLI로, Google Workspace 생태계의 통합 관리 및 자동화 효율성을 높이는 도구
개요
-
gws는 Google Workspace 전용 통합 CLI로, Drive·Gmail·Calendar·Sheets·Docs·Chat·Admin 등 모든 API를 하나의 명령줄에서 실행 가능
-
Google Discovery Service를 통해 명령 구성을 자동 생성하며, 새로운 API 엔드포인트가 추가되면 즉시 반영
- 모든 출력은 구조화된 JSON 형식으로 제공되어, AI 에이전트나 자동화 스크립트와의 연동이 용이함
- 프로젝트는 활발히 개발 중이며, v1.0 이전에는 주요 변경이 발생할 수 있음
주요 기능
-
탭 완성, --help, --dry-run, 자동 페이지네이션 등 인간 친화적 CLI 기능 제공
-
AI 에이전트 통합을 위해 100개 이상의 SKILL.md 기반 스킬 포함
- Gmail, Drive, Docs, Calendar, Sheets 등 주요 서비스용 50개 이상의 고급 레시피 포함
-
Gemini CLI 확장을 설치하면 Gemini 에이전트가 gws 명령과 스킬을 직접 호출 가능
-
MCP(Model Context Protocol) 서버 모드를 통해 Claude Desktop, Gemini CLI, VS Code 등에서 Workspace API를 도구로 노출 가능
인증 방식
-
로컬 인터랙티브 인증: AES-256-GCM으로 암호화된 자격 증명을 OS 키링에 저장
-
수동 OAuth 설정: Google Cloud Console에서 직접 클라이언트 생성 가능
-
브라우저·에이전트 보조 인증: 수동 또는 자동으로 OAuth 승인 처리
-
CI/서버 환경용 인증: gws auth export로 자격 증명 내보내기 및 환경 변수로 지정
-
Service Account 및 사전 발급 토큰 지원, 우선순위는 토큰 > 자격 파일 > 키링 저장 순
AI Agent Skills
- 저장소에 포함된 100개 이상의 스킬은 각 API 및 일반 워크플로우를 자동화
-
npx skills add 명령으로 전체 또는 개별 스킬 설치 가능
- OpenClaw 환경에서는 심볼릭 링크 또는 복사 방식으로 스킬 동기화 가능
-
gws-shared 스킬은 CLI 미설치 시 자동 설치 기능 포함
Gemini CLI 확장
MCP 서버 기능
-
gws mcp 명령으로 MCP 서버를 실행해 Workspace API를 MCP 호환 클라이언트에 노출
- 예: gws mcp -s drive,gmail,calendar
- 각 서비스는 10~80개의 도구를 추가하며, 클라이언트의 도구 제한(50~100개)에 맞게 선택 가능
-
--workflows, --helpers 플래그로 워크플로우 및 헬퍼 도구 노출 가능
고급 기능
-
Multipart 업로드: 파일 업로드와 메타데이터 생성 동시 수행
-
페이지네이션 제어: --page-all, --page-limit, --page-delay 옵션 제공
-
Model Armor 통합: API 응답을 스캔해 프롬프트 인젝션을 차단
-
GOOGLE_WORKSPACE_CLI_SANITIZE_TEMPLATE, GOOGLE_WORKSPACE_CLI_SANITIZE_MODE 환경 변수로 제어
아키텍처
-
2단계 파싱 구조로 동작
- 첫 번째 인자로 서비스 식별
- Discovery 문서 가져오기(24시간 캐시)
-
clap::Command 트리 생성
- 인자 재파싱 및 인증 수행
- HTTP 요청 실행
- 모든 결과(성공·오류·메타데이터)는 JSON 구조로 출력
문제 해결
- API 미활성화 시 accessNotConfigured 오류 발생
-
enable_url 필드의 링크를 클릭해 API 활성화 후 재시도
-
gws auth setup 명령으로 필요한 API를 자동 활성화 가능
개발 및 배포
-
Rust 기반(99.5%) 으로 작성
-
cargo build, cargo test, cargo clippy 등 표준 Rust 워크플로우 지원
- Apache-2.0 라이선스
- 공식 Google 제품은 아니며, 비공식 오픈소스 프로젝트로 명시됨