Skip to content

Pulse fork: teammate onboarding + setup_credentials.py + context.md#169

Closed
lukeshumaker8 wants to merge 1 commit into
googleanalytics:mainfrom
pulse-integrated:pulse-onboarding
Closed

Pulse fork: teammate onboarding + setup_credentials.py + context.md#169
lukeshumaker8 wants to merge 1 commit into
googleanalytics:mainfrom
pulse-integrated:pulse-onboarding

Conversation

@lukeshumaker8
Copy link
Copy Markdown

Summary

First Pulse-specific commit on top of the Google upstream. Adds the onboarding scaffolding our teammates need to use this MCP without re-reading the upstream README or fighting gcloud commands by hand.

  • README: new "Setup for Pulse teammates" section with prereqs (gcloud, uv, Claude Code), clone + uv sync, OAuth client setup (reusable from the Google Ads MCP project), GA API enablement, the setup_credentials.py walkthrough, ~/.claude.json registration JSON, smoke test, and trade-offs (shared identity, read-only).
  • setup_credentials.py: interactive wrapper around gcloud auth application-default login --scopes=analytics.readonly,cloud-platform --client-id-file=<path>. Reuses an existing ADC if present; otherwise walks through OAuth client JSON + browser sign-in. Prints the exact env var line to paste into ~/.claude.json.
  • context.md: project-folder context for future Claude Code sessions. What this is, how it pairs with the Google Ads MCP, the auth model difference (ADC here vs hand-rolled yaml on the Ads side, and why we kept them different), and the Friday recap integration plan.
  • .gitignore: never commit OAuth client JSONs or ADC files.

Upstream tools (get_account_summaries, list_google_ads_links, run_report, run_funnel_report, run_conversions_report, run_realtime_report, get_custom_dimensions_and_metrics) are unchanged so we can git pull upstream main cleanly when Google ships updates.

Test plan

  • One teammate follows the new README section end-to-end on a clean Mac and the smoke test prints a list of GA4 account summaries
  • uv run setup_credentials.py produces a working ADC file after browser sign-in
  • Restart Claude Code, ask it to call get_account_summaries via the MCP, confirm properties come back
  • list_google_ads_links returns the expected Ads ↔ GA4 mapping for at least one client

🤖 Generated with Claude Code

- README: add "Setup for Pulse teammates" section with prereqs, clone,
  uv sync, OAuth client setup, API enablement, setup_credentials.py
  walkthrough, ~/.claude.json registration, smoke test, and trade-offs
- setup_credentials.py: interactive wrapper around `gcloud auth
  application-default login` with the analytics.readonly +
  cloud-platform scopes; reuses an existing ADC if present, otherwise
  walks through OAuth client JSON + browser sign-in
- context.md: project-folder context for future Claude Code sessions —
  what this is, how it pairs with the Ads MCP, the auth model
  difference (ADC vs hand-rolled yaml), Friday recap integration plan
- .gitignore: never commit OAuth client JSONs or ADC files

Upstream tools (get_account_summaries, list_google_ads_links,
run_report, etc.) are unchanged so we can `git pull upstream main`
cleanly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@google-cla
Copy link
Copy Markdown

google-cla Bot commented May 28, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@lukeshumaker8
Copy link
Copy Markdown
Author

Closing — opened against the wrong base by accident. This is Pulse-specific onboarding content that should live only on our internal fork (pulse-integrated/google-analytics-mcp), not the upstream Google repo. Apologies for the noise.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant