Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

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.

Metadata

Release files for wse-dev-mcp-client 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wse-dev-mcp-client 0.1.0
File Size Uploaded Provenance Actions
wse_dev_mcp_client-0.1.0.tar.gz 7.9 kB Without provenance Details for wse_dev_mcp_client-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for wse-dev-mcp-client 0.1.0
File Interpreter ABI Platform Actions
wse_dev_mcp_client-0.1.0-py3-none-any.whl Python 3 none any Details for wse_dev_mcp_client-0.1.0-py3-none-any.whl

Total release size: 14.8 kB

Release files / wse_dev_mcp_client-0.1.0.tar.gz

Download URL wse_dev_mcp_client-0.1.0.tar.gz
Size 7.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e66435f7d65f6b39c4a6cc0aa00a69dddf381e2f3c7605a49cfe850fab48a259
BLAKE2b-256 checksum
How to use checksums
f1e3809b0d9077b2f65caa1b72f221fc592c626dbff7d5e3da2675165d0cc4a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / wse_dev_mcp_client-0.1.0-py3-none-any.whl

Download URL wse_dev_mcp_client-0.1.0-py3-none-any.whl
Size 6.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
20a4de6f6326026f2ec972e14a4bc8ff99c50cd775328ed527c2c1466b8eaeca
BLAKE2b-256 checksum
How to use checksums
205380ac38244c41c9653904e00e7393283ce1ce6bccdb7dbeab3cc62c8afb08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Security for wse-dev-mcp-client 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page