mrkeyoor.com_
Thu 12 Nov 03:25 UTC
LLM Toolsevaluationupdated 12 Nov 2026

google-ads-mcp review

Google Ads MCP Server lets an AI assistant query Google Ads accounts and retrieve information about available reporting fields. It also exposes asset and label changes, so teams evaluating conversational reporting need to choose which tools the assistant can access.

Verdict

Google Ads MCP installed in 30 seconds in our sandbox, but its test command exited 1 with a tool-list mismatch and a separate error. It merits a reporting pilot for analysts who can verify queries and configure account access. Disable asset and label tools first, then check a familiar report before allowing broader access.

We ran it

Lab card: what happened when we ran google-ads-mcpScreenshot of google-ads-mcp (github.com/googleads/google-ads-mcp)
Install✓ · 30s125 packages · 235 MB
Build✓ · 1s
Tests✗ · 34s97 passed · 1 failed · 3 skipped · 1 errors of 99 (pytest)
Known vulns0(pip-audit)
Repo65 files~7,389 lines of source · 0.4 MB · 2 CI workflows · Dockerfile · tests dir

Answers from our run

Does google-ads-mcp build from source?

Dependencies installed in 30 seconds (125 packages), and the build succeeded in 1 seconds. We cloned commit cda8527 into a clean Debian container with 3 CPUs and no project-specific setup.

Do google-ads-mcp's tests pass?

No. The project's own test command finished in 34 seconds and reported 97 passed, 1 failed, 3 skipped, 1 collection error (pytest).

Does google-ads-mcp have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use google-ads-mcp?

Teams requiring a passing repository check before adoption: our test command exited 1 with a tool-list mismatch and a separate setup/collection error.

What are the alternatives to google-ads-mcp?

Google Ads API Client Library for Python, Google Ads API Client Library for PHP. Google Ads MCP installed in 30 seconds in our sandbox, but its test command exited 1 with a tool-list mismatch and a separate error.

SetupN/ADependency installation and build succeeded, but authenticated account setup and an installed reporting workflow were not assessed.
Docs4/5Under the visible documentation rubric, the README gives detailed credential, transport, tool-selection and persistent-storage guidance. These deployment paths were not independently exercised.
CommunityN/ARecent repository activity is visible, but the sampled feed does not establish user adoption, support capacity or response times.
MaturityN/AThe failed repository check and documented safeguards do not establish live-account reliability or correct mutation enforcement.

Who it’s for

Advertising analysts who understand Google Ads reporting and can check the GAQL query behind an answer.
Developers connecting an MCP client to accounts with an established credential and manager-account setup.
Teams prepared to disable asset and label tools for an initial reporting evaluation.

Who it’s NOT for

Teams requiring a passing repository check before adoption: our test command exited 1 with a tool-list mismatch and a separate setup/collection error.
Operators who expect read-only defaults: the README enables all tools unless configuration disables the asset and label categories.
Agencies expecting remote tools to read workstation-local video files: video upload is documented only for local stdio mode.
Organizations whose advertising data cannot reach the selected model provider: the README says the connected agent or LLM receives account data.

Setup reality

Our November 11, 2026 sandbox run at cda8527 installed 125 dependencies in 30 seconds, using 235 MB. The build passed in 1 second. Tests exited 1 after 34 seconds: the summary records 97 passed, 1 failed, 3 skipped and 1 collection/setup error, with a separately recorded total of 99. Pip-audit reported 0 known vulnerabilities.

You still need the Google Ads API enabled and credentials with account access. The documented choices include Application Default Credentials and an OAuth proxy. Manager-account access needs the manager customer ID. Shared HTTP deployment adds client credentials, persistent signing keys and token storage.

The test tail shows a tool-list fixture mismatch and names a token-usage error without its underlying exception. It does not diagnose an environment cause. The recorded image label does not establish actual runtime versions, and the run does not establish successful authenticated reporting or writes.

Disable write tools before a reporting pilot

Google Ads MCP Server enables its asset and label tools by default. If you want an assistant to explain campaign performance, first disable those categories in tools_config.yaml. Otherwise, a reporting evaluation also exposes tools that can change the account. The documented confirmation workflow adds a check before writes, but choosing the available tools is still your responsibility.

The server connects an AI client to the Google Ads API through Model Context Protocol, or MCP. Its search tool accepts GAQL, Google's advertising query language. Metadata and discovery resources help an agent find the fields it needs, while customer discovery identifies accounts the authenticated user can access. This is useful for an analyst who already understands Google Ads and wants a conversational route into account data. It doesn't remove the need to check the query behind an answer.

What happened when we ran it

Our sandbox installed commit cda8527 in 30 seconds on November 11, 2026, recording 125 dependencies and 235 MB on disk. The build succeeded in 1 second. The checkout contained 65 files, approximately 7,389 source lines and 0.4 MB. Pip-audit reported 0 known vulnerabilities in that run, which does not establish the server's security or the safety of its account permissions.

The test command exited 1 after 34 seconds. The supplied pytest summary reports 97 passed, 1 failed, 3 skipped and 1 collection/setup error, with a separately recorded total of 99. Those categories don't reconcile into a unique total, so we won't present a passing percentage. Pytest's own tail says 27.52 seconds, measuring a different scope from the recorded step duration.

The named failure is test_tools_list_matches_golden: the returned tools did not match the expected fixture. The visible diff removes the description for the resource parameter. The tail also names tests/smoke/test_token_usage.py as an error, without showing its underlying exception. That supports a finding of an unsuccessful test run. It does not establish a broken Google Ads connection or identify a package or environment cause.

Our scan found two CI workflow files, a Dockerfile and a tests directory. The recorded sandbox configuration lists 3 CPUs, 8 GB RAM and image ghcr.io/astral-sh/uv:python3.12-bookworm. The image label alone doesn't establish the runtime versions. These repository checks provide no authenticated campaign-query result, mutation result or account-level accuracy measurement.

Account access takes more work than package installation

The README requires an enabled Google Ads API and credentials belonging to a user with account access. Its Application Default Credentials route needs the advertising scope. Access through a manager account also needs the manager customer ID, supplied through configuration or a tool parameter. A successful package install settles none of those permissions.

For a shared HTTP service, the documented OAuth proxy needs a Google Cloud client ID and secret. Cloud Run guidance adds persistent signing keys and token storage across instances. Firestore storage requires its extra package, a database and service-account permissions. The README also warns that expired entries need periodic cleanup. That's ongoing service work, even if the initial dependency step is short.

Transport affects capabilities too. Local video upload is supported only in standard-input/output mode, and remote image creation uses base64 data rather than a local image path. An agency expecting one remote endpoint to accept every workstation's local files should check that boundary before choosing this deployment.

Confirmation protects a proposed write, not the reporting boundary

The README documents a two-step workflow for asset and label changes. A proposal validates the operation and returns a checksum tied to its account and parameters. Confirmation requires matching inputs and that checksum after user approval. We did not verify this workflow against a live account, so treat it as documented behavior rather than a safety guarantee established by our run.

For strictly read-only deployments, the README says to set labels: false and assets: false. That is the sensible starting configuration for performance questions. Teams needing campaign, bidding or budget management should compare their required actions with the actual tool list instead of assuming that access to the Ads API exposes every operation.

Data access deserves its own decision. The README explicitly says the connected agent or language model receives your data. Running the MCP process on your own machine therefore does not establish that advertising data stays local. Choose the connected model and its data policy before letting an assistant retrieve customer account information.

Recent maintenance doesn't resolve the failed check

GitHub records the latest push on November 10, 2026. Release v0.0.6, published November 2, describes asset and label management with the proposal-and-confirmation flow. The recent activity feed includes a merged metadata-error change and an open tool-auditability proposal. Together these show ongoing maintenance, while neither establishes that our recorded test failure has been fixed.

The API reports 14 open issues and PRs combined. That queue is not a count of unresolved defects or evidence of support speed. Community capacity remains unassessed here.

Use a direct client when the question is already fixed

The Google Ads API Client Library for Python provides direct API integration. Prefer it for a recurring report whose query and output are already specified: writing that application avoids making an agent choose the reporting logic. The Google Ads API Client Library for PHP is the corresponding candidate for a PHP application. Neither is a drop-in conversational server, and we made no comparative performance measurement.

The documentation rating uses 1 for missing operational guidance, 3 for a usable path with unresolved gaps and 5 for independently verified coverage. It earns 4 for detailed credential, transport and storage instructions, with those paths still unverified. Other dimensions remain unassessed where repository checks cannot answer the deployment question.

Before connecting a production account, disable asset and label tools, pin the chosen revision and compare one familiar report with a trusted account view. Keep the exact query and customer ID beside the answer. Expand access only after that comparison gives you a reason to trust the workflow.

Alternatives

ProjectWhat it isPick it when
Google Ads API Client Library for PythonThe Google Ads API Client Library for Python provides direct API integration.Pick this instead when a Python application should execute a specified reporting query without an agent selecting the logic.
Google Ads API Client Library for PHPThe Google Ads API Client Library for PHP is the corresponding candidate for a PHP application.Pick this instead when the integration belongs in an existing PHP service with explicit reporting logic.

What people are saying

  1. [github-trending] googleads/google-ads-mcp

Sources

  1. Google Ads MCP README
  2. Google Ads MCP v0.0.6 release
  3. Google Ads MCP repository facts
  4. Google Ads MCP recent issue and PR activity
  5. Google Ads API Client Library for Python
  6. Google Ads API Client Library for PHP

More llm tools reviews

harness2 · mcp-server-guide · memorilla · 12-factor-agents · gemini-api-cli · MCPJungle · the whole board →