mcpField
W
Walmart Marketplace APIs (deprecated)

Walmart Marketplace APIs (deprecated)

本地服务
github.com/alyiox商业与营销24 周前更新

关于 Walmart Marketplace APIs (deprecated)

此 MCP 服务已弃用,涵盖 Walmart Connect Ads、Sam's Club Sponsored Ads 和 Walmart Marketplace API。其后继项目为 `io.github.alyiox/mcp-walmart-ads`,支持端点发现、认证 API 调用和文件下载。

主要功能

  1. 01已弃用,并标明后继项目
  2. 02搜索并筛选 API 操作
  3. 03查看操作及关联架构
  4. 04调用经过认证的 API 端点
  5. 05下载报告等文件

适用场景

  1. 01迁移至 `io.github.alyiox/mcp-walmart-ads`
  2. 02查找订单或 Feed 操作
  3. 03获取报告或快照文件

MCP 相关

向 MCP 客户端提供 API 操作发现、端点架构查看、认证端点调用和文件下载工具。服务端负责处理各平台的签名与令牌。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"alyiox-mcp-walmart-marketplace": {
"command": "uvx",
"args": [
"mcp-walmart-marketplace"
]
}
}
}
启动命令uvx mcp-walmart-marketplace

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-walmart-marketplace0.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Walmart 和 Sam's Club API

CI PyPI Python 3.13+ License: MIT

一个 MCP 服务,通过统一的工具接口提供 Walmart Inc. 三类 API:

平台API身份验证
walmart:ads — Walmart ConnectSponsored Products、DisplayRSA-SHA256 签名 + bearer token
walmart:marketplace — Walmart Marketplace28 个领域(订单、商品、feeds、报告等)OAuth2 client_credentials
samsclub:ads — Sam's ClubSponsored ProductsRSA-SHA256 签名 + bearer token

四个工具,覆盖 31 个 API 和 424 个操作——包括发现、通用代理和下载器。Agent 可在捆绑的 OpenAPI 规范中查找端点并调用它们;服务负责签名、获取令牌并构建标头。

walmart:ads:sponsored-products:SBAProfileUpdateV2
└─ retailer ─┘└ line ┘└─── api name ───┘└── operationId ──┘
   └────────── platform ─────────┘  credentials attach here

仅凭操作 ID 即可确定主机和身份验证模式。匹配的 <line>:<name> 后缀表示同一接口也适用于其他零售商——90 个操作 ID 中有 13 个共享。

要求

  • Python 3.13+
  • 你所使用平台的凭据。只配置需要的平台——未配置的平台会被视为未配置状态;即使完全没有凭据,也可以使用发现功能。
    • Walmart Connect / Sam's Club — consumer ID、RSA 密钥对、bearer token
    • Walmart Marketplace — client ID 和 secret,以及它们服务的广告主(卖家资料)ID

快速开始

设置配置(参见配置),然后运行服务:

# Run directly with uvx (no clone needed)
npx -y @modelcontextprotocol/inspector@latest 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@latest uv run mcp-walmart-ads

配置

config.json 必须位于 ~/.config/mcp-walmart-ads/config.json。服务只会在启动时读取一次,因此修正文件后必须重启。

Windows: ~ 对应 %USERPROFILE%(通常为 C:\Users\<you>),完整路径为 %USERPROFILE%\.config\mcp-walmart-ads\config.json。

创建目录并复制示例:

# Unix-like (macOS, Linux, WSL, …)
mkdir -p ~/.config/mcp-walmart-ads/keys/walmart-ads
cp config.example.json ~/.config/mcp-walmart-ads/config.json
# Windows (PowerShell)
New-Item -ItemType Directory -Force "$env:USERPROFILE\.config\mcp-walmart-ads\keys\walmart-ads"
Copy-Item config.example.json "$env:USERPROFILE\.config\mcp-walmart-ads\config.json"
结构
platforms.<platform>.regions.<region>.<environment> = <auth block>

<platform> 是 API ID 开头的两段式前缀,因此配置键就是你作为 platform 工具参数传入的值,无需翻译。

认证块的结构遵循平台的认证模型。每个平台只有一种结构,因此无需判别字段。

签名平台(walmart:ads、samsclub:ads):

{
  "platforms": {
    "walmart:ads": {
      "regions": {
        "us": {
          "production": {
            "consumer_id": "your-consumer-id",
            "private_key": "./keys/walmart-ads/us-prod.pem",
            "private_key_version": "1",
            "bearer_token": "your-bearer-token",
            "base_urls": {
              "sponsored-products": "https://developer.api.walmart.com/api-proxy/service/WPA/Api/v1",
              "display": "https://developer.api.walmart.com/api-proxy/service/display/api/v1"
            }
          }
        }
      }
    }
  }
}
字段说明
consumer_idPartner Network 消费者 ID
private_keyRSA 私钥(PEM)的路径。相对路径以配置目录为基准解析
private_key_version密钥版本字符串(默认为 "1")
bearer_tokenOAuth bearer token
base_urls.<api>平台发现范围内每个 API 对应一个。键可以是简写(sponsored-products),也可以是完整限定名(walmart:ads:sponsored-products);也允许为通过原始方法和路径访问的辅助规范添加额外键

此处的环境名称可以自由设置——Walmart 可能只为某个租户提供 production,也可能提供 production 和 staging。

OAuth2 平台(walmart:marketplace):

{
  "platforms": {
    "walmart:marketplace": {
      "regions": {
        "us": {
          "production": {
            "credentials": [
              {
                "client_id": "your-client-id",
                "client_secret": "your-client-secret",
                "advertisers": [
                  { "id": 7060158, "partner_id": "10001234" },
                  { "id": 7060159 }
                ]
              }
            ]
          }
        }
      }
    }
  }
}

environment 必须是 production 或 sandbox;基础 URL 由服务固定,不在文件中提供。广告主 ID 嵌套在为其提供服务的凭据下,因此密钥只会出现一次,也不可能在结构上出现无效的广告主引用。partner_id 按卖家设置,因为两个 payments 操作需要将其作为 WM_PARTNER_ID;全零值会被视为缺失,因为生成的配置会为没有该值的卖家写入全零值,而 scripts/backfill_partner_ids.py 会从 Walmart 补齐缺失值。

区域是命名空间,而非路由——每个 walmart:marketplace 区域都会访问相同的主机。设置这一层级是因为广告主 ID 仅在区域内唯一。

拆分配置

已填充的 walmart:marketplace 块会包含数十 KB 的凭据,占此处文件内容的 88%;编辑时多出一个逗号就会导致所有平台不可用:配置解析失败会先于逐个平台的验证。因此,平台可以放在 config.d/ 下的独立文件中,并与基础配置合并:

~/.config/mcp-walmart-ads/
├── config.json                  # server-wide settings, and any platforms you like
├── config.d/
│   ├── walmart-marketplace.json # only a "platforms" object
│   └── samsclub-ads.json
└── keys/
  • 独立配置文件必须只声明 platforms;服务器级设置仍应放在 config.json 中。
  • 如果在两个文件中声明了同一平台,必须报错并指出这两个文件,绝不能静默决定优先级。
  • 只会读取 config.d/ 目录下的 *.json 文件,因此会忽略 .bak 和编辑器交换文件。
  • 如果某个文件解析失败,只影响该文件中的平台;其余平台仍可正常工作。
  • 无论如何,相对 private_key 路径都以 config.json 所在目录为基准解析,因此将平台移入 config.d/ 无需修改路径。
  • 没有 config.d/ 目录时,行为不会改变。

某个平台的配置块格式错误,不得阻止其他平台加载。读取 wmt://platforms,即可查看哪些平台已加载,以及它们声明了哪些区域和环境:加载失败的平台没有区域;读取其某个环境时会返回加载器自身的错误信息,指出涉及的文件和字段,并说明修复后需要重启。

顶层选项
字段默认值说明
response_cache_ttl3600截断的响应正文或下载文件在其资源 URI 中保持可读的秒数
truncate_threshold2048响应被截断为预览前以内联形式返回的字节数
spec_refresh{"auto": true, "interval": 7}后台规范刷新。auto 用于开启或关闭刷新任务;interval 为刷新间隔天数,可以是小数
市场 → 租户(wap-tenant-id)

对于非美国的 walmart:ads 市场(WMT_CA、WMT_MX、WBD_OD 等),在 call_endpoint 和 download_file 中传入 tenant。美国市场和 walmart:marketplace 则省略此参数。

工具

list_endpoints

列出所有 API 中的操作,并支持可选筛选条件。

ParameterNotes
query不区分大小写的子字符串,可匹配操作 ID、路径或摘要
api限定为一个 API,例如 walmart:marketplace:order-management
platform限定为一个平台 — walmart:ads、walmart:marketplace、samsclub:ads(架构枚举)
tag按 OpenAPI 标签筛选
method按 HTTP 方法筛选 — GET、POST、PUT、PATCH、DELETE(架构枚举)

返回的操作 ID 带有完整限定符(api:operationId),可直接传给 describe_endpoint 或 call_endpoint。

describe_endpoint

返回一个操作及其可访问的所有 components.schemas 条目,因此无需完整规范即可构建请求正文。省略由服务端管理的身份验证和 QoS 标头。

ParameterNotes
operation_id带完整限定符(api:operationId),或在无歧义时使用不带限定符的 ID
api用于解析不带限定符的 ID 的 API,例如 walmart:ads:sponsored-products
call_endpoint

向任何已配置的平台发送经过身份验证的请求。签名、按凭据缓存并通过 single-flight 刷新获取令牌,以及在收到 401 后重试一次,均由服务端处理。

ParameterNotes
region、environment必填。来源:配置
operation_id带或不带限定符均可。用于解析 API、平台、方法、路径和必需标头
api使用原始 method + path 时必填;否则根据 operation_id 推断。支持两个辅助 walmart:ads 规范
method、path原始路由,可访问规范中未包含的 alpha/beta/未发布端点
path_params路径中 {placeholders} 的值
params、body查询字符串和 JSON 正文
file_path以 multipart/form-data 发送文件 — Marketplace 信息流上传。与 feedType 查询参数搭配使用
advertiser_id在 walmart:marketplace 上必须提供,用于选择凭据。在广告平台上可选,提供后会作为 X-Advertiser-ID 发送
tenant非美国 walmart:ads 区域的 WAP 租户

如果响应大于 truncate_threshold,则会以内联预览形式返回;完整正文位于 wmt://responses/{request_id},可复现的 cURL 命令位于 wmt://curl/{request_id} — bearer 令牌、访问令牌和签名会替换为占位符。

download_file

从经过身份验证的端点下载报告、标签或快照。提供完整的 url(例如显示快照轮询返回的 details URL),或提供 operation_id,或提供 api 以及 method + path。仅当 url 不带限定符时才需要 platform。

提供 dest_path 时,字节数据会写入该路径。未提供时,若文件经过 gzip 压缩,则会先解压再缓存,结果中会包含 cached_at — 未提供 dest_path 的二进制负载会要求提供一个路径。跟随重定向时,如果 Location 为相对地址或同主机地址,则保留身份验证标头;跨主机时则移除凭据。结果中会包含表示跳转路径的 urls。

规范

此 wheel 中包含 33 份 OpenAPI 文档。刷新时会将更新后的副本写入 ~/.cache/mcp-walmart-ads/specs/;读取时此目录的优先级高于捆绑包。运行时绝不会写入捆绑包,因此当缓存损坏或缺失时,它仍可作为回退基础。

它们的来源

Walmart 不发布 OpenAPI 文件,但每个 ReadMe 参考页面都会在其 HTML 中填充文档的注册表 UUID,而 https://dash.readme.com/api/v1/api-registry/<uuid> 无需身份验证即可提供完整规范。这涵盖 Walmart Connect 和全部 28 个 Marketplace 域名。Sam's Club 两者都不发布,因此其规范根据开发者文档手工编写:scripts/build_samsclub_spec.py 会根据这些文档重新生成一个候选版本;文档发生变化时,定时运行的 spec drift 工作流会创建 PR,作为人工审核关卡。候选版本不会发布,也不会在运行时加载。

文档会按照上游提供的原样存储,因此刷新时的差异会准确显示发生了哪些变化。加载时会剥除过大的内联示例和 x-readme 元数据,而不是在磁盘上剥除,这样无需重新下载即可调整精简方式。

保持最新

规范会在后台刷新:启动时刷新一次,之后每隔 spec_refresh.interval 天刷新一次(默认为 7 天)。将 auto 设为 false 可停止定期刷新;该间隔会保留,供你重新启用时使用,手动刷新仍然可用。

如果你已遇到捆绑规范中没有的端点,现在即可刷新:

# Installed with uvx (no clone)
uvx mcp-walmart-ads --refresh

# Or from a source checkout
uv run mcp-walmart-ads --refresh

两种形式都会忽略间隔设置,刷新所有规范并写入同一用户缓存;每份文档会打印一行状态:written、unchanged 或 error。

这里有意不提供用于此操作的工具。在会话中,无法区分过时规范和最新规范——它只会缺少某个端点——因此,如果让 Agent 来决定,它要么永远不刷新,要么在遇到无关故障后凭直觉刷新。触发刷新应当发生在会话之外。

文档必须至少包含一个操作才能安装,这样上游即使以 200 状态返回错误正文,也不会污染缓存;内容完全相同的文档则不会被改动。无法加载的缓存文件会被丢弃,读取操作将回退到捆绑版本。各服务通过缓存根目录中的 spec-state.json 协调,该文件记录每份规范最近一次尝试的时间,并持有租约,确保同一时间只有一个进程执行刷新——每个客户端会话都会运行自己的服务进程;没有该机制时,每个进程都会重新下载全部 33 份规范。

重新构建捆绑版本

这是维护者执行的步骤,与 --refresh 不同:后者更新你的缓存,此步骤更新随 wheel 一同发布的副本。

# Registry-sourced specs only, by default
uv run python scripts/fetch_specs.py
uv run python scripts/fetch_specs.py walmart:ads:sponsored-products walmart:marketplace:order-management

# Regenerate the Sam's Club candidate spec for review
uv run --group spec-build python scripts/build_samsclub_spec.py

MCP 资源

资源 URI描述
wmt://platforms所有平台、各自的身份验证模式,以及平台声明的区域和环境
wmt://platforms/{platform}/apis该平台的 api id
wmt://platforms/{platform}/apis/{name}单个 api:标题、版本、操作数量,以及带有各自数量的标签——这些是合法的 list_endpoints(tag=…) 值
wmt://platforms/walmart:marketplace/regions/{region}/{environment}/advertisers广告主 id 与其 Walmart Partner ID 的映射(未设置时为 null)
wmt://platforms/{platform}/regions/{region}/{environment}/hostsapi id 与调用实际到达的基础 URL 的映射;如果服务拥有所有 api 的主机,则为 *
wmt://responses/{request_id}被截断的响应或缓存下载的完整正文(保存在内存中,TTL 由配置决定)
wmt://curl/{request_id}先前请求的可复现 cURL 命令,凭据已替换为占位符

MCP 宿主示例

Cursor

添加到 .cursor/mcp.json:

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

添加到 Claude Code MCP 配置中:

{
  "mcpServers": {
    "walmart": {
      "command": "uvx",
      "args": ["mcp-walmart-ads"]
    }
  }
}
Codex
[mcp_servers.walmart]
command = "uvx"
args = ["mcp-walmart-ads"]
OpenCode
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "walmart": {
      "type": "local",
      "enabled": true,
      "command": ["uvx", "mcp-walmart-ads"]
    }
  }
}
GitHub Copilot
{
  "inputs": [],
  "servers": {
    "walmart": {
      "type": "stdio",
      "command": "uvx",
      "args": ["mcp-walmart-ads"]
    }
  }
}

开发

uv sync --group dev
uv run ruff check src/ tests/ scripts/
uv run ruff format --check src/ tests/ scripts/
uv run pyright
uv run pytest tests/ -v

贡献

欢迎提交问题和拉取请求。请保持更改聚焦;ruff check、ruff format --check、pyright 和 pytest 必须全部通过。

许可证

LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。