Skip to main content

MCP server for Walmart Connect Ads APIs (Sponsored Search + Display)

Project description

Walmart Connect Advertising APIs

CI PyPI Python 3.13+ License: MIT

MCP server for Walmart Connect Ads APIs — Sponsored Search and Display.

Exposes a single generic tool (walmart_ads_api) that acts as an authenticated proxy: the AI agent decides which endpoint to call, the server handles RSA-SHA256 signing and auth headers automatically.

Features

  • One tool, any endpoint — no code changes needed when APIs evolve
  • Supports both Sponsored Search and Display API families
  • Multi-region, multi-environment (production + sandbox) via config file
  • Per-request RSA-SHA256 signing with automatic header construction
  • Large responses truncated with full data available via MCP resource URI
  • Bundled API reference docs served as MCP resources so the agent knows endpoint schemas

Requirements

  • Python 3.13+
  • uv
  • Walmart Connect Partner Network credentials (consumer ID, RSA key pair, bearer token)

Quick start

Set up your config (see Configuration), then run the server:

# Run directly with uvx (no clone needed)
npx -y @modelcontextprotocol/inspector uvx mcp-walmart-ads
# Or run from source
git clone https://github.com/alyiox/mcp-walmart-ads.git
cd mcp-walmart-ads
uv sync
npx -y @modelcontextprotocol/inspector uv run mcp-walmart-ads

Configuration

1. Create the config directory and copy the example

mkdir -p ~/.config/mcp-walmart-ads/keys
cp config.example.json ~/.config/mcp-walmart-ads/config.json

2. Edit ~/.config/mcp-walmart-ads/config.json

{
  "response_cache_ttl": 3600,
  "truncate_threshold": 51200,
  "regions": {
    "US": {
      "production": {
        "consumer_id": "your-consumer-id",
        "private_key": "./keys/us-prod.pem",
        "private_key_version": "1",
        "bearer_token": "your-bearer-token",
        "base_urls": {
          "search": "https://developer.api.us.walmart.com/api-proxy/service/WPA/Api/v1",
          "display": "https://developer.api.us.walmart.com/api-proxy/service/display/api/v1"
        }
      },
      "sandbox": {
        "consumer_id": "your-sandbox-consumer-id",
        "private_key": "./keys/us-sandbox.pem",
        "private_key_version": "1",
        "bearer_token": "your-sandbox-bearer-token",
        "base_urls": {
          "search": "https://developer.api.stg.walmart.com/api-proxy/service/WPA/Api/v1",
          "display": "https://developer.api.us.stg.walmart.com/api-proxy/service/display/api/v1"
        }
      }
    }
  }
}

3. Place your RSA private key PEM files in ~/.config/mcp-walmart-ads/keys/

Key paths in the config are resolved relative to the config directory, so ./keys/us-prod.pem resolves to ~/.config/mcp-walmart-ads/keys/us-prod.pem.

Config field Description
response_cache_ttl Seconds to keep truncated responses in memory (default 3600)
truncate_threshold Response byte limit before truncation (default 51200)
regions.<R>.<E>.consumer_id Your Walmart Connect consumer ID
regions.<R>.<E>.private_key Path to RSA private key PEM (relative to config dir or absolute)
regions.<R>.<E>.private_key_version Key version string (default "1")
regions.<R>.<E>.bearer_token OAuth bearer token
regions.<R>.<E>.base_urls.search Sponsored Search API base URL
regions.<R>.<E>.base_urls.display Display API base URL

Tool: walmart_ads_api

Parameters shown in the client UI for user approval before execution:

Parameter Required Description
region yes e.g. US
env yes production or sandbox
ad_type yes search or display
method yes GET, POST, PUT, DELETE
path yes e.g. /api/v1/campaigns
params no Query string parameters (JSON object)
body no JSON request body (for POST/PUT)

API reference docs (MCP resources)

The server bundles API reference docs the agent can read to learn endpoint schemas:

Resource URI Description
wmc://docs/search/campaigns Sponsored Search campaigns
wmc://docs/search/ad-groups Sponsored Search ad groups
wmc://docs/search/keywords Sponsored Search keywords
wmc://docs/search/snapshot-reports Sponsored Search snapshot reports
wmc://docs/display/campaigns Display campaigns
wmc://docs/display/snapshot-reports Display snapshot reports

Truncated API responses are cached in memory and accessible via wmc://responses/{request_id}.

MCP host examples

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "walmart-connect-ads": {
      "command": "uvx",
      "args": ["mcp-walmart-ads"]
    }
  }
}

Claude Code

Add to your Claude Code MCP config:

{
  "mcpServers": {
    "walmart-connect-ads": {
      "command": "uvx",
      "args": ["mcp-walmart-ads"]
    }
  }
}

Codex

[mcp_servers.walmart-connect-ads]
command = "uvx"
args = ["mcp-walmart-ads"]

OpenCode

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "walmart-connect-ads": {
      "type": "local",
      "enabled": true,
      "command": ["uvx", "mcp-walmart-ads"]
    }
  }
}

GitHub Copilot

{
  "inputs": [],
  "servers": {
    "walmart-connect-ads": {
      "type": "stdio",
      "command": "uvx",
      "args": ["mcp-walmart-ads"]
    }
  }
}

Development

uv sync --group dev    # install deps
uv run pytest          # run tests
uv run ruff check .    # lint
uv run ruff format .   # format
uv run pyright         # type check

Contributing

Open issues or PRs. Follow existing style and add tests where appropriate.

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_walmart_ads-0.1.0a0.tar.gz (45.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_walmart_ads-0.1.0a0-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file mcp_walmart_ads-0.1.0a0.tar.gz.

File metadata

  • Download URL: mcp_walmart_ads-0.1.0a0.tar.gz
  • Upload date:
  • Size: 45.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mcp_walmart_ads-0.1.0a0.tar.gz
Algorithm Hash digest
SHA256 294b1901aabc317044034469db1ffd6633fec5cda6adc9a389e7b473529787dd
MD5 44c45abbc6d4c317d6efb43902d64e85
BLAKE2b-256 2fc6e37de7cab80b5ada93dd26d0af3504f8812f492dcba02650b8e2108bfef5

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_walmart_ads-0.1.0a0.tar.gz:

Publisher: ci.yml on alyiox/mcp-walmart-ads

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_walmart_ads-0.1.0a0-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_walmart_ads-0.1.0a0-py3-none-any.whl
Algorithm Hash digest
SHA256 16d442e40d7da9633a99f06cc037fa4dbda01a281d0eb97e86376c3abd2d818f
MD5 951f2ee409e9317566828560c5448bab
BLAKE2b-256 4ef48828b78d5e4ee71eaea6c407cc7fec9d4b3c5f716529eef4588288f064c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_walmart_ads-0.1.0a0-py3-none-any.whl:

Publisher: ci.yml on alyiox/mcp-walmart-ads

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page