<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jay Sen</title>
    <description>The latest articles on DEV Community by Jay Sen (@jaysen99).</description>
    <link>https://dev.to/jaysen99</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F634428%2Ffcfedb03-b5b4-492c-b011-c9a4c5c9a2ac.jpeg</url>
      <title>DEV Community: Jay Sen</title>
      <link>https://dev.to/jaysen99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jaysen99"/>
    <language>en</language>
    <item>
      <title>Give your coding agent a local cloud environment with MCP</title>
      <dc:creator>Jay Sen</dc:creator>
      <pubDate>Fri, 09 Oct 2026 14:25:43 +0000</pubDate>
      <link>https://dev.to/jaysen99/give-your-coding-agent-a-local-cloud-environment-with-mcp-2b2l</link>
      <guid>https://dev.to/jaysen99/give-your-coding-agent-a-local-cloud-environment-with-mcp-2b2l</guid>
      <description>&lt;p&gt;LocalCloud gives AI coding agents a &lt;strong&gt;free cloud dev. environment&lt;/strong&gt; for building, testing, and debugging Google Cloud applications. It  provides MCP server for agent to connects for service discovery, SDK configuration, resource inspection, supported feature,  readiness, and diagnostics, etc...&lt;/p&gt;

&lt;p&gt;I'm sharing a practical setup and three small integration tests you can run locally. The application uses standard Google Cloud SDKs pointed at the discovered local endpoints.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://local.cloud/" rel="noopener noreferrer"&gt;Website&lt;/a&gt; · &lt;a href="https://local.cloud/docs/mcp/" rel="noopener noreferrer"&gt;MCP setup guide&lt;/a&gt; · &lt;a href="https://github.com/LocalGCloud/localcloud-cli" rel="noopener noreferrer"&gt;Source and releases&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Install and connect your agent
&lt;/h2&gt;

&lt;p&gt;Install &lt;strong&gt;LocalCloud CLI 0.1.9 or newer&lt;/strong&gt;, keep Docker running.&lt;/p&gt;

&lt;p&gt;On macOS, or Linux with Homebrew:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;LocalGCloud/tap/localcloud
lc &lt;span class="nt"&gt;--version&lt;/span&gt;
lc doctor
lc mcp &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--client&lt;/span&gt; cursor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reload Cursor and enable the &lt;code&gt;localcloud&lt;/code&gt; MCP server. The bridge starts or reuses your local runtime. Its first connection can take longer while Docker downloads the image.&lt;/p&gt;

&lt;p&gt;For an existing Homebrew installation, run &lt;code&gt;brew update&lt;/code&gt; and &lt;code&gt;brew upgrade localcloud&lt;/code&gt;. CLI and runtime versions are independent; an existing older runtime needs an explicit upgrade using the same data volume/configuration. The &lt;a href="https://local.cloud/docs/mcp/" rel="noopener noreferrer"&gt;guide&lt;/a&gt; explains that process, the website installer, and setup for Claude Code/Desktop, Codex, VS Code, Cline, Gemini CLI, Antigravity, and Windsurf.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give the agent an observable task
&lt;/h2&gt;

&lt;p&gt;Try this prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use LocalCloud MCP to list local services, check readiness, and obtain SDK settings. Check compatibility before writing a small Cloud Storage, Pub/Sub, and BigQuery integration test. Use only the returned local endpoints and uniquely named test resources. Assert the actual results and clean up only resources created by this test. Stop if a required operation is unavailable; do not fall back to real Google Cloud.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The initial calls are &lt;code&gt;localcloud_list_services&lt;/code&gt;, &lt;code&gt;localcloud_check_readiness&lt;/code&gt;, and &lt;code&gt;localcloud_get_env&lt;/code&gt; with &lt;code&gt;{"format":"json"}&lt;/code&gt;. Returned SDK settings account for the runtime's actual port mappings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three workflows with real assertions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cloud Storage:&lt;/strong&gt; create a uniquely named bucket, upload a known string, download it, and assert an exact content match. Remove that test bucket in cleanup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pub/Sub:&lt;/strong&gt; create a topic and subscription, publish a known message, pull it, check the exact bytes, and acknowledge it. Delete only that test's subscription and topic, including when an assertion fails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BigQuery:&lt;/strong&gt; run &lt;code&gt;SELECT 1 AS mcp_smoke&lt;/code&gt;, then check that it returns exactly one row with value 1. The runnable example checks this through both &lt;code&gt;localcloud_query_data&lt;/code&gt; and the standard BigQuery SDK.&lt;/p&gt;

&lt;p&gt;These tests exercise application behavior as well as the MCP connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run the complete example
&lt;/h2&gt;

&lt;p&gt;Start an independent runtime for the three services. Dynamic ports let it run beside an everyday environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lc start &lt;span class="nt"&gt;--image&lt;/span&gt; agentcloud/localcloud:0.1.5 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--data-volume&lt;/span&gt; localcloud-mcp-demo &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--services&lt;/span&gt; gcs,pubsub,bigquery &lt;span class="nt"&gt;--local-only&lt;/span&gt; &lt;span class="nt"&gt;--accept-dynamic-ports&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the example from the public repository with its optional SDK dependencies using &lt;a href="https://docs.astral.sh/uv/" rel="noopener noreferrer"&gt;uv&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/LocalGCloud/localcloud-cli.git
&lt;span class="nb"&gt;cd &lt;/span&gt;localcloud-cli
uv run &lt;span class="nt"&gt;--with&lt;/span&gt; &lt;span class="nv"&gt;mcp&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;2.0.0 &lt;span class="nt"&gt;--with&lt;/span&gt; google-cloud-storage &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--with&lt;/span&gt; google-cloud-pubsub &lt;span class="nt"&gt;--with&lt;/span&gt; google-cloud-bigquery &lt;span class="se"&gt;\&lt;/span&gt;
  examples/mcp_workflows.py &lt;span class="nt"&gt;--data-volume&lt;/span&gt; localcloud-mcp-demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script obtains SDK settings through MCP, rejects non-loopback hosts, supplies anonymous local credentials, and removes its own bucket/topic/subscription. Its observed output was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PASS MCP: localcloud_list_services
PASS MCP: localcloud_check_readiness
PASS MCP: localcloud_check_compatibility
PASS MCP: localcloud_get_diagnostics
PASS MCP: SDK configuration validates against its output schema
PASS MCP: BigQuery query returns the expected row
PASS Cloud Storage: upload and read back the exact content
PASS Pub/Sub: publish, pull, verify, and acknowledge
PASS BigQuery: SELECT 1 returns the expected row
Cleanup complete: only uniquely named example resources were removed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzfuqmgslsgw2gnghc3u3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzfuqmgslsgw2gnghc3u3.gif" alt="Recorded LocalCloud MCP and SDK verification" width="760" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When finished, stop the example runtime:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lc stop &lt;span class="nt"&gt;--data-volume&lt;/span&gt; localcloud-mcp-demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The named volume remains available for reuse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspect a failure before changing the test
&lt;/h2&gt;

&lt;p&gt;Ask the agent to check readiness, diagnostics, and recent requests, then rerun the failing assertion. A service can be present in the catalog while disabled in the running environment, so check current readiness and compatibility.&lt;/p&gt;

&lt;p&gt;The default data volume is shared. Use test-owned resources and explicit cleanup; choose a separate named volume for an independent runtime. MCP management writes and destructive actions require explicit runtime settings. SDK operations can change local application data.&lt;/p&gt;

&lt;p&gt;The example passed against the exact Linux ARM64 release image and the AMD64 image under emulation, through the published macOS ARM64 CLI. Google Cloud production validation and native hardware verification on every platform remain separate.&lt;/p&gt;

&lt;p&gt;LocalCloud MCP is also &lt;a href="https://registry.modelcontextprotocol.io/v0.1/servers/io.github.jhsenjaliya%2Flocalcloud/versions/0.1.9" rel="noopener noreferrer"&gt;active in the official MCP Registry&lt;/a&gt;, with a &lt;a href="https://github.com/LocalGCloud/localcloud-cli/releases/download/v0.1.9/localcloud-mcp-0.1.9.mcpb" rel="noopener noreferrer"&gt;native desktop bundle&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://local.cloud/" rel="noopener noreferrer"&gt;Website&lt;/a&gt; · &lt;a href="https://local.cloud/docs/mcp/" rel="noopener noreferrer"&gt;MCP guide&lt;/a&gt; · &lt;a href="https://local.cloud/blog/localcloud-mcp-agent-cloud/" rel="noopener noreferrer"&gt;Original walkthrough and recorded demo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
    </item>
    <item>
      <title>Run Google Cloud on your laptop</title>
      <dc:creator>Jay Sen</dc:creator>
      <pubDate>Fri, 24 Apr 2026 23:29:21 +0000</pubDate>
      <link>https://dev.to/jaysen99/the-most-underused-data-center-in-your-organization-is-your-laptop-3mh5</link>
      <guid>https://dev.to/jaysen99/the-most-underused-data-center-in-your-organization-is-your-laptop-3mh5</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbsbkjq2xky967u3kkblm.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbsbkjq2xky967u3kkblm.webp" alt="Developer laptop running local cloud"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A modern developer laptop is no longer a lightweight terminal. A current MacBook Pro comes with a 10+ core CPU, up to a 40-core GPU, and 128GB unified memory. That is serious local compute power sitting on a desk.&lt;/p&gt;

&lt;p&gt;At the same time, organizations keep pushing more development and testing work onto paid cloud environments.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Flexera’s &lt;em&gt;2026 State of the Cloud&lt;/em&gt; says managing cloud spend remains a top challenge for 85% of organizations.&lt;br&gt;
LocalStack claims 40% of cloud spend is wasted on dev &amp;amp; testing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We keep renting compute we already own. This is one of the strangest things: we buy powerful laptops yet rely on cloud resources for basic development cycles and integration testing.&lt;/p&gt;

&lt;h3&gt;
  
  
  The result
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Slower iteration&lt;/li&gt;
&lt;li&gt;More credential friction&lt;/li&gt;
&lt;li&gt;A cloud bill for work that belongs in the inner dev loop&lt;/li&gt;
&lt;li&gt;Tooling already moving toward local-first development&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The ecosystem is already moving
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LocalStack&lt;/strong&gt; provides AWS service emulation to build and test cloud apps locally&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;fake-gcs-server&lt;/strong&gt; provides a Google Cloud Storage emulator as a binary or Docker image&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the question isn’t “Is this possible?” — it already is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are we ready to treat laptops as real infrastructure?
&lt;/h2&gt;

&lt;p&gt;The real shift is whether teams are willing to treat the developer laptop as first-class infrastructure for inner-loop and non-production work.&lt;/p&gt;

&lt;h3&gt;
  
  
  There are still a couple of problems
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;LocalStack does not provide Google Cloud services&lt;/li&gt;
&lt;li&gt;Cloud vendors are not strongly incentivized to support full local stacks&lt;/li&gt;
&lt;li&gt;Existing emulators are partial, inconsistent, or too limited&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s why I built:&lt;/p&gt;

&lt;h2&gt;
  
  
  LocalCloud — Google Cloud-In-A-Box
&lt;/h2&gt;

&lt;p&gt;And It's Free: &lt;a href="https://local.cloud" rel="noopener noreferrer"&gt;https://local.cloud&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker pull jaysen2apache/localcloud

&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.localcloud/data

docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 &lt;span class="nt"&gt;-p&lt;/span&gt; 4443:4443 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-m&lt;/span&gt; 4g &lt;span class="nt"&gt;--name&lt;/span&gt; localcloud &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ~/.localcloud/data:/var/lib/localcloud &lt;span class="se"&gt;\&lt;/span&gt;
  jaysen2apache/localcloud

&lt;span class="c"&gt;# Sets env vars&lt;/span&gt;
&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; localhost:8080/_localcloud/env?format&lt;span class="o"&gt;=&lt;/span&gt;shell&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Use local Google Object Storage from Local FileSystem&lt;/span&gt;
gcloud storage &lt;span class="nb"&gt;ls &lt;/span&gt;gs://
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this developer can run and test most google services locally, making $0 cost and fast development. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local is for building. Cloud is for shipping.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This does not mean the real cloud goes away. Production still needs production. Shared staging still matters. Scale testing, networking, IAM edge cases, and distributed behavior still belong in real cloud environments. But not every integration test needs cloud resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future &amp;amp; vision: Domain-In-A-Box
&lt;/h2&gt;

&lt;p&gt;One of the most under-appreciated time sinks for new developers is figuring out the data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which dataset has user events?&lt;/li&gt;
&lt;li&gt;Where are model artifacts stored?&lt;/li&gt;
&lt;li&gt;Which topics drive the workflow?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  LocalCloud can help:
&lt;/h3&gt;

&lt;p&gt;Like a domain data product, every domain in an organization should provide a domain-in-a-box on top of LocalCloud. This includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Preloaded domain services (nightly builds)&lt;/li&gt;
&lt;li&gt;Mock data required for testing&lt;/li&gt;
&lt;li&gt;Data catalog&lt;/li&gt;
&lt;li&gt;Any workflows, etc...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Makes domain team devs &amp;amp; dependent teams productive on day one !&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>googlecloud</category>
      <category>infrastructure</category>
      <category>developers</category>
    </item>
  </channel>
</rss>
