关于 LocalCloud MCP
LocalCloud 为开发者和 AI 编码 Agent 提供本地环境,用于构建、测试和调试 Google Cloud 应用。其 CLI 管理基于 Docker 的运行时及兼容 Google Cloud 的服务,并通过环境变量让现有 Google 客户端库连接本地端点。
主要功能
- 01在本地运行兼容 Google Cloud 的服务
- 02通过 CLI 管理运行时和项目上下文
- 03通过环境变量配置 SDK 端点
- 04在 Docker 卷中持久保存数据
- 05检查就绪状态和诊断信息
- 06通过 MCP 连接编码 Agent
适用场景
- 01在本地构建和测试 Google Cloud 应用
- 02为编码 Agent 提供可创建和检查的本地云状态
- 03无需支付真实云服务费用即可进行实验
- 04在运行时重启后保留测试数据
MCP 相关
LocalCloud 为编码 Agent 提供 MCP 桥接,可通过 stdio 上的 `lc mcp` 或 HTTP 上的 `:5380/mcp` 使用。Agent 可创建、填充、检查和重置本地项目状态。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
LocalCloud CLI
面向开发者和 AI 编码 Agent 的免费本地云环境。
通过终端或编码 Agent 构建、测试和调试 Google Cloud 应用。 MCP 可将 Agent 连接到本地服务、SDK 配置、测试数据、就绪状态和诊断信息。
无需支付 Google Cloud 服务费用,即可运行本地服务工作流;一条命令即可启动, 还可根据机器容量,为实验和测试套件创建本地项目。
localcloud(别名为 lc)是 LocalCloud 的官方主机 CLI。它负责管理
容器运行时生命周期、多项目上下文、SDK 环境变量、持久化 Docker 卷以及模型上下文协议桥接,
让你的应用代码继续调用现有的 Google Cloud 客户端库,只是将其指向本地回环地址。
$ lc doctor
╭── LocalCloud v0.1.12 ───────────────────────────────────────────────────────────────────────╮
│ │ Top commands │
│ Checking LocalCloud setup │ localcloud (or lc) status | start | stop | restart │
│ │ eval $(lc env) Exports env vars that redirect cloud se…│
│ ╭────╮ │────────────────────────────────────────────────────────────────│
│ ╭──╯ ╰──╮ │ Context │
│ ╭─╯ ╰─╮ │ Data Volume: localcloud-data Project: local-gcp-project│
│ ╭╯ ╰╮ │ User: local-developer │
│ ╰──────────────╯ │ Config: built-in defaults (overridable by ./localcloud.yaml) │
│ │ │
├────────────────────────────┴────────────────────────────────────────────────────────────────┤
│ Supported Services (● 22 enabled · ○ 5 disabled) │
│ ● Storage ● Pub/Sub ○ Firestore ● Bigtable ● Spanner ● BigQuery │
│ ● Cloud SQL ● AlloyDB ● Memorystore ● Dataproc ● Tasks ● Scheduler │
│ ● Functions ○ Cloud Run ○ Compute ○ GKE ● Workflows ○ Vertex AI │
│ ● Sheets ● KMS ● Secrets ● IAM ● Logging ● Monitoring │
│ ● Resource Mgr ● Service Usage ● Billing │
╰─────────────────────────────────────────────────────────────────────────────────────────────╯
Tip: Run localcloud guide for AI agent workflows, or lc for the fast alias.
Docker 29.8.1 (/opt/homebrew/bin/docker) · Colima 0.10.1 (VZ, Rosetta on)
Image agentcloud/localcloud:latest (ID: 6c619bcf17c5)
Ports 5380-5406 (in use by localcloud)
[OK] LocalCloud is ready to start 0.5s
为什么选择 LocalCloud
- 27 项服务,一个容器。 Storage、Pub/Sub、BigQuery、Spanner、Bigtable、Firestore、IAM、KMS、 Dataproc、Cloud Run 等服务会一起启动,无需手动配置十几个模拟器。
- 无需更改 SDK 代码。
eval "$(lc env)"会导出官方 Google 客户端库本就会查找的模拟器变量。 调用方式和对象保持不变,端点指向本地回环地址。 - 隔离且持久的环境。 命名 Docker 卷即是运行时的标识。你可以在日常环境旁运行一个供 CI 使用的临时 环境,并在重启后保留数据。
- 为人类和自动化而打造。 每条命令都会在终端中呈现易读摘要,并可通过
--verbose输出完整 JSON 结果。--dry-run可预览更改;--debug会打印等效的docker run命令。 - 原生支持 Agent。 一流的 MCP 桥接让 AI 编码 Agent 能在自身工作循环中配置、填充、检查和重置 符合 GCP 形态的真实状态,而不必依赖需要人工点击操作的 UI。
- 不会触及线上云环境。 CLI 会验证所有生成的端点均为本地回环地址,并拒绝输出真实的
googleapis.com地址。绝不会静默回退到生产环境。
对比
| LocalCloud | gcloud beta emulators | Testcontainers | 真实 GCP 开发项目 | |
|---|---|---|---|---|
| 服务 | 27 | ~5(Bigtable、Datastore/Firestore、Pub/Sub、Spanner) | 封装相同的模拟器 | 全部 |
| 设置 | 一条 CLI 命令 | 每项服务一个进程 | 在测试代码中编写 | 项目、账单、IAM |
| SDK 接入 | eval "$(lc env)" | 每个模拟器单独手动配置 | 在代码中为每个容器单独配置 | ADC + 真实凭据 |
| Web 控制台 | 内置 | — | — | 有 |
| Terraform / OpenTofu | lc env --format terraform | — | — | 有 |
| Agent 控制(MCP) | 内置 | — | — | — |
| 数据持久化 | Docker 卷,重启后仍保留 | 进程生命周期 | 测试生命周期 | 持久化 |
| 费用 / 凭据 | 无 | 无 | 无 | 计费,使用真实密钥 |
覆盖广度指服务的可用性——可调用的服务级集成。操作级兼容情况因服务而异,并记录在 LocalCloud 兼容性矩阵中。
安装
前置条件
Docker Desktop、Colima、OrbStack、Rancher Desktop 或 Docker Engine,且已安装并运行。LocalCloud 需要容器至少有 4 GiB 可用内存,才能稳定运行。
还没有 Docker?在安装了 Homebrew 的 macOS 上,运行 lc doctor --fix(或在终端中运行 lc start)即可选择安装免费的轻量级 Docker 引擎 Colima,并以 4 个 CPU 和 8 GiB 内存启动。
在 Apple Silicon 上,请使用 VZ 和 Rosetta 运行 Docker 虚拟机,而不要使用 QEMU:前者速度更快,而且 QEMU 存在已知的 LocalCloud 兼容问题(BigQuery 模拟器在其上可能无法运行)。lc doctor 会报告 Docker 应用、虚拟机类型和 Rosetta 状态;lc doctor --fix 可协助切换 Colima 或 Rancher Desktop。
LocalCloud 的镜像也提供 eStargz 构建版本,可通过 lc start --estargz 运行。将 Stargz Snapshotter 用作 Docker 的存储驱动程序后,Docker 会按需拉取镜像:下载量更小,启动更快。没有 Snapshotter 时,LocalCloud 的运行方式不变,但 Docker 会下载整个镜像。lc doctor 会报告 Lazy pulling 状态,并提供启用步骤。
macOS 和 Linux
curl -fsSL https://local.cloud/install.sh | sh
安装程序会添加 localcloud,并在可用时添加更短的别名 lc。
Homebrew
brew install LocalGCloud/tap/localcloud
brew upgrade localcloud # upgrade
brew uninstall localcloud # remove
升级
将 CLI 更新到最新版本:
lc update
lc update 会检测 LocalCloud 的安装方式(脚本安装程序或 Homebrew),并原地升级 CLI。使用 Homebrew 时,也可以运行 brew upgrade localcloud。
独立二进制文件
我们会发布带有 Sigstore 验证包的签名发行版压缩包,支持以下平台:
| 平台 | 架构 | 最低要求 |
|---|---|---|
| macOS | Apple Silicon | macOS 13+ |
| Linux | x86_64、aarch64 | glibc 2.35+(Ubuntu 22.04+) |
不支持 Intel Mac:0.1.11 是最后一个提供 Intel macOS 压缩包的版本。
Windows 用户可以直接运行容器——请参阅 Docker 设置说明。
验证
$ lc --version
localcloud 0.1.12 (commit 6e45b85cad86, released 2026-10-13)
发行版构建会嵌入确切的源代码提交和发布日期,因此始终可以追溯二进制文件的来源。
快速入门
只需五分钟,即可从零开始创建一个可用的 Cloud Storage 存储桶。
1. 检查你的机器
lc doctor
此命令会确认 Docker 连接状态、报告 Docker 应用及其虚拟机配置,并显示解析后的 LocalCloud 上下文。最后一行以 [OK] 开头即可继续。它不会创建任何 LocalCloud 状态,因此可以放心地先运行。
如果列出了 Setup 问题,lc doctor --fix 会在每次更改前征求确认,并提供修复选项。
2. 启动运行时
lc start
Config built-in defaults (overridable by ./localcloud.yaml)
Data volume localcloud-data
Origin managed
Project local-gcp-project
User local-developer
Image agentcloud/localcloud:latest
Image status Available locally
URL http://127.0.0.1:5380
Ports 5380-5406
Services alloydb, bigquery, bigtable, cloudbilling, cloudfunctions, cloudiam,
cloudresourcemanager, cloudscheduler, cloudsql, cloudtasks, dataproc, gcs,
kms, logging, memorystore, monitoring, pubsub, secretmanager, serviceusage,
sheets, spanner, workflows
[OK] LocalCloud is ready 8.4s
默认情况下,start 会检查镜像仓库中是否有更新的镜像(使用 --no-pull 可跳过),在所有主机网络接口上发布标准端口,等待服务就绪,并持续输出日志 5 秒。
使用 lc start --local-only 可将已发布的端口绑定到 127.0.0.1。
后续执行 start、restart 和 reset 命令时,传入 --local-only 可保持该绑定。
在运行中的运行时上再次执行 start 是安全的。
3. 配置 shell
eval "$(lc env)"
这会导出官方 Google 客户端库已会读取的变量:
export STORAGE_EMULATOR_HOST="http://127.0.0.1:5382"
export BIGQUERY_EMULATOR_HOST="http://127.0.0.1:5388"
export SPANNER_EMULATOR_HOST="127.0.0.1:5386"
export BIGTABLE_EMULATOR_HOST="127.0.0.1:5385"
export GOOGLE_CLOUD_PROJECT="local-gcp-project"
export CLOUDSDK_CORE_PROJECT="local-gcp-project"
export CLOUDSDK_API_ENDPOINT_OVERRIDES_STORAGE="http://127.0.0.1:5382/"
# …one entry per enabled service, plus gcloud endpoint overrides and a local access token
4. 在代码中调用
无需使用 LocalCloud 专用客户端,也无需传入端点参数。环境会处理一切。
|
Python
|
Node.js / TypeScript
|
|
Go
|
gcloud CLI
|
5. 探索一番,然后停止
lc console # open the web console for the selected project
lc status # runtime health, endpoints, and ownership
lc logs # recent runtime logs
lc restart # recreate runtime with current local image (--pull to check registry)
lc stop # stop the container; the data volume is untouched
执行 stop 和 restart 后,数据仍会保留。lc start 会原样恢复运行时。
给 AI 编码 Agent 的提示: 跳过手动 shell 配置!前往 AI Agent 与 MCP,只需一条命令(
lc mcp install)即可配置 Cursor、Claude Code 或 Windsurf。
工作原理
your code ──► google-cloud-* SDK ──► 127.0.0.1:5380-5406 ─────────┐
terraform ──► GOOGLE_*_CUSTOM_ENDPOINT ───────────────────────────┤
AI agent ──► lc mcp (stdio) / :5380/mcp (HTTP) ──────────────────┤
│
┌─────────────────────────────────────────────┘
┌───────────▼─────────────────────────────────────────────┐
│ Docker container · agentcloud/localcloud │
│ │
│ :5380 gateway · console · admin API · MCP · facades │
│ :5382 Cloud Storage :5386-87 Spanner │
│ :5383 Pub/Sub :5388-89 BigQuery │
│ :5384 Firestore :5390 Memorystore │
│ :5385 Bigtable :5391 PostgreSQL │
└───────────────────┬─────────────────────────────────────┘
│
Docker volume: localcloud-data
mounted at : /var/lib/localcloud
CLI 不会充当代理,而是负责配置和管理。lc start 返回后,SDK 会直接与容器通信。
三种刻意区分的身份
这是最值得理解的一个概念,因为每个标志都由此而来:
| 维度 | 标志 | 选择内容 | 范围 |
|---|---|---|---|
| 数据卷 | --data-volume | 持久化运行时身份——挂载到 /var/lib/localcloud 的具名 Docker 卷。两个卷代表两个独立的 LocalCloud。 | Docker |
| 项目 | --project-id | 单个运行时中的一个逻辑 Google Cloud 项目。多个项目可共用一个卷。若项目不存在,start 和 MCP 启动过程会创建该项目。 | 请求 |
| 用户 | --user | 发送到 LocalCloud 服务的调用方身份;当需要主体时,会规范化为 <name>@localcloud.invalid。 | 请求 |
项目和用户属于请求上下文:切换它们即时生效,且不会触及 Docker。默认值分别为 localcloud-data、local-gcp-project 和 local-developer。MCP 桥接程序则会为每个 Git 仓库分配一个独立项目,并以仓库名称命名;除非通过 --project-id 或仓库的 localcloud.yaml 指定项目名称。
端口
新运行时优先使用标准端口范围 5380–5405(以及 DNS 5410/udp)。启用 Cloud SQL MySQL 后,端口集合还会包含 5406,该端口由 LocalCloud 的 MySQL 配套容器发布。如果无法使用完整端口集合,CLI 会依次提议从 5508–5539、5821–5840、5322–5342 中选择一个连续的替代范围,并在创建容器前征求确认。此类运行时只会发布其已启用服务使用的端口,因此可与使用标准端口的运行时并行运行四个。若要自行指定主机端口,可设置 host.port_range: 6000-6099,或传入 --port-range 6000-6099。CLI 不会扫描操作系统通用的临时端口范围;lc env 始终会输出实际使用的端口。
服务
27 项兼容 Google Cloud 的服务,其中 22 项默认启用:
| 分组 | 服务 |
|---|---|
| 存储与数据库 | Cloud Storage、Firestore、Bigtable、Spanner、BigQuery、AlloyDB、Cloud SQL、Memorystore |
| 消息传递与编排 | Pub/Sub、Cloud Tasks、Cloud Scheduler、Cloud Workflows |
| 计算与无服务器 | Cloud Functions、Cloud Run、Compute Engine、GKE、Dataproc |
| 安全与身份 | Cloud IAM、Secret Manager、Cloud KMS |
| 管理与账单 | Resource Manager、Service Usage、Cloud Billing |
| 可观测性 | Cloud Logging、Cloud Monitoring |
| AI 与效率工具 | Vertex AI、Google Sheets |
完整目录 — 服务 ID 与默认状态
使用 ID 配合 --services 或 localcloud.yaml 中的 services.enabled。
| ID | Google Cloud 服务 | 默认状态 |
|---|---|---|
gcs | Cloud Storage | ● 开启 |
pubsub | Pub/Sub | ● 开启 |
firestore | Firestore | ○ 关闭 |
bigtable | Bigtable | ● 开启 |
spanner | Spanner | ● 开启 |
bigquery | BigQuery | ● 开启 |
sheets | Google Sheets | ● 开启 |
secretmanager | Secret Manager | ● 开启 |
cloudtasks | Cloud Tasks | ● 开启 |
cloudscheduler | Cloud Scheduler | ● 开启 |
cloudfunctions | Cloud Functions(第 2 代) | ● 开启 |
alloydb | AlloyDB | ● 开启 |
dataproc | Dataproc | ● 开启 |
cloudiam | Cloud IAM | ● 开启 |
cloudresourcemanager | Cloud Resource Manager | ● 开启 |
serviceusage | Service Usage | ● 开启 |
cloudbilling | Cloud Billing | ● 开启 |
logging | Cloud Logging | ● 开启 |
monitoring | Cloud Monitoring | ● 开启 |
gke | GKE | ○ 关闭 |
compute | Compute Engine | ○ 关闭 |
cloudrun | Cloud Run | ○ 关闭 |
memorystore | Memorystore(Redis/Valkey) | ● 开启 |
workflows | Cloud Workflows | ● 开启 |
vertexai | Vertex AI | ○ 关闭 |
kms | Cloud KMS | ● 开启 |
cloudsql | Cloud SQL | ● 开启 |
未设置 services.enabled 时,● 开启 的服务会自动启动;○ 关闭 的服务可用,但必须显式选择。
启动时选择一组明确的服务,或重置为内置默认值:
lc start --services gcs,pubsub,bigquery,firestore
lc start --services default
命令
在所有示例中,lc 和 localcloud 可以互换使用。
| 命令 | 用途 |
|---|---|
lc update | 通过脚本安装程序或 Homebrew 更新 CLI |
lc doctor | 检查 Docker 访问权限、VM 引擎和主机设置;--fix 可交互式解决问题 |
lc start | 启动运行时;支持 --services、--local-only 和自动创建项目 |
lc status | 显示运行时健康状况、所有权、端点和 Docker 详情 |
lc env | 生成 SDK、Terraform 或 Docker Compose 配置;--identity 会启动本地身份会话 |
lc console | 打开所选项目和用户对应的 Web 控制台 |
lc logs | 输出最近的运行时日志 |
lc restart | 使用本地镜像重新创建容器(默认:--no-pull;使用 --pull 检查注册表) |
lc reset | 重置所选项目(--all-projects 会输出手动重新创建步骤) |
lc stop | 停止运行时,但不删除持久化数据 |
lc cleanup | 移除格式错误的 Docker 资源、过期的运行时状态和旧文件 |
lc guide | 输出权威的编码 Agent 指南 |
lc mcp | 运行 stdio MCP 桥接程序;lc mcp install 用于配置 AI 编码 Agent |
运行 lc COMMAND --help 可查看特定命令的标志和有效的 --fields 路径。
输出模式
每条命令都会通过同一份结果同时向用户和脚本提供信息:
| 标志 | 效果 |
|---|---|
| (none) | 简洁的终端摘要;在交互式 shell 中显示旋转指示器和耗时 |
--verbose | 在 stdout 上输出完整的结构化 JSON 结果 |
--fields PATH[,PATH…] | 将指定的 JSON 路径附加到简洁摘要中 |
--dry-run | 验证并打印所有计划执行的 Docker 和 LocalCloud 变更,但不做任何更改 |
--debug | 在 stderr 上输出诊断信息,包括可复制的等效 docker run 命令 |
lc status --verbose | jq '.container.url'
lc start --fields mcp.direct_url,container.name
lc start --dry-run # preview before mutating anything
NO_COLOR=1 lc doctor # symbols still carry status without color
服务选择除了颜色之外还使用 ●(开启)和 ○(关闭)标记,因此在 NO_COLOR 或简易终端下仍清晰可辨。
退出代码
| 代码 | 含义 |
|---|---|
0 | 成功 |
1 | 已完成但存在失败(例如 cleanup 部分失败),或发生意外的内部错误 |
2 | LocalCloud 错误——输入无效、Docker 问题或操作失败。显示格式为 Error [code] message |
130 | 命令被 Ctrl-C 中断 |
用法示例
为每个测试套件创建隔离环境。 第二个卷就是一个完全独立的 LocalCloud。
lc start --data-volume ci-e2e --project-id pr-1421
lc status --data-volume ci-e2e
lc stop --data-volume ci-e2e
在同一个运行时上运行多个项目。 切换项目只需更改请求上下文,无需重启。
lc start --project-id payments-dev
eval "$(lc env --project-id payments-dev)"
lc start --project-id analytics-dev
eval "$(lc env --project-id analytics-dev)"
Terraform 和 OpenTofu。 --format terraform 会输出 Google 提供程序读取的 GOOGLE_*_CUSTOM_ENDPOINT 变量——请将其求值到 shell 中,不要将其重定向到 .tf 文件。
$ eval "$(lc env --format terraform)"
$ env | grep GOOGLE_ | head -4
GOOGLE_STORAGE_CUSTOM_ENDPOINT=http://127.0.0.1:5382/storage/v1/
GOOGLE_BIGQUERY_CUSTOM_ENDPOINT=http://127.0.0.1:5388/
GOOGLE_PROJECT=local-gcp-project
GOOGLE_OAUTH_ACCESS_TOKEN=localcloud-user.bG9jYWwtZGV2ZWxvcGVy…
$ terraform apply
Docker Compose 服务。 输出可直接用于 Compose 的相同端点环境条目。
lc env --format docker-compose
供脚本使用的 JSON 负载。
lc env --format json | jq '.STORAGE_EMULATOR_HOST'
供主机进程使用的本地签名身份。 应用默认凭据会通过 127.0.0.1 上持续 12 小时的元数据中继,为服务账号获取由 LocalCloud 签名的 ID 和访问令牌。如果 GOOGLE_APPLICATION_CREDENTIALS 或 gcloud 的应用默认凭据会优先生效,命令会发出警告,但不会做任何更改;此外,如果已配置 HTTP(S)_PROXY,命令会确保中继不经过该代理。请参阅 env --identity。
eval "$(lc env --identity --account [email protected])"
python my_app.py # google.auth.default() now returns the runner account
eval "$(lc env --identity --stop)"
在 CI 中使用。 跳过注册表检查以确保可复现,禁用日志跟踪,并在发生错误时明确失败。
lc start --data-volume ci-$GITHUB_RUN_ID --no-pull --tail 0 --verbose
# …run tests…
lc stop --data-volume ci-$GITHUB_RUN_ID
变更前先预览。 生命周期 dry run 严格只读,且绝不会拉取镜像。
lc start --dry-run # every planned Docker and LocalCloud mutation, in order
lc restart --dry-run
使用本地镜像重启,而非拉取镜像。 默认情况下,lc restart 会使用当前可用的本地 Docker 镜像重新创建容器,而不会检查远程注册表。使用 --pull 可检查并拉取更新的远程镜像。
lc restart # fast restart with current local image (e.g. after building locally)
lc restart --pull # check registry, pull newest image if available, then recreate
重置一个项目,同时保留其他项目。
lc reset # clears the selected project; reseed from the Console
lc reset --all-projects # prints manual recreate steps; deletes nothing
lc reset --all-projects 不会执行任何变更。重新创建所有项目意味着删除数据卷,而 LocalCloud 绝不会替你运行 docker volume rm——它会打印操作步骤并以非零状态退出,以免意外销毁数据。
AI Agent 与 MCP
LocalCloud 原生集成了 Model Context Protocol(MCP),为 AI 编码 Agent 提供本地云环境,让它们可以使用标准 SDK 构建、测试和调试 Google Cloud 应用,并且本地工作流不会产生 Google Cloud 服务费用。
请参阅面向 Claude、Codex、Cursor 和其他客户端的本地设置指南,了解安装、GitHub 插件、连接检查以及首次测试提示词。本地设置不依赖 Directory 官方批准。
为什么 Agent 使用 LocalCloud MCP 的效果最好
- 按需自动启动:Agent 发起调用或初始化时,MCP 桥接程序会检查并在后台自动启动 LocalCloud(通过文件锁防止竞态条件)。如果希望手动控制运行时,请传入
--no-start。 - 共享默认环境:使用默认
localcloud-data卷的会话会复用其运行时。需要单独的 Docker 环境时,请有意选择其他数据卷。 - 安全的本地测试:Agent 会生成模拟器环境变量(
eval "$(lc env)")、查询本地数据库(BigQuery、Spanner、Cloud SQL)、发布和拉取 Pub/Sub 消息,并直接通过 loopback 测试 Cloud Storage 存储桶。 - 项目上下文:使用
--project-id区分不同的应用和测试。项目共享所选运行时,不构成安全边界。
一条命令完成设置:lc mcp install
只需一条命令,即可为 AI 编码客户端配置 LocalCloud:
# Install for Cursor (user-level in ~/.cursor/mcp.json)
lc mcp install --client cursor
# Install for Claude Code (user scope via claude CLI)
lc mcp install --client claude-code
# Install for Claude Desktop (claude_desktop_config.json)
lc mcp install --client claude-desktop
# Register directly in Codex (CLI and local desktop sessions)
codex mcp add localcloud -- "$(command -v localcloud)" mcp
# Install for Gemini CLI (~/.gemini/settings.json)
lc mcp install --client gemini
# Install for Antigravity (~/.gemini/config/mcp_config.json)
lc mcp install --client antigravity
# Install for Windsurf (~/.codeium/windsurf/mcp_config.json)
lc mcp install --client windsurf
# Configure every supported client installed on this machine
lc mcp install --client all
Claude Code 请明确使用 claude-code;claude 是 Claude Desktop 的别名。--client all 只会配置检测到的客户端,如果一个也没检测到则会失败。Codex 使用其专属的注册命令。--client cline 会写入 Cline 的共享设置文件;如需手动编辑,请参阅 Cline。每个客户端请选择直接连接或 GitHub 插件,以避免工具重复。
- 默认全局安装:安装到用户级配置(
--global)。对于支持仓库范围配置的客户端(Cursor、Claude Code、Gemini CLI 或 Antigravity),请使用--project。Claude Desktop、Windsurf 和 Cline 始终使用用户配置。若要在 GUI 客户端中进行项目级安装,请添加--command-path "$(command -v localcloud)",以保留绝对可执行文件路径。 - 桌面端 PATH 兼容性:在 macOS 上,会自动解析为永久系统二进制文件路径(
/opt/homebrew/bin/localcloud或/usr/local/bin/localcloud),确保从 Dock 或 Finder 启动的 GUI 应用可以顺畅运行,不受 shell PATH 问题影响。 - 自定义覆盖:传入
--command-path <CMD>以指定自定义可执行文件(例如lc或/opt/homebrew/bin/lc),或者传入--bare以强制使用裸localcloud命令。
指导你的 Agent
提示 Agent 使用 LocalCloud 模拟器:
你可以使用
localcloudMCP 服务。请遵循其use-localcloud-instead-of-gcp提示词。运行localcloud guide或使用localcloud_get_env,将所有 Google Cloud 客户端库和 Terraform 指向本地 loopback 模拟器。
你也可以在终端中运行 lc guide:它会打印权威且可直接复制粘贴的工作流指导,这些内容由运行时自身的服务目录生成,因此始终与镜像实际包含的内容一致。
Agent 可以做什么
MCP 桥接程序会公开运行时的工具、资源和提示词。请查看其目录,了解你的环境中可用的功能:
| 能力 | 工具和资源 | Agent 的操作 |
|---|---|---|
| 服务发现与健康检查 | localcloud_list_serviceslocalcloud_check_readiness | 发现运行中的服务及分配的 loopback 端口,并在发送请求前验证模拟器是否已就绪。 |
| API 目录与架构 | localcloud_get_api_cataloglocalcloud_browse_resources | 检查完整的 Google Cloud REST OpenAPI 架构和方法参数,并浏览存储桶、表和主题。 |
| 数据查询与 SQL | localcloud_query_data | 无需客户端 SDK,即可对本地 BigQuery、Cloud Spanner 和 Cloud SQL 数据库运行真实 SQL 查询。 |
| SDK 与 Terraform 配置 | localcloud_get_envlocalcloud_generate_terraform_env | 生成环境变量导出命令(STORAGE_EMULATOR_HOST 等)和 Terraform 提供程序覆盖配置。 |
| 测试与场景 | localcloud_list_recipeslocalcloud_export_state | 初始化测试数据场景、创建项目状态检查点,并比较状态变更。 |
可复现的云工作流
运行三个可复现的云工作流,查看完整的 Agent 提示词,以及 Cloud Storage、Pub/Sub 和 BigQuery 的 Python/SDK 测试运行:

手动配置客户端
如果你更愿意手动配置 MCP 客户端:
{
"mcpServers": {
"localcloud": {
"command": "/opt/homebrew/bin/localcloud",
"args": ["mcp"]
}
}
}
(在 macOS 桌面应用中,从 Dock/Finder 启动时,建议使用 /opt/homebrew/bin/localcloud 这样的绝对路径;从已配置 PATH 的终端 Shell 启动时,使用不带路径的 "localcloud"。)
对于直接通过 HTTP 通信的客户端,请使用 http://127.0.0.1:5380/mcp,并附带 X-LocalCloud-Project 和 X-LocalCloud-User 请求头。
配置
示例数据由容器启动流程和控制台的 Re-seed Data 操作管理。
CLI 不会发现、挂载或应用种子文件。现有的 host.seed
设置会被忽略;使用 server.auto_seed: false 可停用容器引导。
启动或重启时,如果受管理的容器仍挂载旧版 CLI 种子文件,
系统会重新创建容器,同时保留其现有数据卷。
以上功能无需任何配置即可使用。若要使用有版本管理、可共享的设置,请将
localcloud.yaml 放在项目目录中:
version: 1
context:
project: payments-dev
user: local-developer
host:
data_volume: payments-data
memory: 8g
data: persistent
docker_socket: auto
services:
enabled:
- gcs
- pubsub
- bigquery
- firestore
该文件是对打包默认值的递归局部覆盖:未指定的值沿用默认值,而设为 null 的映射成员会被删除。CLI 按以下顺序解析配置:
- 显式的位置参数路径 —
lc start ./custom.yaml LOCALCLOUD_CONFIG./localcloud.yaml- 运行时记住的配置
~/.local/share/localcloud/localcloud.yaml;如果设置了LOCALCLOUD_HOME,则使用$LOCALCLOUD_HOME/localcloud.yaml- 内置默认值
如果显式指定的路径、环境变量指定的路径或记住的路径不存在或不可读,CLI 会报错,而不会静默回退。CLI 标志会覆盖对应的 host 值。
host.docker_socket: auto(默认值)仅在启用的服务需要宿主机 Docker 套接字时才会挂载它,例如 Compute Engine、Cloud Run、GKE 或 Dataproc。设为 true 可始终挂载,设为 false 则会强制禁用挂载。
start、restart、reset 和 stop 会发送匿名的启动错误和每小时使用情况事件。设置
LOCALCLOUD_TELEMETRY=false 或 DO_NOT_TRACK=1 可关闭这些事件;关于具体发送的内容,请参阅
遥测。
→ 完整配置参考
故障排查
| 症状 | 含义 | 修复方法 |
|---|---|---|
Error [docker_unavailable] | Docker 未安装、未运行、无法访问或拒绝访问(details.reason) | 按照提示操作;lc doctor --fix 会安装 Colima 或启动你的 Docker 应用 |
Error [fix_confirmation_required] | lc doctor --fix 在没有终端的情况下运行(或使用了 --verbose) | 在交互式终端中运行;它会在执行每项修复前询问 |
Apple Silicon 上的 BigQuery 或其他服务在 start 后很快停止 | Docker VM 在 QEMU 上运行 | 运行 lc doctor,然后运行 lc doctor --fix,切换到启用 Rosetta 的 VZ |
Error [docker_socket_unavailable] | 服务需要 Docker 套接字,但套接字缺失或被阻止 | 检查套接字路径,或设置 host.docker_socket: false 以禁用基于 Docker 的服务 |
Error [health_timeout] / runtime_readiness_timeout | 容器已启动,但服务未能及时就绪 | 运行 lc logs --tail 200;确认至少有 4 GiB 可用内存,或使用 --memory 8g 提高内存 |
Error [port_mapping_confirmation_required] | 标准端口已被占用,且 shell 为非交互式 | 释放端口,或使用 --accept-dynamic-ports 重新运行 |
Error [data_volume_collision] | 多个兼容容器使用了同一个卷 | 运行 lc cleanup --dry-run 检查,然后运行 lc cleanup |
Error [ownership_mismatch] / ownership_forbidden | Docker 资源并非由 CLI 管理 | CLI 不会移除不归它管理的资源——请手动移除,或使用其他 --data-volume |
Error [unknown_project] | 此运行时中不存在该项目 | 只有 start 会创建项目:lc start --project-id NAME |
Error [mcp_connection_timeout] | /mcp 端点在 10 s 内未就绪 | 运行 lc status 确认运行时已启动,然后运行 lc mcp --connect-timeout 30 |
Error [dry_run_pull_conflict] | --dry-run 与 --pull 同时使用 | 预览严格为只读操作——请使用 --dry-run --no-pull,且镜像必须已存在于本地 |
Error [removed_flat_config] | localcloud.yaml 使用了 1.0 之前的扁平键 | 提示中会指出替代路径——请参阅配置 |
| 容器、网络或锁文件过期 | 中断的运行遗留了资源 | 运行 lc cleanup --dry-run,然后运行 lc cleanup |
仍未解决?lc doctor --verbose 和 lc status --verbose 会输出完整的机器可读状态,
而 --debug 会打印 CLI 将使用的确切 docker run 命令。
文档
| 指南 | 内容 |
|---|---|
| CLI 参考 | 所有命令、标志、输出模式和字段路径 |
| 配置 | localcloud.yaml、服务目录、卷、项目、身份 |
| 集成 | Python、Node、Go、Terraform/OpenTofu 和 MCP 客户端配置 |
| MCP 指南与架构 | 自动启动、项目隔离、工具目录和客户端安装程序 |
| MCP 可复现工作流 | Storage、Pub/Sub、BigQuery 的分步 Agent 测试场景 |
| MCP 收录与提交 | 市场、目录、awesome-list 和公告链接;状态与后续跟进 |
| 生命周期测试 | 端到端容器生命周期测试操作手册和验证 |
| local.cloud/docs | 产品文档、服务兼容性和控制台 |
开发
LocalCloud CLI 面向 Python 3.11+,并使用 uv。
uv sync --extra test # install dependencies
uv run --extra test python -m pytest -q # full suite
uv run --extra test python -m pytest -q -m "not docker" # no Docker required
uv run lc --help # run from source
要对容器生命周期进行实时验证,请参阅生命周期测试操作手册。
需要实时 Docker 引擎的测试标记为 docker;使用 -m "not docker" 可取消选择这些测试。
lc env --identity 使用 LocalCloud 的类型化身份会话契约。tests/fixtures/identity/ 中的夹具会根据随代码库提供的契约 tests/fixtures/identity/localcloud-contract.json 进行验证,该文件记录了契约来源的 LocalCloud 修订版本;使用 python3 scripts/sync-identity-contract.py --localcloud <checkout> 刷新契约,并设置 LOCALCLOUD_SOURCE=<checkout>,以便同时根据该代码库进行检查。端到端会话测试会针对一个镜像实际运行 lc start 和 lc env --identity(在 Colima 上,请将 --basetemp 设置为主目录下的路径,以便 Docker 可以绑定挂载配置):
LOCALCLOUD_RUN_IDENTITY_E2E=1 LOCALCLOUD_IMAGE=localcloud:<tag> \
uv run --frozen --extra test python -m pytest -m docker \
tests/integration/test_identity_session_acceptance.py
许可证与支持
LocalCloud 是受 LocalCloud Public Preview License 约束的专有软件。LocalCloud MCP 可免费用于文档中说明的本地开发工作流。
- 网站 — local.cloud
- 文档 — local.cloud/docs
- 支持 — 在 GitHub 上提交问题,或发送邮件至 [email protected]
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。