Amazon Ads API MCP is an open-source foundation for AI-powered tools and services
1.0K
Excerpt from the repository README on
main. Docker Hub limits descriptions to 25 KB; read the complete README on GitHub.
Build AI-powered advertising applications with the Model Context Protocol (MCP) SDK for Amazon Advertising API
Made with ❤️ + ☕ by Openbridge
MCP registry id (for clients and catalogs that display a stable package name): io.github.KuudoAI/amazon_ads_mcp
This repository is the tool layer of a broader Amazon agent platform. Kuudo gives Amazon agents tools, knowledge, workflows, and a place to work. This repository is the tools.
| Layer | What it provides | Where |
|---|---|---|
| MCP servers | The tools an agent calls: Amazon Ads here, plus Selling Partner and Vendor Central | this repo, and the MCP tool reference |
| Skills | The higher-level workflows: reusable, versioned, multi-step Amazon procedures that compose these tools and wait for a human before anything goes live | Amazon Agent Skills |
| Agent Atlas | The knowledge: indexed Amazon operating knowledge across Ads, Seller Central, and Vendor Central, answered with citations | Amazon Agent Atlas |
| Agent Flow | The place to work: your Amazon data landed in your own cloud, so an agent answers with real figures instead of guessing | Amazon Agent Flow |
Read this repository as one layer of that platform rather than as the whole of it. The operations below are what an agent can call; Skills are what it runs.
Think of MCP (Model Context Protocol) as a translator between an AI model and outside systems (like Amazon Ads). Each MCP tool is like a remote control button that tells the AI how to interact with Amazon Ads. Without MCP tools, the AI would have no idea how to “talk” to Amazon Ads.
With MCP tools:
👉 In short: MCP tools = a safe, well-labeled toolkit that lets AI work with the Amazon Ads API.
The Amazon Ads API MCP SDK is an open-source implementation that provides a robust foundation for creating AI-powered advertising tools, chatbots, and automated services.
Other Amazon Ads MCPs do happy path. They fall apart the moment an agent makes a reasonable mistake and Amazon's Ads API has more reasonable mistakes than almost any other large API surface. The v1 reporting catalog uses a different vocabulary than v3. The docs are scattered across migration generations. The same field can have three plausible names depending on which tutorial an agent or human was trained on.
You know the symptoms even if you've never thought of them as a single problem:
That's not the model being dumb. That's the API surface burning context vague errors trigger thrashing, thrashing fills the window, the window fills and everything useful gets evicted. Anywhere from 4 to 12 round-trips for an agent: wrong field names, wrong body shape, wrong filter operator, wrong date placement, wrong advertiser-account format.
This server is built around a different premise: the error surface is the documentation surface. Every failure is a teaching opportunity, and the server is engineered to make the next attempt smarter than the last one, for the same agent or the next one, without retraining, prompt updates, or memory tricks.
Every failure is cheaper than the last. Every agent learns from the same authoritative source. Every retry has direction. That compounding is what a smart agent solution looks like in practice.
We won't catch every edge case. Amazon's API surface is enormous, the migration history is messy, and real-world failures get more creative than anything anyone can anticipate. What we're committing to is the strategy that errors should teach, that documentation should live in the surfaces agents actually touch, that every wrong move should make the next move easier.
If you hit a failure where the envelope didn't help; vague hint, wrong suggestion, no hint at all, that's exactly the feedback we want. Open an issue, paste the envelope, tell us what you expected. The strategy is only as good as the cases it covers.
Prerequisites: Docker (recommended), Python 3.10+ if you run from source, and Amazon Ads API access (your own developer app or a partner such as Openbridge).
git clone https://github.com/KuudoAI/amazon-ads-mcp.git && cd amazon-ads-mcpcp .env.example .env and add credentials (see Configuration).docker compose up -dhttp://localhost:<PORT>/mcp/ — .env.example sets PORT=9080 (override in .env if needed).OAuth steps, client JSON samples, and a full variable reference: Configuration below, INSTALL.md, and AGENTS.md.
The MCP server mirrors broad coverage of the Amazon Ads API surface. Each enabled package maps to a set of API operations. That includes Campaign Management (Amazon Ads API v1), Exports, Amazon Marketing Cloud, and many more.
Here is a representative list of the various Amazon API services in the MCP:
The Amazon Ads API v1 represents a reimagined approach to the Amazon Ads API, built from the ground up to provide a seamless experience across all Amazon advertising products through a common model. One major benefit of this common model is improved compatibility with code generation tools such as client library generators.
⚠️ Beta Notice: These APIs are currently in beta at Amazon. Features and endpoints may change. Use in production with caution.
| Package Name | Description | Prefix |
|---|---|---|
ads-api-v1-all | Ads API v1 merged ALL surface | allv1_ |
ads-api-v1-sp | Sponsored Products v1 | spv1_ |
ads-api-v1-sb | Sponsored Brands v1 | sbv1_ |
ads-api-v1-dsp | Amazon DSP v1 | dspv1_ |
ads-api-v1-sd | Sponsored Display v1 | sdv1_ |
ads-api-v1-st | Sponsored Television v1 | stv1_ |
ads-api-v1-beta | Ads API v1 merged BETA surface | beta_ |
To activate Ads API v1 packages, add them to your AMAZON_AD_API_PACKAGES environment variable:
# Example: Enable the merged Ads API v1 ALL surface
AMAZON_AD_API_PACKAGES="profiles,ads-api-v1-all"
For more information, see Amazon's Campaign Management Overview.
Everything above is the tool layer: the Amazon Ads operations an agent can call. Kuudo adds three layers around it, and a comparison that only counts operations misses them.
| Capability | An MCP server alone | Kuudo |
|---|---|---|
| Expose Amazon Ads API operations | yes | yes |
| Higher-level, multi-step workflows | no | yes, as Skills |
| Reusable and versioned workflows | no | yes, each Skill carries a version |
| Human approval before anything goes live | no | yes, activation is approval-gated |
| Fork a workflow and change it for your account | no | yes, Skills are a plain open format |
| Indexed Amazon knowledge, answered with citations | no | yes, through Agent Atlas |
| Your own account data, landed in your own cloud | no | yes, through Agent Flow |
| Workflows that span several MCP servers | no | yes, Ads with Selling Partner and Vendor Central |
| Run from any MCP client | varies | yes, Claude, ChatGPT, Cursor, and others |
Kuudo provides higher-level workflows above the MCP tool layer through Skills. A Skill composes these operations into a repeatable Amazon procedure, grounds it with Atlas, and waits for a human before it changes anything.
We recommend running Amazon Ads API MCP with 🐳 Docker. Build the image from this repository (there is no supported docker pull for a third-party registry image here—use the Dockerfile and docker-compose.yaml in the repo).
For bespoke installs such as pip, source checkouts, custom virtualenvs,
non-Docker deployments, or Code Mode extra handling, use the
Installation Guide. The README keeps the Docker quick path
short; INSTALL.md has the full install matrix and verification steps.
git clone https://github.com/KuudoAI/amazon-ads-mcp.git
cd amazon-ads-mcp
Copy the environment template:
cp .env.example .env
Edit .env with your settings (including PORT if you change the default).
Start the server with Docker Compose (builds and tags amazon-ads-mcp:latest per docker-compose.yaml):
docker compose up -d
The server listens on the host port mapped from PORT in .env (.env.example uses 9080).
Check logs:
docker compose logs -f
Stop the server:
docker compose down
For verification, upgrading, developer setup, and non-Docker installation paths, see the Installation Guide.
Operators / self-hosters: follow the steps below and your .env file. Chat users mostly interact via prompts once the server is connected; skim Advertiser Profiles & Regions for profile and region behavior.
Amazon Ads requires that all calls to the API are authorized. If you are not sure what this means, you should read the Amazon docs:
There are three paths for connecting to the API;
If you have your own Amazon Ads API app, or want to create one, the process is detailed below.
Client ID and Client SecretPORT in .env; .env.example uses 9080):
https://your-server.com/auth/callbackhttp://localhost:<PORT>/auth/callback (e.g. http://localhost:9080/auth/callback)Once you have your app secured and approved by Amazon, you will need the client ID and secret:
# Amazon Ads API Credentials (required)
AMAZON_AD_API_CLIENT_ID="your-client-id"
AMAZON_AD_API_CLIENT_SECRET="your-client-secret"
Make sure these are in your .env file. Also, make sure you set your authorization method to direct in the same .env:
AUTH_METHOD=direct
To authorize your connection to Amazon, you need to complete an OAuth workflow as an end user. First, you need to set your region. Authorization occurs at the region level and not setting your region may cause a failure. The server will default to the na region. You can manually set the region with tool set_active_region.
set_active_regionna | eu | feExample prompt: "Set my current region to eu"
To connect to Amazon Ads API, you use an MCP tool to start your OAuth flow
start_oauth_flow
In this example, you are prompted to click the link that will open a browser window and request approval at Amazon.
In the browser window, Amazon will prompt that you approve the request to connect.
If all goes well, you will see a success response. You can close the browser window and go back to your client. If you see something else, attempt the process again and confirm all your configuration elements are correct
To confirm that your MCP server is connected to the Amazon Ads API, check your OAuth status
check_oauth_status
You are ready to start interacting with the Amazon Ads API system!
You can configure your client, like Claude, to use authentication by supplying a valid access token. This is most appropriate for service accounts, long-lived API keys, CI/CD, applications where authentication is managed separately, or other non-interactive authentication methods.
As an Ads API Partner application provider, Openbridge offers a ready-to-go gateway to the Amazon Ads API. You log into your Openbridge account, provision a token, then set your token in your client config (see below).
First, set Openbridge as the auth method:
AUTH_METHOD=openbridge
That is it for the server config. To access the server, you need configure the client, like Claude Desktop, to pass the token directly. (see Example MCP Client: Connect Claude Desktop)
Your Amazon authorizations reside in Openbridge. Your first step in your client is to request your current identities: "List my remote identities". Next, you would tell the MCP server to use one of these identities: "Set my remote identity to <>". You can then ask the MCP to List all of my Amazon Ad profiles linked to that account. If you do not see an advertiser listed, set a different identity.
Kuudo can vend short-lived Amazon Ads credentials from organization-managed Amazon connections. Configure the server with a Kuudo M2M API key:
AUTH_METHOD=kuudo
KUUDO_API_BASE_URL=https://amazon-spapi-dev.kuudo.ai/
KUUDO_API_KEY=sk_xxxxxx
KUUDO_PROVIDER=amazon_ads
The API key requires the amazon-connections:read and amazon-tokens:vend
scopes. Set KUUDO_REMOTE_IDENTITY_ID to select a default connection at
startup, or use the identity tools to list and select a connection before
calling Amazon Ads operations.
Public HTTP deployments must also configure MCP_INBOUND_TOKEN or trusted
proxy HMAC authorization for MCP callers.
To activate specific packages, set a comma-separated package list. For a streamlined default with unified Ads API v1 coverage:
AMAZON_AD_API_PACKAGES="profiles,accounts-ads-accounts,reporting-version-3,amc-workflow,ads-api-v1-all"Here is the list of tool packages available in the server:
profilestest-accountforecastsbrand-stores-managementcampaign-manageaccounts-manager-accountsaccounts-ads-accountsaccounts-portfoliosaccounts-billingaccounts-account-budgetsaudiences-discoveryreporting-version-3brand-benchmarksbrand-metricsstores-analyticssponsored-productssp-suggested-keywordssponsored-brands-v4sponsored-brands-v3sponsored-displaydsp-measurementdsp-advertisersdsp-audiencesdsp-conversionsdsp-target-kpi-recommendationsamazon-attributionaudience-insightspartner-opportunitiestactical-recommendationspersona-buildercreative-assetschange-historydata-provider-dataproducts-metadataproducts-eligibilityunified-pre-moderation-resultsmoderation-resultsamazon-marketing-streamlocationsexports-snapshotsmarketing-mix-modelingreach-forecastingamc-administrationamc-workflowamc-rule-audienceamc-ad-audienceads-api-v1-sp (Beta)ads-api-v1-sb (Beta)ads-api-v1-dsp (Beta)ads-api-v1-sd (Beta)ads-api-v1-st (Beta)ads-api-v1-allads-api-v1-beta (Beta)You will note that some are broken up into smaller groupings. For example, Amazon Marketing Cloud has bundles; amc-ad-audience, amc-administration, amc-rule-audience, and amc-workflow. This is done to create efficiencies and optimizations that reduce context limits in many AI clients.
Amazon Ads MCP tools have prefixes (like cm_ for Campaign Management or amc_ for Amazon Marketing Cloud) to help organize the specific Ads API operation.
Example prefixes:
cm_ → campaign/advertising APIsamc_ → AMC-related APIsdsp_ → DSP APIssd_ → Sponsored Displayams_ → Amazon Marketing Streamspv1_ → Sponsored Products v1 (Beta)sbv1_ → Sponsored Brands v1 (Beta)dspv1_ → Amazon DSP v1 (Beta)sdv1_ → Sponsored Display v1 (Beta)stv1_ → Sponsored Television v1 (Beta)This will translate into collections of tools that align with the API operations that are available:
Campaign Management (cm_)
cm_QueryCampaign — Query campaignscm_CreateCampaign — Create campaigncm_UpdateCampaign — Update campaigncm_DeleteCampaign — Delete campaigncm_QueryAdGroup — Query ad groupsSponsored Products (sp_)
sp_listProductAds — List product adssp_createKeywords — Create keywordssp_updateBids — Update keyword bidssp_getNegativeKeywords — Get negative keywordsAMC Workflows (amc_)
amc_listWorkflows — List AMC workflowsamc_executeWorkflow — Run workflowamc_getWorkflowStatus — Check workflow statusUsers would see tools like:
"List my Amazon Ads campaigns"
→ Claude uses: cm_QueryCampaign
"Create an AMC workflow"
→ Claude uses tools such as amc_executeWorkflow (after discovery; exact names depend on your enabled packages)
"Export my sponsored products ads data"
→ Claude uses: export_createAdExport
Content type
Image
Digest
sha256:cbc7ce0e0…
Size
89.2 MB
Last updated
6 days ago
docker pull openbridge/amazon-ads-mcp