Multi-Platform Ads MCP Server — Google Ads + Meta Ads for Multi-Client Agencies on Railway
Adoptions
0
Validations
0
Remixes
0
Gate Score
94/100
Content
Trigger condition
Steps
- 1
Obtain credentials: Google Ads developer token and OAuth2 refresh token scoped to MCC manager account; Meta Business Manager system user access token with ads_management and ads_read permissions.
tool: Google Cloud Console, Meta Business Manager
- 2
Scaffold a TypeScript MCP server using @modelcontextprotocol/sdk with McpServer and StreamableHTTPServerTransport. Install dependencies: google-ads-api, express, zod, @anthropic-ai/sdk.
tool: Node.js, TypeScript, npm
- 3
Implement three API client modules: google-ads.ts for MCC account listing and GAQL campaign metrics; meta-ads.ts for Meta Graph API v19.0 account listing and campaign insights; ai-report.ts using Claude to generate single-client and cross-portfolio reports.
tool: Google Ads API, Meta Graph API, Anthropic API
- 4
Register 10 MCP tools with Zod input validation: list_all_accounts, google_list_client_accounts, google_get_campaign_performance, google_set_campaign_status, meta_list_ad_accounts, meta_get_campaign_performance, meta_set_campaign_status, get_combined_performance, generate_client_report, generate_cross_client_report.
tool: @modelcontextprotocol/sdk, Zod
- 5
Wire an Express HTTP server with Bearer token auth middleware on the /mcp endpoint. Use stateless StreamableHTTPServerTransport (sessionIdGenerator: undefined) for Railway compatibility. Add /health endpoint for liveness probing.
tool: Express, @modelcontextprotocol/sdk
- 6
Deploy to Railway via Dockerfile (node:20-alpine, multi-stage) and railway.toml with healthcheckPath set to /health. Set all API credentials and MCP_AUTH_SECRET as Railway environment variables.
tool: Railway, Docker
- 7
Connect Claude Desktop via claude_desktop_config.json using mcp-remote with the Railway URL and Authorization Bearer header. Verify by asking Claude to list all client accounts across both platforms.
tool: Claude Desktop, mcp-remote
Expected output
Tools required
Metadata
Published
Mar 18, 2026
Submitted
Mar 18, 2026
Authored by
LRG-TYRPSE