Google Meta Ads GA4
Google Meta Ads GA4 is an MCP server that connects AI assistants to Google Ads, Meta Ads, and Google Analytics 4 through one remote endpoint.
The MCP server is great for paid media teams, agencies, growth marketers, and technical operators who want one chat-based control layer for campaign management, reporting, and cross-platform analysis.
It supports all MCP-compatible client like ChatGPT, Claude Desktop, Claude Code, Cursor, Windsurf, n8n, Codex CLI, Gemini CLI, and Cline.
Connect your ad and analytics accounts once, then use natural-language prompts to inspect performance, create or edit campaigns, work with audiences, run GA4 reports, and compare spend and return across platforms.
Features
- Remote MCP access through a hosted endpoint URL.
- 150+ Google Ads tools for campaigns, ads, keywords, bidding, extensions, analytics, and conversion tracking.
- 80+ Meta Ads tools for campaigns, ad sets, creatives, audiences, lead generation, catalogs, insights, and business assets.
- 20+ GA4 tools for reports, realtime queries, metadata, audiences, attribution settings, property settings, and linked integrations.
- Cross-platform ROAS analysis across Google Ads, Meta Ads, and GA4.
- Side-by-side platform performance comparisons in one chat session.
- Keyword research through Google Ads Keyword Planner data.
- Experiment setup and promotion workflows for Google Ads.
- Lead forms and test leads in Meta Ads.
- Product catalogs and feed operations in Meta Ads.
- GA4 compatibility checks for dimensions and metrics.
- Research workflows through Google search, webpage analysis, image extraction, image search, and landing page analysis.
- OAuth authentication for account connection.
- Stores tokens on the user machine in the described security model.
- Defaults write actions to explicit confirmation.
- Limits access through scoped permissions.
Use Cases
- Pull Google Ads campaign performance for the current month and sort campaigns by ROAS, spend, conversions, or search term quality.
- Create a new Google Search campaign from a plain-English brief that includes budget, targeting, and keyword ideas.
- Pause low-performing campaigns after a review pass in Claude, ChatGPT, or Cursor.
- Add campaign-level negative keywords across multiple Google Ads campaigns after a search term cleanup.
- Generate keyword ideas for new offers through Google Ads volume, CPC, and competition data.
- Compare Google Ads and Meta Ads efficiency for the same date range inside one prompt.
- Audit Meta lead generation campaigns and inspect CPL, creative mix, and audience segments.
- Create Meta lookalike audiences from high-value customer groups.
- Upload Meta image or video assets and attach them to new creatives.
- Review Facebook page posts, identify promotable posts, and turn a post into a boosted campaign.
- Run GA4 real-time reports during launches, promotions, or landing-page tests.
- Compare organic traffic and paid traffic in GA4 across a 30-day or 90-day window.
- Inspect GA4 key events, custom dimensions, and data stream settings before campaign changes.
- Correlate ad spend with GA4 conversion events to find gaps between platform-reported conversions and site-level outcomes.
- Use n8n to trigger repeatable ad reporting or monitoring flows through an MCP client node.
- Use Claude Code or Codex CLI to script repeatable reporting and analysis tasks against live ad accounts.
How To Use It
Table Of Contents
Prepare the MCP endpoint
Use this JSON structure for clients that read an MCP JSON config file:
{
"mcpServers": {
"google-meta-ads-ga4": {
"url": "YOUR_MCP_ENDPOINT_URL"
}
}
}Use a Claude Code CLI command for terminal registration:
claude mcp add google-meta-ads-ga4 --transport sse YOUR_MCP_ENDPOINT_URLUse the endpoint URL in n8n through an MCP client node with Streamable HTTP and bearer auth enabled if you want an authenticated automation path.
Add the server to your MCP client
Claude Desktop
Edit claude_desktop_config.json.
macOS path:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows path:
%APPDATA%\Claude\claude_desktop_config.jsonConfig:
{
"mcpServers": {
"google-meta-ads-ga4": {
"url": "YOUR_MCP_ENDPOINT_URL"
}
}
}ChatGPT
- Open Settings.
- Open Connectors.
- Choose Add custom connector.
- Paste
YOUR_MCP_ENDPOINT_URL. - Set the connector name to
Google Meta Ads GA4. - Save the connector.
Cursor
Edit:
~/.cursor/mcp.jsonAdd:
{
"mcpServers": {
"google-meta-ads-ga4": {
"url": "YOUR_MCP_ENDPOINT_URL"
}
}
}Windsurf
Edit:
~/.codeium/windsurf/mcp_config.jsonAdd:
{
"mcpServers": {
"google-meta-ads-ga4": {
"url": "YOUR_MCP_ENDPOINT_URL"
}
}
}n8n
- Create an MCP Client node.
- Set Server URL to
YOUR_MCP_ENDPOINT_URL. - Set transport to Streamable HTTP if your template expects that mode.
- Turn on bearer authentication if your deployment requires it.
- Connect downstream nodes for scheduled reports, alerts, or analysis output.
Claude Code
Run:
claude mcp add google-meta-ads-ga4 --transport sse YOUR_MCP_ENDPOINT_URLConnect Google and Meta accounts
On first use, you need to authorize your Google and Meta accounts through the MCP connection flow.
Start with read operations
Start with inspection prompts before you touch write actions. Good opening prompts include:
Show me all my Google Ads campaigns and their performance this month
List all active Meta ad campaigns and their spend this week
Show me a realtime report of active users on my website right now
Compare my Google Ads and Meta Ads ROAS for Q1 2026This first pass helps you confirm account scope, date ranges, and naming conventions.
Move into guided write actions
After you verify account access, move into controlled edits such as pausing campaigns, adding negatives, or creating draft campaign structures.
Examples:
Pause all campaigns with ROAS below 2.0
Add negative keywords "free" and "cheap" to all my Search campaigns
Create a lookalike audience based on my top purchasers
Boost my latest page post with a $100 budget targeting US usersTreat write operations as production changes. Review account IDs, budget amounts, targeting scope, and date windows in every prompt.
Use cross-platform prompts for decisions, not just reports
The most useful part of this server is not basic read access. The real advantage is joint analysis across ad delivery and analytics data.
Examples:
Which platform is driving more conversions per dollar spent?
Show me all campaigns across Google and Meta with spend over $1000 this month
Correlate my GA4 conversion events with Google Ads campaign performanceThese prompts fit agency reviews, weekly pacing checks, and channel allocation decisions.
Build automation after manual validation
After your manual prompts return correct results, move common tasks into automation. n8n is the obvious fit for recurring reports, anomaly detection, notification routing, or dashboard prep. Claude Code and Codex CLI fit code-first reporting workflows that save outputs into CSV, HTML, or docs. ([Ryze AI][4])
Apply safe operating rules
- Use read prompts first.
- Use narrow date ranges during early tests.
- Use one account at a time before you query an MCC or business portfolio.
- Use confirmation-heavy prompts for deletions, bulk edits, and budget changes.
- Log important prompt patterns in your internal playbook.
- Keep separate prompts for reporting, diagnosis, and execution.
Available MCP Tools
Google Ads tools
| Tool | Description |
|---|---|
list_accounts | List all accessible Google Ads accounts. |
get_account_info | Get detailed account information. |
get_account_hierarchy | View account hierarchy (MCC structure). |
list_campaigns | List all campaigns with status and metrics. |
get_campaign | Get detailed campaign information. |
create_search_campaign | Create a new Search campaign. |
create_display_campaign | Create a new Display campaign. |
create_shopping_campaign | Create a new Shopping campaign. |
create_pmax_campaign | Create a Performance Max campaign. |
create_demand_gen_campaign | Create a Demand Gen campaign. |
create_app_campaign | Create an App campaign. |
copy_campaign | Duplicate an existing campaign. |
update_campaign | Update campaign settings. |
pause_campaign | Pause a campaign. |
resume_campaign | Resume a paused campaign. |
delete_campaign | Delete a campaign. |
list_ad_groups | List ad groups in a campaign. |
create_ad_group | Create a new ad group. |
update_ad_group | Update ad group settings. |
pause_ad_group | Pause an ad group. |
enable_ad_group | Enable an ad group. |
delete_ad_group | Delete an ad group. |
list_ads | List ads in an ad group. |
get_ad | Get ad details. |
create_responsive_search_ad | Create a Responsive Search Ad. |
create_responsive_display_ad | Create a Responsive Display Ad. |
create_demand_gen_ad | Create a Demand Gen ad. |
update_ad | Update an ad. |
pause_ad | Pause an ad. |
enable_ad | Enable an ad. |
delete_ad | Delete an ad. |
list_keywords | List keywords in an ad group. |
add_keywords | Add keywords to an ad group. |
update_keyword_bid | Update keyword bids. |
pause_keyword | Pause a keyword. |
enable_keyword | Enable a keyword. |
delete_keyword | Delete a keyword. |
keyword_planner | Get keyword ideas with volume data. |
add_negative_keywords | Add negative keywords. |
add_campaign_negative_keyword | Add campaign-level negatives. |
auto_suggest_negative_keywords | Return AI-suggested negative keywords. |
get_search_terms_insights | Return a search terms report. |
add_audience_targeting | Add audience targeting. |
set_demographic_targeting | Set demographic targets. |
add_campaign_location_targeting | Add location targeting. |
search_geo_locations | Search for geo targets. |
list_budgets | List all budgets. |
create_budget | Create a new budget. |
update_budget | Update budget amount. |
list_bidding_strategies | List bidding strategies. |
create_portfolio_bidding_strategy | Create a portfolio strategy. |
set_bid_adjustments | Set bid adjustments. |
get_bid_adjustment_performance | Return bid adjustment performance. |
create_sitelink_extensions | Create sitelink extensions. |
create_callout_extensions | Create callout extensions. |
create_call_extensions | Create call extensions. |
create_image_extensions | Create image extensions. |
create_price_extensions | Create price extensions. |
create_promotion_extensions | Create promotion extensions. |
create_structured_snippet_extensions | Create structured snippets. |
create_lead_form_extensions | Create lead form extensions. |
list_extensions | List all extensions. |
get_campaign_overview | Return campaign performance overview. |
get_keyword_performance | Return keyword performance metrics. |
get_device_performance | Return performance by device. |
get_location_performance | Return performance by location. |
get_audience_performance | Return audience performance. |
get_ad_strength_and_review_status | Return ad strength scores. |
calculate_roas_by_ad | Calculate ROAS per ad. |
compare_ad_performance | Compare ad variants. |
identify_optimization_opportunities | Return AI optimization suggestions. |
run_gaql_query | Run custom GAQL queries. |
create_experiment | Create an A/B test experiment. |
schedule_experiment | Schedule an experiment run. |
promote_experiment | Promote a winning variant. |
create_conversion_action | Create a conversion action. |
upload_click_conversions | Upload offline conversions. |
create_shared_set | Create a shared keyword set. |
create_label | Create an organizational label. |
create_custom_audience | Create a custom audience. |
create_remarketing_action | Create a remarketing tag. |
Meta Ads tools
| Tool | Description |
|---|---|
meta_get_ad_accounts | List all Meta ad accounts. |
meta_get_account_info | Get ad account details. |
meta_get_campaigns | List all campaigns. |
meta_get_campaign_details | Get campaign details. |
meta_create_campaign | Create a new campaign. |
meta_update_campaign | Update campaign settings. |
meta_delete_campaign | Delete a campaign. |
meta_get_adsets | List ad sets. |
meta_get_adset_details | Get ad set details. |
meta_create_adset | Create an ad set. |
meta_update_adset | Update an ad set. |
meta_delete_adset | Delete an ad set. |
meta_get_ads | List ads. |
meta_get_ad_details | Get ad details. |
meta_create_ad | Create an ad. |
meta_update_ad | Update an ad. |
meta_delete_ad | Delete an ad. |
meta_get_ad_creatives | List ad creatives. |
meta_create_ad_creative | Create an ad creative. |
meta_update_ad_creative | Update an ad creative. |
meta_delete_ad_creative | Delete an ad creative. |
meta_upload_ad_image | Upload an ad image. |
meta_upload_ad_video | Upload an ad video. |
meta_batch_upload_ad_images | Batch upload images. |
meta_get_ad_image | Get image details. |
meta_get_ad_previews | Preview ad creatives. |
meta_create_custom_audience | Create a custom audience. |
meta_create_lookalike_audience | Create a lookalike audience. |
meta_estimate_audience_size | Estimate audience reach. |
meta_search_interests | Search interest targets. |
meta_search_behaviors | Search behavior targets. |
meta_search_demographics | Search demographic targets. |
meta_search_geo_locations | Search geo locations. |
meta_get_interest_suggestions | Return interest suggestions. |
meta_get_insights | Get performance insights. |
meta_get_page_insights | Get page-level insights. |
meta_get_page_posts | List page posts. |
meta_get_promotable_posts | Get promotable posts. |
meta_boost_page_post | Boost a page post. |
meta_get_lead_forms | List lead forms. |
meta_get_lead_form_details | Get lead form details. |
meta_get_lead_form_leads | Get form submissions. |
meta_create_lead_form | Create a lead form. |
meta_create_test_lead | Create a test lead. |
meta_get_catalogs | List catalogs. |
meta_get_catalog_products | List products. |
meta_create_catalog_product | Create a product. |
meta_batch_update_catalog_products | Batch update products. |
meta_create_catalog_product_feed | Create a product feed. |
meta_create_catalog_product_set | Create a product set. |
meta_get_business_info | Get business details. |
meta_get_business_users | List business users. |
meta_get_business_pages | List business pages. |
meta_get_business_ad_accounts | List business ad accounts. |
meta_get_business_instagram_accounts | List Instagram accounts. |
meta_get_business_pixels | List pixels. |
GA4 tools
| Tool | Description |
|---|---|
ga_get_account_summaries | List all GA4 accounts and properties. |
ga_get_property_details | Get property configuration. |
ga_run_report | Run a standard report. |
ga_run_pivot_report | Run a pivot table report. |
ga_run_realtime_report | Run a realtime report. |
ga_batch_run_reports | Run multiple reports at once. |
ga_get_metadata | Get available dimensions and metrics. |
ga_check_compatibility | Check dimension and metric compatibility. |
ga_list_audiences | List configured audiences. |
ga_list_key_events | List key events. |
ga_list_data_streams | List data streams. |
ga_list_channel_groups | List channel groups. |
ga_get_custom_dimensions_and_metrics | Return custom dimensions and metrics. |
ga_get_attribution_settings | Return attribution model settings. |
ga_get_enhanced_measurement_settings | Return enhanced measurement config. |
ga_get_data_retention_settings | Return data retention settings. |
ga_get_google_signals_settings | Return Google Signals status. |
ga_list_bigquery_links | List BigQuery export links. |
ga_list_dv360_links | List DV360 integration links. |
ga_list_firebase_links | List Firebase integration links. |
ga_list_search_ads_links | List Search Ads 360 links. |
ga_list_property_annotations | List property annotations. |
Research tools
| Tool | Description |
|---|---|
research_google_search | Search Google for market research. |
research_analyze_webpage | Analyze any webpage. |
research_fetch_images_from_url | Extract images from URLs. |
research_download_and_resize | Download and resize images. |
research_search_stock_images | Search stock image libraries. |
research_get_landing_pages | Analyze landing pages. |
FAQs
Q: Do I need to obtain API keys for Google Ads, Meta Ads, or GA4 before using this server?
A: No. The server uses OAuth 2.1 with PKCE authentication. The first time a tool attempts to access a platform, the client initiates a browser-based authorization flow. You log in with your existing Google or Meta Business account credentials. Tokens store locally on the client machine.
Q: Is this MCP server free to use?
A: Yes. The MCP server endpoint is free. Costs may arise from the AI assistant subscription and from advertising spend managed through the platforms.
Q: Can this server manage Google Ads Manager accounts with multiple child accounts?
A: Yes. The get_account_hierarchy and list_accounts tools expose MCC account structures. Specify the target account ID when calling tools that operate on campaign-level resources.
Q: What campaign types can I create in Google Ads through this server?
A: The server supports creation of Search, Display, Shopping, Performance Max, Demand Gen, Video, and App campaigns. Each campaign type has a dedicated creation tool with type-specific parameter validation.
Q: Can I run custom queries that access metrics not exposed through the named reporting tools?
A: Yes. Google Ads supports custom GAQL queries through the run_gaql_query tool. Meta Ads supports arbitrary Graph API queries through the meta_fetch tool.
Q: Does the server store any of my advertising data or performance metrics?
A: No. The server operates as a stateless proxy. It does not retain request payloads, response data, authentication tokens, or performance metrics.
Latest MCP Servers
Google Meta Ads GA4
Token Savior Recall
Notion
Featured MCP Servers
Notion
Claude Peers
Excalidraw
FAQs
Q: What exactly is the Model Context Protocol (MCP)?
A: MCP is an open standard, like a common language, that lets AI applications (clients) and external data sources or tools (servers) talk to each other. It helps AI models get the context (data, instructions, tools) they need from outside systems to give more accurate and relevant responses. Think of it as a universal adapter for AI connections.
Q: How is MCP different from OpenAI's function calling or plugins?
A: While OpenAI's tools allow models to use specific external functions, MCP is a broader, open standard. It covers not just tool use, but also providing structured data (Resources) and instruction templates (Prompts) as context. Being an open standard means it's not tied to one company's models or platform. OpenAI has even started adopting MCP in its Agents SDK.
Q: Can I use MCP with frameworks like LangChain?
A: Yes, MCP is designed to complement frameworks like LangChain or LlamaIndex. Instead of relying solely on custom connectors within these frameworks, you can use MCP as a standardized bridge to connect to various tools and data sources. There's potential for interoperability, like converting MCP tools into LangChain tools.
Q: Why was MCP created? What problem does it solve?
A: It was created because large language models often lack real-time information and connecting them to external data/tools required custom, complex integrations for each pair. MCP solves this by providing a standard way to connect, reducing development time, complexity, and cost, and enabling better interoperability between different AI models and tools.
Q: Is MCP secure? What are the main risks?
A: Security is a major consideration. While MCP includes principles like user consent and control, risks exist. These include potential server compromises leading to token theft, indirect prompt injection attacks, excessive permissions, context data leakage, session hijacking, and vulnerabilities in server implementations. Implementing robust security measures like OAuth 2.1, TLS, strict permissions, and monitoring is crucial.
Q: Who is behind MCP?
A: MCP was initially developed and open-sourced by Anthropic. However, it's an open standard with active contributions from the community, including companies like Microsoft and VMware Tanzu who maintain official SDKs.



