Skip to main content

Local stdio↔HTTP MCP proxy that talks to Iceberg Data's wse-dev MCP Cloud Run deploy. Auto-refreshes Google identity tokens via gcloud for transparent Cloud Run IAM auth — zero manual token juggling.

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

wse-dev-mcp-client

Local stdio ↔ HTTP MCP proxy for the Iceberg Data wse-dev MCP deployed on Cloud Run.

This is the client side of a split MCP architecture. The server (with the real WSE-ops tools — Firestore queries, job debugging, test enqueue, etc.) runs on Cloud Run under IAM control; this tiny package runs on each developer's machine as a stdio MCP server and forwards every request to Cloud Run with an auto-refreshed Google identity token.

Claude Code (stdio) → wse-dev-mcp-client (local) → Cloud Run (HTTP + ID token)
                             │
                             └─ On each call: gcloud auth print-identity-token
                                              (cached 55 min; invisible refresh)

No tokens to paste. No wrapper scripts to rerun. Access is gated by Cloud Run IAM (roles/run.invoker) — if your Google identity has it, the proxy works; if not, Cloud Run returns 403.

Prerequisites

  • Python 3.11+
  • gcloud CLI on your PATH, logged in with an identity that has run.invoker on the target MCP service.
    • One-time: gcloud auth login
  • Claude Code (or any MCP-capable client)

Install

With pipx (recommended — keeps the proxy in its own isolated env):

pipx install wse-dev-mcp-client

Or with uv:

uv tool install wse-dev-mcp-client

Plain pip works too:

pip install --user wse-dev-mcp-client

Register with Claude Code

claude mcp add wse-dev wse-dev-mcp-client \
  --scope user \
  -e WSE_DEV_MCP_URL=https://your-cloud-run-mcp-url

Replace https://your-cloud-run-mcp-url with the Cloud Run URL of your deployed MCP server. For Iceberg Data developers, ask a teammate or run:

gcloud run services describe wse-dev-mcp \
  --region=us-west1 --project=iceflow \
  --format='value(status.url)'

Verify with claude mcp list — you should see wse-dev: ... ✓ Connected.

How it works

On each MCP call:

  1. Claude Code writes a JSON-RPC message to the proxy's stdin.
  2. The proxy consults its in-memory token cache (TTL 55 min). If expired or empty, it subprocesses gcloud auth print-identity-token to mint a fresh Google identity token.
  3. The message is forwarded over HTTPS to the Cloud Run URL with Authorization: Bearer <id-token>.
  4. Cloud Run IAM validates the token; if the caller has roles/run.invoker on the service, the MCP server handles the request and streams the response back.
  5. The proxy pumps the response over stdout to Claude Code.

That's the whole package. ~150 lines of Python.

Failure modes

Symptom Cause Fix
gcloud CLI not found on startup gcloud not on PATH Install Google Cloud SDK and re-register
gcloud identity-token fetch failed Not logged in gcloud auth login
MCP calls return 403 Your identity lacks run.invoker on the service Ask the project admin to grant it
WSE_DEV_MCP_URL env var not set Missing -e flag in claude mcp add Re-register with the env var

Configuration

Env var Default Purpose
WSE_DEV_MCP_URL (required) Base URL of the Cloud Run MCP, without trailing slash. The proxy appends /mcp.

Compatibility

  • Python: 3.11, 3.12, 3.13, 3.14
  • OS: Linux, macOS; Windows untested (should work with WSL)
  • Claude Code: any version supporting stdio MCP transport (most recent clients)

License

MIT. © 2026 Iceberg Data LLC.

Related

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wse_dev_mcp_client-0.1.0.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wse_dev_mcp_client-0.1.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file wse_dev_mcp_client-0.1.0.tar.gz.

File metadata

  • Download URL: wse_dev_mcp_client-0.1.0.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for wse_dev_mcp_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e66435f7d65f6b39c4a6cc0aa00a69dddf381e2f3c7605a49cfe850fab48a259
MD5 edd9933e753788f1aceb5ab4fdb4071a
BLAKE2b-256 f1e3809b0d9077b2f65caa1b72f221fc592c626dbff7d5e3da2675165d0cc4a7

See more details on using hashes here.

File details

Details for the file wse_dev_mcp_client-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for wse_dev_mcp_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 20a4de6f6326026f2ec972e14a4bc8ff99c50cd775328ed527c2c1466b8eaeca
MD5 6909f0d6d482943f983edb53e67273a7
BLAKE2b-256 205380ac38244c41c9653904e00e7393283ce1ce6bccdb7dbeab3cc62c8afb08

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page