| |
| """One-time Gmail OAuth setup for the Gmail MCP proxy. |
| |
| Usage: |
| python scripts/gmail_mcp_auth.py --client-secret ~/Downloads/client_secret.json |
| |
| Steps to get client_secret.json: |
| 1. Go to https://console.cloud.google.com/apis/credentials |
| 2. Create OAuth 2.0 Client ID → Desktop app |
| 3. Download JSON → rename to client_secret.json |
| 4. Run this script and sign in via browser |
| """ |
|
|
| import argparse |
| import json |
| from pathlib import Path |
|
|
| from google_auth_oauthlib.flow import InstalledAppFlow |
|
|
| SCOPES = [ |
| "https://www.googleapis.com/auth/gmail.modify", |
| "https://www.googleapis.com/auth/gmail.readonly", |
| "https://www.googleapis.com/auth/gmail.send", |
| ] |
|
|
| CREDS_DIR = Path.home() / ".config" / "infj_bot" |
| CREDS_PATH = CREDS_DIR / "gmail_credentials.json" |
|
|
|
|
| def main() -> int: |
| p = argparse.ArgumentParser(description="Authenticate Gmail for MCP proxy") |
| p.add_argument( |
| "--client-secret", required=True, help="Path to Google OAuth client_secret.json" |
| ) |
| args = p.parse_args() |
|
|
| CREDS_DIR.mkdir(parents=True, exist_ok=True) |
|
|
| |
| flow = InstalledAppFlow.from_client_secrets_file(args.client_secret, SCOPES) |
| creds = flow.run_local_server(port=0) |
|
|
| |
| creds_data = { |
| "token": creds.token, |
| "refresh_token": creds.refresh_token, |
| "token_uri": creds.token_uri, |
| "client_id": creds.client_id, |
| "client_secret": creds.client_secret, |
| "scopes": creds.scopes, |
| } |
| CREDS_PATH.write_text(json.dumps(creds_data, indent=2)) |
| print(f"✅ Gmail credentials saved to: {CREDS_PATH}") |
| print(" You can now run the Gmail MCP server.") |
| return 0 |
|
|
|
|
| if __name__ == "__main__": |
| raise SystemExit(main()) |
|
|