로컬에 gcloud 없이 Cloud CLI remote MCP server를 확인하는 최소 실험 | DAKER 커뮤니티

로컬 노트북에 gcloud를 설치하지 않고도 에이전트가 구글 클라우드 명령을 실행할 수 있다면, 확인해야 할 것은 생각보다 단순합니다. 정말 로컬 바이너리 없이 동작하는지, 어떤 끝점에 붙는지, 그리고 어디까지가 안전한 최소 실험인지입니다.

이번 글은 기능 소개를 넓게 훑기보다, Google Cloud가 운영하는 원격 MCP 서버에 연결해 도구 목록과 읽기 전용 명령 하나를 확인하는 데만 범위를 둡니다. 데모 영상의 연출이나 속도를 일반화하지 않고, 문서가 실제로 말하는 조건만 추려 봅니다.

로컬에 gcloud가 없습니다. 원격 샌드박스에서 명령을 실행합니다.

참고 영상은 Google Cloud Tech 채널의 Automate Google Cloud with Cloud CLI Remote MCP Server입니다. 채널 주소는 @googlecloudtech입니다. yt-dlp 기준 게시일은 2026년 8월 28일입니다. 길이는 132초입니다. 기능 이름은 Cloud CLI remote MCP server이고, API 이름은 Cloud CLI Execution입니다. 공식 안내는 Use the Cloud CLI remote MCP server, 도구 설명과 금지 명령은 MCP Reference: cloudcli.googleapis.com, 개요는 Google Cloud MCP servers overview를 따릅니다.

쓰기 명령은 확인 뒤에 실행합니다. 읽기만 하는 명령부터 확인하십시오.

로컬 CLI가 아니라 원격 샌드박스에서 실행됩니다

Cloud CLI remote MCP server는 에이전트가 자연어로 받은 요청을 구글 클라우드가 운영하는 원격 환경에서 gcloud와 bq 명령으로 실행하는 방식입니다. 문서는 로컬 컴퓨터의 표준 입력·출력으로 붙는 로컬 MCP 서버와, 서비스 인프라의 HTTP 끝점으로 붙는 원격 MCP 서버를 구분합니다. 여기서 다루는 대상은 후자입니다.

끝점은 https://cloudcli.googleapis.com/mcp이고, 전송은 HTTP이며, 기능을 켜는 API 이름은 Cloud CLI Execution입니다.

문서에 따르면 Cloud CLI Execution API를 활성화하면 이 원격 MCP 서버가 켜집니다. 구글과 구글 클라우드가 문서에서 설명하는 장점은 발견 관리, 전역 또는 리전 HTTP 끝점 운영, 세분화된 권한, Model Armor 검사, 중앙 감사 로그입니다. 개요 문서는 MCP 버전 2025-11-25를 지원한다고 적고 있습니다.

클라이언트 예로는 Gemini CLI, ChatGPT, Claude, Antigravity, 그리고 직접 만드는 애플리케이션이 나옵니다. 설정 화면 이름은 제각각이지만 공통값은 짧습니다. 서버 이름은 Cloud CLI remote MCP server, URL은 https://cloudcli.googleapis.com/mcp, 전송은 HTTP입니다. 인증은 구글 클라우드 자격 증명, OAuth 클라이언트 ID와 비밀, 또는 에이전트 신원과 자격 증명을 사용합니다. API 키는 받지 않습니다.

이 서버가 제공하는 도구는 두 개입니다

원격 서버가 내놓는 도구 이름은 run_gcloud_command와 run_bq_command 두 개입니다. run_gcloud_command는 사용자 프로젝트에서 gcloud 명령 하나를 실행하고, run_bq_command는 BigQuery CLI인 bq 명령 하나를 실행합니다.

두 도구 모두 읽기 전용이 아니며, 자원을 만들고 바꾸고 지울 수 있습니다.

참조 문서는 이 점을 강하게 경고합니다. 예시로는 gcloud compute instances delete와 bq rm 같은 삭제 명령이 나옵니다. 그래서 이번 글의 범위는 쓰기 작업이 아니라, 읽기 명령 하나를 안전하게 확인하는 최소 실험입니다.

또 하나 구분할 점이 있습니다. run_bq_command와 BigQuery MCP 서버는 같은 말이 아닙니다. 문서 표에서는 둘을 나눕니다. BigQuery MCP 서버는 Generally Available이며 표준 SQL 실행, 스키마 탐색, 데이터 변경에 맞고, 대상은 분석가와 SQL 개발자입니다. 반면 run_bq_command는 Preview이며 슬롯 예약, 예약 질의, 스냅샷, 오래 도는 작업 취소 같은 관리 작업에 맞고, 대상은 관리자와 데이터 플랫폼, DevOps입니다.

도구 목록은 인증 없이 확인할 수 있습니다

문서에 따르면 tools/list는 인증을 요구하지 않습니다. 방법은 cloudcli.googleapis.com에 POST /mcp를 보내고, JSON-RPC 본문에 jsonrpc는 2.0, method는 tools/list를 넣는 것입니다. 참조 문서의 curl 예시는 accept 헤더에 application/json, text/event-stream을 사용합니다.

최소 실험에서는 응답에 run_gcloud_command와 run_bq_command가 보이는지만 확인하면 됩니다. 목록 길이나 응답 시간 같은 수치를 일반화할 필요는 없습니다.

프로젝트 매개변수와 CLI 플래그는 같은 값이 아닙니다

도구 호출에는 project 매개변수가 필수입니다. 형식은 projects/PROJECT_ID입니다. 이 값은 Cloud CLI Execution API의 활성화 확인, 결제, 할당량을 위한 프로젝트입니다. 따라서 gcloud 명령의 --project 플래그와 같은 의미로 보면 안 됩니다. bq의 --project_id와 --quota_project_id와도 별개입니다.

도구 호출의 project와 명령 문자열 안의 --project는 서로 다른 역할을 합니다.

문서는 에이전트의 시스템 프롬프트나 스킬에 요청 프로젝트를 고르는 규칙을 넣으라고 설명합니다. 팀에서 쓰는 프로젝트 ID를 README에 남겨 두는 편이 재현에 도움이 됩니다.

긴 옵션은 등호로 붙여야 합니다. 예를 들어 --zone=us-central1-a, --project=my-project, --project_id=my-project는 맞고, 공백으로 나눈 형태는 문서 기준으로 올바른 예가 아닙니다. 로컬 .bigqueryrc 기본값은 원격 실행에 실리지 않으므로, 리전 작업에는 --location을 명령 문자열에 직접 적어야 합니다.

로그를 읽을 때는 --limit가 필수입니다. 참조 문서는 gcloud logging read에 항상 한도를 넣으라고 적습니다. 예시는 --limit=10과 --limit=100입니다. 오래 걸리는 동기 작업에는 gcloud는 --async, bq는 --nosync를 쓰라고 안내합니다.

명령에 파일이 필요하면 input_files를 사용합니다. 각 항목은 상대 경로와 평문 내용으로 구성됩니다. 문서 예시는 gcloud builds submit --config=cloudbuild.yaml --async --project=PROJECT_ID입니다. 파이프와 명령 연결은 지원하지 않습니다.

권한은 OAuth 2.0과 IAM으로 제어됩니다

인증은 OAuth 2.0과 IAM을 사용합니다. API 키는 쓰지 않습니다. 필요한 역할은 MCP Tool User이며 역할 ID는 roles/mcp.toolUser입니다. 필요한 권한은 mcp.tools.call입니다. OAuth 범위는 https://www.googleapis.com/auth/cloud-platform입니다.

원격에서 실행된 명령은 로그인한 호출자의 권한으로 동작하며, 대상 자원에는 기존 IAM과 조직 정책이 그대로 적용됩니다.

즉, MCP 호출 권한과 자원 권한은 다릅니다. 도구를 호출할 수 있어도 인스턴스를 지울 권한이 없으면 삭제는 실패합니다. 문서는 에이전트용 신원을 따로 만들 것을 권합니다. 접근 범위를 제한하고 기록을 남기기 쉬워지기 때문입니다.

지원하지 않는 명령도 분명히 있습니다

안내 문서는 보안과 부적합을 이유로 일부 gcloud 명령을 막고 있으며, 목록은 완전하지 않고 예고 없이 바뀔 수 있다고 적습니다. 예시로는 gcloud auth, gcloud config, gcloud iam service-accounts, gcloud init, gcloud survey가 나옵니다.

참조 문서의 금지 목록에는 알파와 베타 변형을 포함해 app deploy, app instances ssh, auth, billing, components, config, docker, feedback, info, init, meta, survey 등이 포함됩니다. bq에서 막힌 명령은 bq init, bq pyshell, bq shell입니다.

또한 결제 프로젝트를 자동으로 가정하지 않습니다. 폴더나 조직 범위 명령, 요청자 부담 버킷처럼 특수한 경우에는 --billing-project=PROJECT가 필요합니다. 프로젝트 범위 명령에는 --project=PROJECT_ID를 넣는 것이 맞습니다. 문서 기준으로 --project와 --billing-project 중 적어도 하나는 명령 문자열에 있어야 하고, bq는 --project_id 또는 --quota_project_id 중 적어도 하나가 필요합니다. LEGACY, CURRENT_PROJECT, CURRENT_PROJECT_WITH_FALLBACK 같은 특수 값은 쓰지 않습니다.

영상 데모는 가능성을 보여 주지만, 오늘 범위는 더 작습니다

영상은 플러그인 설정에서 원격 서버를 켜고, 로컬 바이너리를 설치하지 않는다고 설명합니다. 이어서 에이전트가 Cloud Logging 필터를 직접 쓰지 않고도 run_gcloud_command로 원격 끝점을 조회하고, run_bq_command로 BigQuery를 확인하는 흐름을 보여 줍니다. 마지막에는 gcloud storage cp 같은 쓰기 작업도 등장하지만, 그 전에 데이터 변경 여부에 대한 확인을 받는 장면이 나옵니다.

다만 영상 속 행 수와 소요 시간은 그 데모의 숫자일 뿐입니다. 이번 글에서 재현하려는 것은 장애 복구 연출이 아니라, 끝점 연결, 도구 두 개 확인, 읽기 명령 하나 실행 여부입니다.

보안 기능은 선택 사항이지만 로그 영향은 먼저 봐야 합니다

Google Cloud 문서는 Model Armor를 통해 프롬프트와 응답을 검사할 수 있다고 설명합니다. 다만 로그까지 켜면 페이로드 전체가 로그에 남을 수 있어 민감한 값이 노출될 수 있다고 적고 있습니다. 또한 Model Armor를 쓰는 리전과 쓰지 않는 리전이 있으며, 지원하지 않는 관할에서 호출하면 데이터 상주 규칙에 영향을 줄 수 있다고 안내합니다.

따라서 최소 실험 단계에서는 Model Armor를 반드시 켜는 것보다, 켰을 때 무엇이 로그에 남는지 팀 규칙을 먼저 정하는 편이 좋습니다.

이번 글이 다루지 않는 것

이 글은 웹페이지가 document.modelContext.registerTool로 도구를 등록하는 WebMCP 이야기가 아닙니다. 로컬 stdio MCP 서버를 노트북에 띄우는 방법도 아닙니다. 오늘의 대상은 구글 클라우드가 운영하는 HTTP 끝점과 원격 샌드박스입니다.

또한 새 모델, 벤치마크 점수, 설치 수, 평균 절감 시간 같은 수치를 만드는 글도 아닙니다. Preview인 run_bq_command를 Generally Available인 BigQuery MCP 서버와 같은 말로 쓰지 않는 것도 중요합니다.

오늘 확인할 최소 범위

오늘 범위는 클러스터를 새로 만들거나 자원을 변경하는 일이 아닙니다. Cloud CLI Execution API를 켜고, 쓰는 에이전트에 원격 MCP 서버를 연결한 뒤, 도구 두 개가 보이는지와 읽기 명령 하나가 호출자 권한으로 실행되는지를 확인하는 일입니다.

한 줄로 줄이면, 에이전트에게 로컬 터미널을 주는 대신 구글 클라우드가 운영하는 원격 샌드박스에 명령을 보내고 호출자 IAM으로 결과를 받는 방식입니다.

참고 자료

Automate Google Cloud with Cloud CLI Remote MCP Server
Google Cloud Tech
Use the Cloud CLI remote MCP server
MCP Reference: cloudcli.googleapis.com
Google Cloud MCP servers overview

여기까지의 최소 실험 범위라면, 여러분은 어떤 읽기 명령부터 확인해 보고 싶은가요?