LocalCloud MCP について
LocalCloud は、開発者や AI コーディングエージェントが Google Cloud アプリをローカルで構築、テスト、デバッグするための環境です。CLI が Docker ベースのランタイムと Google Cloud 互換サービスを管理し、環境変数を通じて既存の Google クライアントライブラリをローカルに接続します。
主な機能
- 01Google Cloud 互換サービスのローカル実行
- 02CLI によるランタイムとプロジェクト管理
- 03環境変数による SDK エンドポイント設定
- 04Docker ボリュームへのデータ永続化
- 05準備状況と診断情報の確認
- 06MCP によるコーディングエージェント接続
活用シーン
- 01Google Cloud アプリのローカル構築とテスト
- 02エージェントが操作・確認できるローカルクラウド状態の提供
- 03実際のクラウド料金なしでの実験
- 04ランタイム再起動後のテストデータ保持
MCP 対応
LocalCloud はコーディングエージェント向けの MCP ブリッジを備え、stdio の `lc mcp` または HTTP の `:5380/mcp` で利用できます。エージェントはローカルのプロジェクト状態を作成、投入、確認、リセットできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
LocalCloud CLI
開発者と AI コーディングエージェントのための、無料のローカルクラウド環境です。
ターミナルまたはコーディングエージェントから、Google Cloud アプリケーションのビルド、テスト、デバッグを行えます。 MCP によって、エージェントをローカルサービス、SDK 設定、テストデータ、準備状況、診断に接続できます。
Google Cloud のサービス料金をかけずにローカルサービスのワークフローを実行し、1 つのコマンドですぐに始められます。 マシンの容量に合わせて、実験やテストスイート用のローカルプロジェクトを作成できます。
ウェブサイト · MCP ガイド · Claude と Codex のマーケットプレイス設定
インストール · クイックスタート · 仕組み · サービス · コマンド · AI エージェントと MCP · トラブルシューティング
localcloud(別名 lc)は、LocalCloud の公式ホスト CLI です。コンテナランタイムのライフサイクル、複数プロジェクトのコンテキスト、SDK 環境変数、永続 Docker ボリューム、Model Context Protocol ブリッジを管理します。これにより、アプリケーションコードは、ループバックを指すようにするだけで、これまでどおり同じ 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 のサービスを 1 つのコンテナで。 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コマンドを表示できます。 - エージェントを前提に設計されています。 ファーストクラスの MCP ブリッジにより、AI コーディングエージェントは、人が UI を操作することなく、自身のループの中で GCP に近い実際の状態をプロビジョニング、シード、検査、リセットできます。
- ライブクラウドへの影響はゼロです。 CLI は生成されるすべてのエンドポイントがループバックであることを検証し、実際の
googleapis.comアドレスの出力を拒否します。本番環境への暗黙のフォールバックはありません。
比較
| LocalCloud | gcloud beta emulators | Testcontainers | 実際の GCP 開発プロジェクト | |
|---|---|---|---|---|
| サービス | 27 | 約5(Bigtable、Datastore/Firestore、Pub/Sub、Spanner) | 同じエミュレーターをラップ | すべて |
| セットアップ | CLI コマンド1つ | サービスごとにプロセス1つ | テストコードに記述 | プロジェクト、課金、IAM |
| SDK の接続設定 | eval "$(lc env)" | エミュレーターごとに手動 | コンテナーごとにコード内で設定 | ADC + 実際の認証情報 |
| ウェブコンソール | 内蔵 | — | — | あり |
| Terraform / OpenTofu | lc env --format terraform | — | — | あり |
| エージェント制御(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 では、Docker VM は QEMU ではなく VZ と Rosetta を使って実行してください。こちらのほうが高速で、QEMU には LocalCloud で既知の問題があります(BigQuery エミュレーターが動作しない場合があります)。lc doctor は Docker アプリ、VM の種類、Rosetta の状態を報告し、lc doctor --fix は Colima または Rancher Desktop の切り替えを提案します。
LocalCloud のイメージには eStargz ビルドもあり、lc start --estargz で実行できます。Docker のストレージドライバーとして Stargz Snapshotter を使用すると、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 はサポートされていません。Intel 版 macOS アーカイブが提供されたのは 0.1.11 が最後のリリースです。
Windows ユーザーはコンテナーを直接実行できます。Docker のセットアップ手順をご覧ください。
検証
$ lc --version
localcloud 0.1.12 (commit 6e45b85cad86, released 2026-10-13)
リリースビルドには正確なソースコミットとリリース日が埋め込まれているため、バイナリの出所をいつでも特定できます。
クイックスタート
何もない状態から、動作する Cloud Storage バケットを5分で作成します。
1. マシンを確認する
lc doctor
Docker への接続を確認し、Docker アプリと VM の設定を報告して、解決された 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 秒間ログを表示します。
公開ポートを 127.0.0.1 にバインドするには、lc start --local-only を使用します。
そのバインドを維持するには、以降の start、restart、reset コマンドにも --local-only を指定してください。
稼働中のランタイムに対して start を再度実行しても問題ありません。
3. シェルを設定する
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 コーディングエージェント向けのヒント: シェルの手動設定は不要です!AI エージェントと MCP に進み、Cursor、Claude Code、または Windsurf を 1 つのコマンド(
lc mcp install)で設定してください。
仕組み
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 はコンテナと直接通信します。
明確に分離された 3 つの ID
これは覚えておく価値のある唯一の概念です。すべてのフラグはここから導かれます。
| 軸 | フラグ | 選択するもの | スコープ |
|---|---|---|---|
| データボリューム | --data-volume | 永続的なランタイム ID。/var/lib/localcloud にマウントされる名前付き Docker ボリュームです。2 つのボリュームは、互いに独立した 2 つの LocalCloud です。 | Docker |
| プロジェクト | --project-id | 1 つのランタイム内の論理的な Google Cloud プロジェクトです。複数のプロジェクトで 1 つのボリュームを共有できます。start と MCP の起動時に、存在しないプロジェクトが作成されます。 | リクエスト |
| ユーザー | --user | LocalCloud サービスに送信される呼び出し元として記録されるユーザーです。プリンシパルが必要な場合は <name>@localcloud.invalid に正規化されます。 | リクエスト |
プロジェクトとユーザーはリクエストコンテキストです。これらを切り替えても即時に反映され、Docker には影響しません。デフォルトはそれぞれ localcloud-data、local-gcp-project、local-developer です。一方、MCP ブリッジでは、--project-id またはリポジトリの localcloud.yaml で指定されていない限り、各 Git リポジトリにリポジトリ名を付けた個別のプロジェクトが割り当てられます。
ポート
新しいランタイムでは、標準のポート範囲 5380–5405(および DNS の 5410/udp)が優先されます。Cloud SQL MySQL を有効にすると、LocalCloud の MySQL コンパニオンコンテナが公開する 5406 も含まれます。このポート一式を確保できない場合、CLI は 5508–5539、次に 5821–5840、次に 5322–5342 から連続した代替範囲を提示し、コンテナの作成前に確認を求めます。このランタイムでは、有効なサービスが使用するポートのみを公開するため、標準のランタイムと並行して 4 つ起動できます。ホストポートを自分で選ぶには、host.port_range: 6000-6099 を設定するか、--port-range 6000-6099 を渡してください。CLI がオペレーティングシステムの一般的なエフェメラルポート範囲をスキャンすることはありません。また、lc env は常に実際に使用中のポートを出力します。
サービス
Google Cloud 互換サービスは27種類で、そのうち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 |
| セキュリティと ID 管理 | Cloud IAM, Secret Manager, Cloud KMS |
| 管理と請求 | Resource Manager, Service Usage, Cloud Billing |
| オブザーバビリティ | Cloud Logging, Cloud Monitoring |
| AI と生産性 | Vertex AI, Google Sheets |
全サービス一覧 — サービス ID とデフォルト設定
--services または localcloud.yaml の services.enabled では、ID を指定してください。
| ID | Google Cloud サービス | デフォルト |
|---|---|---|
gcs | Cloud Storage | ● on |
pubsub | Pub/Sub | ● on |
firestore | Firestore | ○ off |
bigtable | Bigtable | ● on |
spanner | Spanner | ● on |
bigquery | BigQuery | ● on |
sheets | Google Sheets | ● on |
secretmanager | Secret Manager | ● on |
cloudtasks | Cloud Tasks | ● on |
cloudscheduler | Cloud Scheduler | ● on |
cloudfunctions | Cloud Functions (2nd Gen) | ● on |
alloydb | AlloyDB | ● on |
dataproc | Dataproc | ● on |
cloudiam | Cloud IAM | ● on |
cloudresourcemanager | Cloud Resource Manager | ● on |
serviceusage | Service Usage | ● on |
cloudbilling | Cloud Billing | ● on |
logging | Cloud Logging | ● on |
monitoring | Cloud Monitoring | ● on |
gke | GKE | ○ off |
compute | Compute Engine | ○ off |
cloudrun | Cloud Run | ○ off |
memorystore | Memorystore (Redis/Valkey) | ● on |
workflows | Cloud Workflows | ● on |
vertexai | Vertex AI | ○ off |
kms | Cloud KMS | ● on |
cloudsql | Cloud SQL | ● on |
● on のサービスは、services.enabled が未設定の場合に自動で起動します。○ off のサービスは利用できますが、明示的に選択する必要があります。
起動時にサービスを明示的に指定するか、組み込みのデフォルト設定に戻してください。
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 を指定すると、ローカル ID セッションを開始します |
lc console | 選択したプロジェクトとユーザーのウェブコンソールを開きます |
lc logs | ランタイムの最近のログを表示します |
lc restart | ローカルイメージでコンテナを再作成します(デフォルトは --no-pull。レジストリを確認する場合は --pull を指定します) |
lc reset | 選択したプロジェクトをリセットします(--all-projects を指定すると、手動で再作成する手順を表示します) |
lc stop | 永続データを削除せずにランタイムを停止します |
lc cleanup | 形式が不正な Docker リソース、古いランタイム状態、レガシーファイルを削除します |
lc guide | コーディングエージェント向けの正式なガイダンスを表示します |
lc mcp | stdio MCP ブリッジを実行します。lc mcp install は AI コーディングエージェントを設定します |
コマンド固有のフラグと有効な --fields のパスについては、lc COMMAND --help を実行してください。
出力モード
すべてのコマンドは、同じ結果からユーザーとスクリプトの両方に情報を伝えます。
| フラグ | 動作 |
|---|---|
| (なし) | 簡潔なターミナル概要を表示します。インタラクティブシェルではスピナーと経過時間も表示します |
--verbose | 構造化された完全な結果を JSON として標準出力に表示します |
--fields PATH[,PATH…] | 指定した JSON パスを簡潔な概要に追加します |
--dry-run | 予定されている Docker および LocalCloud の変更をすべて検証して表示します。変更は行いません |
--debug | コピーして使える同等の 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 によるコマンドの中断 |
レシピ
テストスイートごとに独立した環境を用意する。 2つ目のボリュームは、完全に独立した2つ目の LocalCloud です。
lc start --data-volume ci-e2e --project-id pr-1421
lc status --data-volume ci-e2e
lc stop --data-volume ci-e2e
1つのランタイムで複数のプロジェクトを運用する。 切り替えは再起動ではなく、リクエストコンテキストの変更です。
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 変数を出力します。シェルで評価し、.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'
ホストプロセス用の署名済みローカル ID。 Application Default Credentials は、127.0.0.1 上の12時間有効なメタデータリレーから、サービスアカウント用の LocalCloud 署名済み ID トークンとアクセス トークンを取得します。GOOGLE_APPLICATION_CREDENTIALS または gcloud の Application Default Credentials が優先される場合は、何も変更せずに警告します。また、設定済みの 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
変更前にプレビューする。 ライフサイクルのドライランは厳密に読み取り専用で、イメージの pull も行いません。
lc start --dry-run # every planned Docker and LocalCloud mutation, in order
lc restart --dry-run
ローカルイメージを使って再起動するか、pull する。 デフォルトでは、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
ほかのプロジェクトを失わずに、1つのプロジェクトをリセットする。
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 エージェントと MCP
LocalCloud はネイティブの Model Context Protocol (MCP) 統合を提供します。これにより、AI コーディングエージェントはローカルのワークフローで Google Cloud の料金をかけずに、標準 SDK を使用して Google Cloud アプリケーションを構築、テスト、デバッグできるローカルクラウド環境を利用できます。
インストール、GitHub プラグイン、接続確認、最初のテスト用プロンプトについては、Claude、Codex、Cursor、その他のクライアント向けローカルセットアップガイドに従ってください。ローカルセットアップは、Directory による公式承認に依存しません。
エージェントが LocalCloud MCP を最大限に活用できる理由
- オンデマンドの自動起動:エージェントが呼び出しを行うか初期化すると、MCP ブリッジがチェックを行い、ファイルロックによって競合状態を防ぎながら、バックグラウンドで LocalCloud を自動的に起動します。ランタイムを手動で制御したい場合は、
--no-startを渡してください。 - 共有のデフォルト環境:デフォルトの
localcloud-dataボリュームを使用するセッションは、そのランタイムを共有します。別の Docker 環境が必要な場合は、意図的に別のデータボリュームを選択してください。 - 安全なローカルテスト:エージェントは実際のエミュレーター環境変数(
eval "$(lc env)")を生成し、ローカルデータベース(BigQuery、Spanner、Cloud SQL)にクエリを実行し、Pub/Sub メッセージをパブリッシュ/プルし、Cloud Storage バケットをループバックに対して直接テストできます。 - プロジェクトコンテキスト:アプリケーションやテストごとに
--project-idを使用します。プロジェクトは選択したランタイムを共有し、セキュリティ境界にはなりません。
1 コマンドでセットアップ:lc mcp install
1 コマンドで、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 アプリケーションも、シェルの PATH に関する問題なくスムーズに動作します。 - カスタム上書き:カスタム実行ファイル(例:
lcや/opt/homebrew/bin/lc)を指定するには--command-path <CMD>を渡すか、基本のlocalcloudコマンドを強制するには--bareを渡してください。
エージェントへの指示
エージェントに LocalCloud エミュレーターを使うようプロンプトで指示してください。
localcloudMCP サーバーを利用できます。use-localcloud-instead-of-gcpプロンプトに従ってください。localcloud guideを実行するか、localcloud_get_envを使用して、すべての Google Cloud クライアントライブラリと Terraform をローカルのループバックエミュレーターに接続してください。
ターミナルで lc guide を実行することもできます。ランタイム独自のサービスカタログから生成された、信頼できるコピー&ペースト可能なワークフローガイダンスが表示されるため、イメージに実際に含まれる内容と食い違うことはありません。
エージェントにできること
MCP ブリッジは、実行中のランタイムのツール、リソース、プロンプトを公開します。カタログを調べて、環境で利用可能な機能を確認してください。
| 機能 | ツールとリソース | エージェントが行うこと |
|---|---|---|
| サービスの検出とヘルスチェック | localcloud_list_serviceslocalcloud_check_readiness | 実行中のサービスと割り当て済みのループバックポートを検出し、リクエストを送信する前にエミュレーターの準備状態を確認します。 |
| 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 | テストデータのシナリオをシードし、プロジェクト状態のチェックポイントを作成し、状態の変更を比較します。 |
再現可能なクラウドワークフロー
Cloud Storage、Pub/Sub、BigQuery のエージェントプロンプト一式と Python/SDK のテスト実行について、3 つの再現可能なクラウドワークフローを実行してください。

(録画デモを見るか、MCP のアーキテクチャとガイドをご覧ください。)
クライアントの手動設定
MCP クライアントを手動で設定する場合:
{
"mcpServers": {
"localcloud": {
"command": "/opt/homebrew/bin/localcloud",
"args": ["mcp"]
}
}
}
(macOS のデスクトップアプリでは、Dock/Finder から起動する場合、/opt/homebrew/bin/localcloud のような絶対パスを推奨します。PATH を設定したターミナルシェルから起動する場合は、"localcloud" をそのまま使用してください。)
HTTP を直接使用するクライアントでは、X-LocalCloud-Project および X-LocalCloud-User ヘッダーとともに http://127.0.0.1:5380/mcp を使用してください。
設定
サンプルデータは、コンテナーの起動時および Console の 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 フラグは、対応する 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] | 標準ポートが使用中で、シェルが非対話型です | ポートを解放するか、--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 秒以内に準備完了になりませんでした | 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、サービスカタログ、ボリューム、プロジェクト、ID |
| インテグレーション | Python、Node、Go、Terraform/OpenTofu、および MCP クライアントのセットアップ |
| MCP ガイドとアーキテクチャ | 自動起動、プロジェクトの分離、ツールカタログ、クライアントインストーラー |
| MCP の再現可能なワークフロー | Storage、Pub/Sub、BigQuery のエージェントテストシナリオを順を追って解説 |
| 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 では、Docker が設定をバインドマウントできるように、ホームディレクトリ配下の --basetemp を使用してください)。
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 で issue を作成するか、[email protected] にメールでお問い合わせください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。