00:00:00Google Workspace가 AI 에이전트에게 훨씬 더 유용해졌습니다. 최근 구글이
00:00:04에이전트가 모든 Google Workspace API와 상호작용할 수 있게 해주는 강력한 CLI 도구를 출시했기 때문이죠.
00:00:09드라이브 파일 읽기, 이메일 전송, 슬라이드 제작까지 가능하며, 처음부터 AI 에이전트를 위해 설계되었습니다.
00:00:14즉, 토큰 사용량을 최소화하고 런타임에 명령을 동적으로 생성하므로 API가 항상 최신 상태로 유지됩니다.
00:00:19그런데 구글 같은 대기업이 기존의 MCP 서버(현재도 존재하지만) 역할을 하는 CLI를 직접 만들었다는 것은
00:00:24과연 MCP의 미래에 어떤 의미가 있을까요? 구독 버튼을 누르고 함께 알아봅시다.
00:00:33지난달에 Playwright가 기존의 MCP 서버용 CLI를 만든 것에 대한 영상을 올린 적이 있는데요.
00:00:42이제 Google Workspace도 같은 행보를 보이고 있고, 트위터 사람들은 이에 열광하고 있습니다.
00:00:46이 CLI 도구는 Justin이 만들었으며, 그는 에이전트 전용으로 만들기 위해 수행한 작업들을 블로그 포스트에 상세히 적었습니다.
00:00:52나중에 자세히 다루겠지만, skills.sh에서 다운로드할 수 있는 100개 이상의 스킬을 갖추고 있어
00:00:57g-man을 매우 기쁘게 만들었죠.
00:01:01기능을 살펴보기 전에 먼저 설정 과정을 거쳐야 합니다. Google Cloud 관련 도구를 써보신 분들은 아시겠지만
00:01:06그 과정이 그리 간단하지만은 않거든요. 직접 보여드리겠습니다.
00:01:10가장 먼저 Google Cloud 콘솔에 접속해야 합니다. 새 프로젝트를 만들거나 기존 프로젝트를 사용하세요.
00:01:15저는 새로 만들었습니다. 그다음 gcloud CLI를 설치해야 하는데, 맥 사용자라면 brew로 설치할 수 있습니다.
00:01:21Google Workspace CLI 설치가 완료되면 이 명령어를 실행하여 설정을 진행합니다.
00:01:26내용은 꽤 자명합니다. 인증을 위해 이메일을 사용하고, GCP 프로젝트를 선택하거나 설정한 뒤
00:01:31액세스하려는 API를 선택하면 됩니다. 이 단계가 끝나면 API 및 서비스의 사용자 인증 정보로 이동하여
00:01:37새 OAuth 클라이언트 ID를 생성해야 합니다. 애플리케이션 유형은 무엇이든 상관없을 것 같습니다.
00:01:42저는 웹을 선택했지만 데스크톱에서도 작동할 겁니다. 클라이언트 ID와 비밀번호만 있으면 되니까요.
00:01:48그다음 단계부터 조금 까다로워질 수 있는데요, 이 명령어를 실행한 후
00:01:53인증 범위를 선택해야 합니다. 데모를 위해 저는 모든 범위를 선택했는데, 권장되는 방식은 아니지만
00:01:57테스트용이니까요. 그러면 브라우저에서 인증할 수 있는 아주 긴 URL이 나타납니다.
00:02:02우선 오타가 없는지 잘 확인해야 에러를 피할 수 있습니다. 그리고 localhost 뒤에 붙는 포트 번호를 메모해 두세요.
00:02:08제 경우에는 51065였습니다.
00:02:12다시 클라우드 콘솔의 API 및 서비스, OAuth 동의 화면으로 돌아가서
00:02:18클라이언트를 클릭하고 생성한 웹 클라이언트를 선택합니다. 아래쪽의 승인된 리디렉션
00:02:23URI 섹션에서 해당 포트 번호가 포함된 주소로 변경합니다. 51065를 넣으면 되겠죠? 하지만 아직 끝이 아닙니다.
00:02:28대상(Audience)으로 가서 아래로 스크롤한 뒤, 본인의 이메일 주소가 없다면 추가해 주세요.
00:02:33앱을 이미 출시한 상태라면 이런 문제가 없겠지만,
00:02:37저는 단순히 API를 테스트하는 중이라 테스트 모드를 사용하고 있습니다.
00:02:40따라서 제 이메일과 이 CLI를 사용할 모든 사용자의 이메일을 여기에 추가해야 합니다.
00:02:44이제 URL을 복사하여 CLI 구성을 위한 단계들을 따라가면 됩니다.
00:02:48완료되면 성공(success) 상태를 확인하실 수 있습니다. 만약 이 화면이 보이지 않는다면
00:02:52몇 초 정도 기다렸다가 다시 시도해 보세요. 리디렉션 URI가 등록되는 데 시간이 좀 걸릴 수 있습니다.
00:02:56이 전체 과정, 즉 설정 작업만으로도 꽤 오랜 시간이 걸렸는데요.
00:03:01평소에 Google Cloud 도구를 자주 사용하지 않는다는 게 티가 나네요. 하지만 일단 완료되면
00:03:06자신의 상세 정보가 표시될 것이고, 이제부터 진짜 재미있는 작업이 시작됩니다. 보시죠.
00:03:11간단한 것부터 시작해 보겠습니다. Claude에게 제 최근 이메일 10통에 대한 정보를 달라고 요청했습니다.
00:03:15민감한 내용은 없기를 바라면서요. GWS CLI를 사용하여
00:03:19발신자, 제목, 날짜, 라벨 등 각 이메일에 대한 정보를 가져왔습니다.
00:03:24이 작업을 수행하는 데 전체 컨텍스트의 9%만 사용된 것을 알 수 있습니다. 왜냐하면
00:03:28별도의 MCP 도구 없이 메시지 자체에서 대부분의 컨텍스트를 소화했기 때문이죠. 좋습니다. 다른 시도를 해보죠.
00:03:33Claude에게 제목은 “Claude를 사랑해”, 본문은 멋진 시를 담은 이메일 초안을 작성해 달라고 했습니다.
00:03:38역시 GWS CLI를 사용하고 bash를 통해 Python 코드를 작성합니다. 이제 완료되었는데요.
00:03:44Claude가 작성한 새로운 초안 이메일이 생성된 것을 볼 수 있습니다. 조금 확대해 보겠습니다.
00:03:50Claude를 얼마나 사랑하는지에 대한 시가 포함된 이메일이군요. 여기서 흥미로운 점은
00:03:56Claude가 GWS CLI를 사용하는 방식입니다. 이전에 수행한 명령어를 살펴보면
00:04:00수많은 하위 명령어와 JSON이 포함된 params 플래그가 있는 것을 볼 수 있습니다.
00:04:05재미있는 사실은 만약 사람이 “gws help”를 입력해서
00:04:11직접 모든 하위 명령어를 확인하려고 하면 극히 일부만 보인다는 겁니다.
00:04:16특정 명령어의 세부 내용을 보려면 계속해서 help를 반복해서 사용해야 하죠.
00:04:23하지만 에이전트는 이 정보를 매우 빠르게 가져옵니다. 심지어 정확한 데이터를 얻기 위해
00:04:28어떤 파라미터를 써야 하는지도 바로 알죠. 보시다시피 제가 프롬프트를 입력했을 때
00:04:32에이전트는 help를 한 번만 사용하고도 이 모든 것을 파악해 냈습니다.
00:04:37어떻게 이런 게 가능한지 더 자세히 알아보겠지만,
00:04:43CLI help 섹션에서 사용법을 개략적으로 설명하고 서비스 리소스와 하위 리소스를 언급하고 있습니다.
00:04:48여기 아래에 서비스가 보이죠? 더 많은 정보가 필요하다면
00:04:53서비스 리소스와 메서드가 포함된 “gws schema”를 살펴볼 수도 있습니다. 자, 하나 더 해봅시다.
00:04:57Claude에게 제목은 “Claude cat”인 슬라이드 한 장과 고양이 이미지가 담긴 4장의 슬라이드로 구성된
00:05:03새 문서를 만들어 달라고 요청했습니다. 역시 gws CLI를 사용해 도움말을 요청하고
00:05:08슬라이드 및 프레젠테이션 명령어의 도움말을 상세히 파헤칩니다. 이제 프레젠테이션 제작이 끝났네요.
00:05:15브라우저에서 확인해 보겠습니다. 여기 있네요. 제가 이전에 테스트 삼아 만든
00:05:20“Claude dog”도 보이지만 이번 걸 확인해 보죠. 제목 “Claude cats”와 부제목,
00:05:24그리고 고양이 이미지가 포함된 5장의 슬라이드가 멋지게 만들어졌습니다. 정말 멋지네요.
00:05:30컨텍스트는 겨우 15%만 사용했습니다. 따라서 계속해서 다양한 작업을 수행할 수 있죠.
00:05:36예를 들어, 저는 미국의 각 주별 인구수와 하단 합계가 포함된 Google Sheets 문서를 만들기도 했고
00:05:42캘린더에 일정을 예약하기도 했습니다. 눈치채셨을지 모르겠지만 이 모든 과정에서
00:05:47Google Workspace 관련 스킬을 따로 설치하지 않았습니다. 하지만 이 프로젝트에는
00:05:52복잡한 작업을 위한 헬퍼, 페르소나, 레시피 등이 포함된 수많은 스킬이 준비되어 있습니다.
00:05:58집중 시간 확보나 회의 일정 재조정 같은 작업들이죠. 그럼 Justin은 어떻게 이걸 이렇게 잘 작동하게 만들었을까요?
00:06:05첫째로 그는 중첩된 JSON 구조를 우선시했습니다. 사람이 읽기는 어렵지만 에이전트에게는 훨씬 편하죠.
00:06:10또한 아까 살펴본 것처럼 문서를 런타임에 쿼리할 수 있게 만들었습니다. 이 스키마
00:06:16섹션 덕분에 무언가 업데이트되거나 에이전트가 잘못된 파라미터를 입력하더라도
00:06:21혼란 없이 어디를 확인해서 수정해야 할지 정확히 알 수 있습니다.
00:06:26파라미터나 필드를 사용해 API로부터 반환되는 정보량을 줄일 수도 있습니다.
00:06:31에이전트가 불필요한 정보 대신 꼭 필요한 것만 요청할 수 있게 함으로써
00:06:36사용되는 토큰의 양을 절약하는 것이죠. 물론 에이전트 전용 가이드를 제공하는 스킬도 활용했습니다.
00:06:42데모에서는 사용하지 않았지만, 이 스킬들은 에이전트가 help 플래그를 통해 얻는 것보다
00:06:47더 많은 정보를 제공합니다. 그럼 이제 MCP 서버의 시대는 가고 스킬과 CLI의 시대가 온 걸까요?
00:06:53꼭 그렇지만은 않습니다. MCP를 사용하면 에이전트가 쉘 명령어를 생성하고
00:06:59JSON을 전달하는 CLI 방식 대신 함수를 직접 호출할 수 있기 때문입니다. 또한 MCP 도구는
00:07:06복잡한 단계를 체이닝하는 데 더 유리합니다. 당연히 실행을 위한 터미널도 필요 없죠.
00:07:11그래서 Google Workspace CLI에도 MCP 옵션이 포함되어 있는 것입니다. 하지만 CLI는
00:07:16도구 검색 기능을 켠 상태에서도 토큰을 훨씬 적게 사용합니다. 또한 이식성이 좋아
00:07:24어떤 에이전트 하네스에서든(혹은 하네스 없이도) 작동할 수 있습니다.
00:07:28독립적으로 명령어를 재현할 수 있어 디버깅도 용이하죠. 결국 사용 사례에 따라 다르겠지만
00:07:34저도 CLI를 쓰면서 생성된 URL에 오타가 있는 등
00:07:40몇 가지 문제를 겪었습니다. 어떻게 그런 일이 생겼는지는 모르겠지만요. 리디렉션 URL이나 포트 설정 문제도
00:07:47해결하는 데 꽤 걸렸습니다. Google Cloud 도구의 문제인지 CLI의 문제인지는 확실치 않지만 유쾌한 경험은 아니었죠.
00:07:52토큰이 제대로 업데이트되지 않는 문제도 있어서 GitHub 이슈를 생성하기까지 했습니다.
00:07:59사실 그것도 Claude가 대신 써준 거라 제가 직접 쓴 건 아니지만요. 어쨌든 출시된 지
00:08:05일주일도 안 되어 GitHub 스타 1만 개를 돌파한 이 프로젝트의 앞날은 매우 유망해 보입니다.
00:08:10유망한 미래 하니 생각나는데, Bun을 기반으로 한 Electron 앱을 만들고 싶으신 분들,
00:08:16빠른 속도와 작은 번들 크기를 원하신다면 제가 만든 Electrobahn 영상을 확인해 보세요.
00:08:21간단한 Vite 프로젝트에서 사용하는 방법을 보여드립니다.