Three steps. Three minutes. Zero refresh tokens in your repo.
Step 1: Connect Google Ads to MCP Factory (1 minute)
Sign in to your MCP Factory dashboard. Hit Integrations → Connect Google Ads. You’ll be redirected to Google’s OAuth screen. Authorize the scopes you need (https://www.googleapis.com/auth/adwords at minimum). You’re sent back to the dashboard with a green check next to Google Ads.
That’s it for the OAuth side. The refresh token is now in the vault. You will never touch it again.
Step 2: Create an API key (30 seconds)
Dashboard → API Keys → New Key. Name it something like “Google Ads MCP server — production”. Copy the mcp_xxx token. It’s shown once — store it in your MCP server’s env as MCP_FACTORY_API_KEY.
Step 3: Call the factory from your MCP server (90 seconds)
Add one helper to your MCP server:
import httpx
import os
async def get_google_ads_token() -> str:
async with httpx.AsyncClient() as client:
r = await client.get(
"https://app.mcpfactory.io/api/credentials/google/ads/token",
headers={"Authorization": f"Bearer {os.environ['MCP_FACTORY_API_KEY']}"},
)
r.raise_for_status()
return r.json()["access_token"]
Call get_google_ads_token() whenever you need to talk to the Google Ads API. The factory returns a fresh token, every time. No expiry logic, no refresh retries, no rotation handling.
What you didn’t have to do
- Create your own Google OAuth app
- Configure redirect URIs per environment
- Implement the refresh-token grant flow
- Cache access tokens
- Handle the 401-then-retry pattern
- Store a refresh token anywhere in your repo, env, or
.env.production
Next steps
Same pattern works for Gmail, Search Console, Microsoft Graph, GoHighLevel, and every other provider in the factory. The endpoint changes, the contract doesn’t.
Start a free trial or read the self-host guide.