文档
接入、用法与排查。从开通到第一次调用,三条路任选一条;装完记得重启 agent 会话。
快速接入
读 https://mcp.sp-api.net/llms.txt ,按里面的说明帮我接入 Amazon API 规范服务
它会自己判断你在用哪个客户端、把两个 endpoint 都装上、调 link_account 拿密钥,并提示你重启会话。
背后是 llms.txt:一份专门写给模型看的接入说明,里面同时列了
sp-api 与 ads-api 两个 endpoint,以及各家客户端的配置写法。
三条路,任选一条
-
一句话给 AI(默认)
把上面那句话发给 agent。它会调
link_account给你一个链接,手机微信扫一下就有账号、 有积分、有密钥,它自己写进配置,你什么都不用复制。 -
跑安装器
python3 amcp-install.py不带--key时,会直接在终端里画一张二维码, 扫完自动领密钥、写配置、装执行器、自检。安装器在控制台 · 接入页。 - 手动配置 到登录页扫码开通,再到控制台 · 密钥新建一把, 然后按下面客户端配置里你在用的那个客户端,整段复制。
两个 endpoint
SP-API 与 Ads 完全独立,各自一套工具集,可以只装一个。额度共享同一个池。
| endpoint | 地址 | 工具 | 内容 |
|---|---|---|---|
| sp-api | https://mcp.sp-api.net/mcp/sp-api | 13 | 订单、库存、商品、报告、Feed、通知——66 个 API 的权威签名与限流。 |
| ads-api | https://mcp.sp-api.net/mcp/ads-api | 14 | SP / SB / SD / DSP / AMC——72 个规范,外加 269 个 Amazon 官方真实请求体。 |
传输是普通的 Streamable HTTP:一次 POST,一次 JSON 响应。没有长连接、没有 SSE 依赖、没有
initialize 握手。详见协议版本。
客户端配置
每一段都带 Authorization——服务端要求鉴权,不带密钥的配置装上去只会 401。
片段里的 Bearer sk_live_粘贴你自己的密钥 是占位符,必须换成你自己的,照抄会 401。
Claude Code
最省事的一条路:命令行直接加,不用编辑任何 JSON。
claude mcp add --transport http amazon-spapi https://mcp.sp-api.net/mcp/sp-api \
--header "Authorization: Bearer sk_live_粘贴你自己的密钥"
claude mcp add --transport http amazon-ads https://mcp.sp-api.net/mcp/ads-api \
--header "Authorization: Bearer sk_live_粘贴你自己的密钥"
验证是否装上:claude mcp list 应该能看到 amazon-spapi 与 amazon-ads,状态 connected。
~/.claude/skills/
改完配置重启会话才生效
ChatGPT / Codex CLI
写进 ~/.codex/config.toml。ChatGPT 桌面端的 Codex 与 Codex CLI 共用这份配置。
# ~/.codex/config.toml
[mcp_servers.amazon-spapi]
url = "https://mcp.sp-api.net/mcp/sp-api"
http_headers = { Authorization = "Bearer sk_live_粘贴你自己的密钥" }
[mcp_servers.amazon-ads]
url = "https://mcp.sp-api.net/mcp/ads-api"
http_headers = { Authorization = "Bearer sk_live_粘贴你自己的密钥" }
~/.agents/skills/
改完配置重启会话才生效
WorkBuddy
在设置里找到 MCP Servers,粘贴下面这段标准 mcpServers 结构即可。
mcpServers 结构给出的通用写法;正式格式确认后本节会更新。
如果你的 WorkBuddy 版本里找不到对应入口,可以先用「其他客户端」的通用 HTTP 接入方式。
// WorkBuddy 设置 → MCP Servers(标准 mcpServers 结构,HTTP 传输)
{
"mcpServers": {
"amazon-spapi": {
"type": "http",
"url": "https://mcp.sp-api.net/mcp/sp-api",
"headers": { "Authorization": "Bearer sk_live_粘贴你自己的密钥" }
},
"amazon-ads": {
"type": "http",
"url": "https://mcp.sp-api.net/mcp/ads-api",
"headers": { "Authorization": "Bearer sk_live_粘贴你自己的密钥" }
}
}
}
~/.agents/skills/
改完配置重启会话才生效
Cursor
写进 ~/.cursor/mcp.json(全局)或项目里的 .cursor/mcp.json。
// ~/.cursor/mcp.json
{
"mcpServers": {
"amazon-spapi": { "url": "https://mcp.sp-api.net/mcp/sp-api",
"headers": { "Authorization": "Bearer sk_live_粘贴你自己的密钥" } },
"amazon-ads": { "url": "https://mcp.sp-api.net/mcp/ads-api",
"headers": { "Authorization": "Bearer sk_live_粘贴你自己的密钥" } }
}
}
~/.agents/skills/
改完配置重启会话才生效
VS Code
写进工作区的 .vscode/mcp.json,Copilot Chat 的 agent 模式会自动加载。
// .vscode/mcp.json
{
"servers": {
"amazon-spapi": { "type": "http", "url": "https://mcp.sp-api.net/mcp/sp-api",
"headers": { "Authorization": "Bearer sk_live_粘贴你自己的密钥" } },
"amazon-ads": { "type": "http", "url": "https://mcp.sp-api.net/mcp/ads-api",
"headers": { "Authorization": "Bearer sk_live_粘贴你自己的密钥" } }
}
}
~/.agents/skills/
改完配置重启会话才生效
其他客户端
任何支持 Streamable HTTP 传输的 MCP 客户端都能直接填 URL。
endpoint : https://mcp.sp-api.net/mcp/sp-api
https://mcp.sp-api.net/mcp/ads-api
transport: Streamable HTTP(POST,单次 JSON 响应)
protocol : 2026-07-28 / 2025-11-25 / 2025-06-18 / 2025-03-26 均支持
auth : 必填 Authorization: Bearer <密钥>
没有密钥?让 agent 调 link_account,或到 https://mcp.sp-api.net/console/keys 生成
协议是普通的 Streamable HTTP:一次 POST,一次 JSON 响应。没有长连接、没有 SSE 依赖、
没有 initialize 握手。没有密钥?让 agent 调一次 link_account,或到
控制台 · 密钥生成。
~/.agents/skills/
改完配置重启会话才生效
需要密钥时的变体
密钥只在配置里出现一次,之后每次调用都由客户端自动带上。以 Claude Code 为例,
--header 那一行就是密钥的位置:
claude mcp add --transport http amazon-spapi https://mcp.sp-api.net/mcp/sp-api \
--header "Authorization: Bearer sk_live_粘贴你自己的密钥"
三步用法
规范不是给人翻的,是给模型查的。370 + 789 个 operation 绝不能一对一暴露成工具——模型选不过来也选不准。 所以默认入口只有一个:一句话问清,不够再展开,最后带参数拿可执行请求。
- lookup —— 一次问清(默认入口)
spapi_lookup "拉上周的订单",一句话(中文可)或直接给 operationId:一次返回限流、废弃与替代、必填参数、翻页、是否需要 RDT、可跑的 curl,外加 5 个候选,≤3.5KB。Ads 侧ads_lookup还会给出该接口要求的鉴权头体系与准确头名、带版本的 Content-Type / Accept。 - op / schema / doc / example —— 需要细节时再展开要完整 schema、官方文档正文或 Amazon 官方请求示例时,再调
spapi_op(brief=true取精简签名,refs=[…]一次最多 12 个)、spapi_schema、spapi_doc/ads_example。 - lookup + params —— 拿可执行请求带上
params(Ads 再带profile_id/account_id)再调一次 lookup,或调spapi_request/ads_request:返回解析好的 URL、query、头、body 骨架、翻页方式、缺失的必填项,外加一条能直接跑的 curl。
第四步在你自己的机器上:把请求描述交给本地执行器,或者直接复制那条 curl。
凭证在这一步才出现,且只出现在你的机器上。
旧的 spapi_search / ads_search 只在 lookup 找不到时用。
一段真实对话
spapi_lookup 从规范里带出来的
rateLimit.note。真要拉整月历史,spapi_plan 会按限流算出要跑多久,
直接给出 route(direct / direct-with-care / reports)。
规范服务的增值不只是给数字,还给出「该换个 API」的判断。
工具清单
两个 endpoint 各自一套。带 ★ 的是一步到位的入口:先用它,不够再展开。
get_executor、link_account、get_skill 两边都有,不消耗积分。
SP-API(13 个工具)
| 工具 | 做什么 |
|---|---|
| spapi_lookup | ★ 一句话(中文可)或 operationId → 一次返回限流、废弃与替代、必填参数、翻页、是否需要 RDT、可跑的 curl、5 个候选;带 params 即完整请求描述。把 search → op → request 三步压成一步,≤3.5KB。 |
| spapi_search | 全域检索:operation / schema / doc / api / notification / report 一次搜完,返回精简候选行。lookup 找不到时再用。 |
| spapi_op | 单个 operation 的完整权威定义:method、path、全部参数(位置 / 必填 / 类型)、请求与响应 schema、限流、是否废弃。brief=true 只取精简签名;refs=[…] 批量取,一次最多 12 个。 |
| spapi_schema | 取 schema 定义并内联 $ref:字段、类型、必填、枚举、说明。 |
| spapi_doc | 读取 Amazon 官方开发者文档正文。 |
| spapi_request | 生成可直接执行的请求描述:URL、query、头、body 骨架、限流、翻页方式,外加一条 curl。lookup 带 params 时返回的是同一份。 |
| spapi_plan | ★ ref + 页数 / 条数 → 按限流算出要跑多久,直接给 route(direct / direct-with-care / reports);compare=[旧, 新] 做迁移时的限流对照。 |
| spapi_list | 按类目浏览而不是检索:列全部 API、按条件列 operation / schema / doc。 |
| spapi_changelog | Amazon 官方 changelog 条目,最新在前。用于回答「这个月改了什么」。网页版见变更记录。 |
| spapi_status | 规范来源与新鲜度:各类记录数、更新时间、上游版本。 |
| get_executor | 返回本地执行器的文件清单与内容,由客户端写入本地。 |
| link_account | 唯一免鉴权的工具:返回一个绑定链接,手机扫码后再调一次即取回密钥。它就是用来拿密钥的。 |
| get_skill | 配套 Skill 的文件清单与内容,由客户端写入本地。不带参数列出全部可用 Skill;带 name 返回该 Skill 的文件。Skill 是「这类活按什么顺序干」的操作手册,本身不含 Amazon 知识。目录见 Skills。 |
Ads API(14 个工具)
| 工具 | 做什么 |
|---|---|
| ads_lookup | ★ 一句话或 operationId → 该接口要求的鉴权头体系与准确头名、带版本的 Content-Type / Accept、必填项、curl、候选;带 profile_id / account_id / params 即完整请求描述。 |
| ads_search | 全域检索:789 个 operation、7,206 个 schema、768 页文档、269 个官方请求示例。lookup 找不到时再用。 |
| ads_operation | 检索 operation 列表并返回精简行:operationId、method、path、所属规范、tag、响应码、摘要。 |
| ads_show | 单个 operation 的完整定义,直接读自 OpenAPI 规范:合并后的全部参数、准确的鉴权头组合、媒体类型。 |
| ads_schema | schema 定义:名称、所属规范、类型、必填字段、全部属性。 |
| ads_doc | 检索广告高级工具中心的官方文档。 |
| ads_example | Amazon 官方 Postman 集合中的真实请求:method、完整 URL、请求体。 |
| ads_request | 生成可直接执行的请求描述:区域主机、URL、正确的鉴权头组合、媒体类型。lookup 带参数时返回的是同一份。 |
| ads_diagnose | ★ operationId + 状态码 + 你发出的头名 → 指出两套头混用、连字符写错、缺头、媒体类型不对,并按状态码给下一步。 |
| ads_gap | Amazon 自己在调、却没有任何公开 OpenAPI 规范的端点——共 80 个,最大一块是 AMC。 |
| ads_spec | 规范目录:72 个 OpenAPI 规范的 slug、family、版本、operation 数。 |
| get_executor | 同上,返回本地执行器文件。 |
| link_account | 同上,免鉴权,用来拿密钥。 |
| get_skill | 同上,返回配套 Skill 文件。 |
请求描述格式
spapi_request / ads_request(以及带 params 的 lookup)返回的不是「调用结果」,而是一份怎么调的说明书。
它是纯函数的输出:给定 operation 与参数,永远得到同一份描述。凭证的位置只有占位符。
{
"method": "GET",
"host": { "NA": "sellingpartnerapi-na.amazon.com",
"EU": "sellingpartnerapi-eu.amazon.com",
"FE": "sellingpartnerapi-fe.amazon.com" },
"path": "/orders/v0/orders",
"query": { "MarketplaceIds": "ATVPDKIKX0DER",
"CreatedAfter": "2026-08-18T00:00:00Z" },
"auth": { "header": "x-amz-access-token", "value": "${AUTH_TOKEN}",
"rdtRequired": false },
"rateLimit": { "rps": 0.0167, "burst": 20,
"note": "拉取大量历史订单请改用 createReport" },
"pagination": { "style": "NextToken", "param": "NextToken" },
"validation": { "missing": [], "unknown": [] },
"curl": "curl -sS -X GET \"https://…\" -H \"x-amz-access-token: $LWA_ACCESS_TOKEN\""
}
host把三个区域都给出来——我们不知道你在哪个区域经营,由执行器按当前连接选。validation.missing在发请求之前就列出缺了哪个必填项,省一次 400 往返。rateLimit.note是规范原文里的建议,不是模型编的。curl可以直接复制到终端跑,填上自己的 token 即可。
${AUTH_TOKEN} 永远是占位符。服务端不知道、也不需要知道你的真实 token——
这不是承诺,是架构决定的结果。
本地执行器
执行器是一个不含任何规范数据的哑执行器:它不知道 Amazon 有哪些 API, 只会执行一份别人给它的请求描述。所有智能都在服务端,所以它只有几十 KB、零第三方依赖。 不装也能用——请求描述里自带的 curl 效果完全一样,只是重试、翻页、token 刷新要你自己来。
默认路径。让 agent 调 get_executor 工具,它会拿到文件清单与内容,逐个写入本地。
复制 request 返回里的那条 curl,填上自己的 token,直接跑。
curl -sS -X GET \
"https://sellingpartnerapi-na.amazon.com/orders/v0/orders?MarketplaceIds=ATVPDKIKX0DER" \
-H "x-amz-access-token: $LWA_ACCESS_TOKEN" \
-H "user-agent: my-app/1.0 (Language=Python/3.12)" \
-H "accept: application/json"
get_executor 返回什么
{
"version": "1.4.2",
"installPaths": {
"claude-code": "~/.claude/skills/amazon-exec/",
"codex": "~/.agents/skills/amazon-exec/",
"default": "~/.agents/skills/amazon-exec/"
},
"files": [
{ "path": "SKILL.md", "content": "---\nname: amazon-exec\n..." },
{ "path": "scripts/auth.py", "content": "#!/usr/bin/env python3\n..." }
],
"sha256": "a3f1…",
"totalBytes": 48213,
"postInstall": "安装完成后请重启 agent 会话,Skill 在启动时扫描才会生效。"
}
curl | sh 是供应链攻击的经典形态。返回内容意味着每一个字节都对你可见、可审计、
可被客户端拦截确认——工具本身不执行任何写入,写文件是模型在你眼皮底下做的。
执行器负责的四件事
- LWA token 刷新:access token 只有 1 小时,自动续;需要 RDT 的受限操作自动换 RDT。
- 429 退避与重试:按 operation 在本地记账,发请求前先做令牌桶预判,主动排队而不是撞到 429 再退。
- 自动翻页:NextToken / cursor 两种模式,
--paginate n控制最多翻几页。 - 多店铺连接:凭证与状态按连接隔离,见多店铺连接。
Agent Skills 是开放标准,但安装目录还没统一:Claude Code 用
~/.claude/skills/,Codex 及多数其他工具用 ~/.agents/skills/。
Codex 的扫描顺序是:当前目录逐级向上到 repo 根的 .agents/skills,
然后 $HOME/.agents/skills、/etc/codex/skills、内置。
多店铺连接
跨店误操作(改错店的价格、库存、广告预算)是这个产品最危险的失败模式,代价是真金白银。 所以执行器的第一条规则是:没有默认连接。
--connection <别名>。
不写就拒绝执行,并列出可选连接让你挑。这一条拦下的事故比其他三条加起来都多。
连接管理命令
exec.py connect --alias us-main --kind sp-api # 走 LWA 授权,凭证存 keychain
exec.py list # 列出所有连接
exec.py show --connection us-main # 详情(凭证脱敏)
exec.py verify --connection us-main # 连通性自检
exec.py disconnect --connection eu-store # 删除连接与凭证
# 执行一个请求描述
exec.py --connection us-main --paginate 10 '<request-json>'
exec.py --connection us-main --dry-run '<request-json>' # 只打印最终请求,不发出
四道防线
- 无默认连接不指定就拒绝执行,并列出候选。
- 每次执行回显当前连接
[connection: us-main | SP-API NA | seller A1B2C3D4E5 | ATVPDKIKX0DER]—— 模型和人都看得见。 - 写操作二次确认非 GET 请求默认进入确认流程,打印完整请求与目标连接,要求显式
--yes。可对特定连接预授权--trust-writes,且控制台可见。 - marketplace 一致性校验请求里的
marketplaceId若不在该连接声明的列表中,直接拒绝:A1PA6795UKMFR9 (DE) 不属于连接 us-main (US, CA)。
状态在哪
每个连接的状态严格隔离在自己的子目录下,这是防止跨店串数据的第一道结构性保障。
~/.amazon-mcp/
├── profiles.json 连接元数据(明文,只有别名 / region / profileId / marketplaces)
├── credentials.enc AES-256-GCM 密文,密钥在 OS keychain
├── state/
│ ├── us-main/ cursor.json · quota.json · seen.db
│ ├── eu-store/
│ └── ads-us/
├── cache/tokens.json 仅 access token(1 小时),加密,可随时丢弃
└── logs/exec.log 脱敏后的执行日志
服务端不需要知道这些:request 是纯函数,区域 / marketplace / profileId 全部由执行器在本地填充。
我们不知道你有几个店、店在哪、卖什么。
认证与密钥
先分清两套完全无关的凭证:服务凭证用来访问我们的 MCP(我们签发); Amazon 凭证用来访问 Amazon API(Amazon 签发,存在你本地,我们永不接触)。 这一节只讲前者。
Authorization: Bearer <密钥>。
唯一的例外是 link_account——它就是用来拿密钥的,所以它必须不带密钥也能调。
link_account」,
它会给出一个链接;用手机打开、微信扫一下码,agent 就会自动取回密钥并写进配置——
全程不用复制粘贴任何一串字符。
| OAuth 2.1(交互式) | Personal Access Token(CI / 容器) | |
|---|---|---|
| 获取方式 | 客户端自动弹浏览器授权,点一次同意 | 控制台生成,复制粘贴 |
| 适用场景 | 交互式 agent | CI、headless、容器 |
| 生命周期 | access token 短期 + refresh | 长期,可设过期 |
| 吊销 | 控制台一键 | 控制台一键 |
| 作用域 | spapi:read / ads:read,一次同意授予两个 | 可选作用域 |
用 PAT 直接调
POST https://mcp.sp-api.net/mcp/sp-api
Authorization: Bearer sk_live_粘贴你自己的密钥
Content-Type: application/json
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: spapi_op
{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"spapi_op","arguments":{"ref":"orders-v0:getOrders"}}}
- 一台机器 / 一条流水线用一把,出事时可以精确吊销,不影响其他环境。每个账号最多 20 把。
- 不要提交进代码仓库,也不要贴进对话记录——真实威胁不是「恶意 AI」,而是凭证意外进入模型上下文。
- 定期看「最后使用」与「来源 IP」,长期不用的直接吊销。
额度与限制
计价单位是 MCP 调用次数:一次 tools/call 记 1 次,
无论返回的是 400 字节还是 8KB。两个 endpoint 共享同一个额度池;先扣月度钱包,再扣永久钱包。
超额是渐进的,不会突然断
| 用量 | 行为 |
|---|---|
| < 80% | 正常返回,用量随结果的 _meta 回显,不打扰主流程 |
| ≥ 80% | 提醒 _meta 标记 warning,控制台首页提醒 |
| ≥ 95% | 追加警告 结果末尾追加一行文字警告,模型能直接看到 |
| ≥ 100% | 宽限 进入 10% 宽限额度,继续服务,但每次都警告 |
| ≥ 110% | 停止 返回 isError: true,文案里明确写「请勿重试」 |
- 自动去重:60 秒内同一租户、同一工具、同一组参数的重复调用只计 1 次。agent 重试非常常见,重复扣费不合理。
- 字节不是计价单位,只是防批量导出的软锁:单次响应硬上限 32KB,月度字节配额 = 调用配额 × 8KB。正常使用平均约 3KB/次。
- 突发保护独立于月度额度(按档位 30–500 次 / 10 秒),防的是失控 agent 的死循环,触发后数秒自动恢复。
配额用尽是业务状态而非协议错误,所以不返回 HTTP 429(客户端会自动重试)、 也不返回 JSON-RPC error(模型可能读不到内容),而是返回一条模型看得懂的工具结果。 完整档位见定价页;登录后在积分与邀请看余额与明细。
常见错误排查
下面这些都不是猜的,是规范里查得到的确定答案。遇到问题先对照这张表。
| 症状 | 最可能的原因 | 怎么修 |
|---|---|---|
| 工具没出现 | agent 会话没重启,或配置写错了文件 | 重启会话。Claude Code 可用 claude mcp list 确认状态是 connected。 |
| 401 调我们的 MCP | 没带凭证,或带了已吊销 / 过期的 PAT | 在控制台 · 密钥确认状态,必要时新建一把;没有账号就让 agent 调一次 link_account。 |
| 401 调 Ads API | 两套鉴权头混用——这是 Ads 401 的头号来源 |
传统体系:Amazon-Advertising-API-ClientId + Amazon-Advertising-API-Scope(profileId);
新版 v1:Amazon-Ads-ClientId + Amazon-Ads-AccountId。
不可混用。准确字符串用 ads_show <operationId> 取,别从相邻端点复制。
|
| 401 头名看着没错 | Amazon-Ads-Account-ID(多一个连字符,4 个 operation 在用)与 Amazon-Ads-AccountId 是两个不同的头 |
按 ads_show 返回的原文照抄。(ClientID 与 ClientId 只是大小写差异,HTTP 视为同一个头,无害。) |
| 403 SP-API | 应用未被授权该 operation 所属的 role,或 access token 过期(1 小时) | 检查开发者中心里应用申请的 role;access token 过期请刷新——执行器会自动做。 |
| 403 缺 RDT | 涉及 PII 的受限操作需要 Restricted Data Token | RDT 放在同一个 x-amz-access-token 头里(不是另开一个头),同样 1 小时有效。请求描述里的 auth.rdtRequired 会标出来。 |
| 429 频繁被限流 | 循环调用了低限流接口。getOrders 只有 0.0167 req/s(约每分钟 1 次) |
先 spapi_op 看 rateLimit;低于 0.05 req/s 的接口不要循环,改用 Reports API。执行器会本地记账、主动排队。 |
| 415 Ads 请求 | Content-Type / Accept 写成了 application/json |
Ads 大量接口用带版本的厂商媒体类型,如 application/vnd.spCampaign.v3+json。以 ads_show 返回的为准。 |
| 400 缺必填参数 | 规范里的 required 项没给 | 看请求描述里的 validation.missing——它在发请求之前就告诉你缺什么。 |
| 404 规范里找不到端点 | Amazon 公开的规范目录并不完整 | 查 ads_gap:有 80 个端点 Amazon 自己在调、却没有任何公开 OpenAPI 规范(最大一块是 AMC)。规范里没有,不等于不存在。 |
| deprecated | 用了已废弃的 operation 而不自知 | spapi_op 会返回 deprecated: true 与 successor。模型看到必须说出来。 |
| 400 HeaderMismatch | 路由头与 body 不一致(-32020) |
Mcp-Method 必须等于 body 的 method,Mcp-Name 必须等于 params.name;tools/list 不要带 Mcp-Name。 |
| 额度 返回 isError | 月度调用额度(含 10% 宽限)已用尽 | 返回文案里写明「请勿重试」,_meta 里 retryable: false。去计费页升级或等待重置。 |
给 AI 读的 llms.txt
本页是写给人看的。给 agent 看的那份在 /llms.txt——纯 Markdown、无导航、无营销,
一页说完接入方式、工具清单与调用约定。/llm.md 是同一份内容。
最省事的用法:把地址丢给你的 agent,让它自己去读,比你转述可靠得多。
https://mcp.sp-api.net/llms.txt
协议版本
主线是 MCP 2026-07-28:无状态,没有 initialize 握手,也没有
Mcp-Session-Id。同时兼容 2025-11-25 / 2025-06-18 / 2025-03-26,
客户端按自己支持的版本发即可。
MCP-Protocol-Version / Mcp-Method / Mcp-Name
三个路由头是强制的,且必须与 body 一致,否则返回 400 与 JSON-RPC
-32020 HeaderMismatch。网关据此计量与路由,不需要解析 body。
拉 tools/list 时不要带 Mcp-Name。
哪些流量到我们、哪些到 Amazon
服务部署在国内,直接访问即可,不需要任何代理。传输的只有规范查询与请求描述, 单次响应通常 2–8KB,对网络质量要求很低。
- 普通 HTTPS,没有长连接、没有 WebSocket、没有 SSE 依赖
- 无状态设计,断线重连不丢上下文
server/discover与tools/list可被缓存 24 小时
API 调用发生在你本地,所以需要你的机器能访问 Amazon 的接口域名。 这条链路我们完全不参与,也无法代为解决。
- LWA 令牌:
api.amazon.com - SP-API:
sellingpartnerapi-na / -eu / -fe .amazon.com - Ads:
advertising-api / -eu / -fe .amazon.com
延迟参考
| 操作 | 典型耗时 | 响应体积 | 说明 |
|---|---|---|---|
search 短语 | 11 ms | 5.1 KB | 纯服务端 CPU,命中缓存后更快 |
op 精确 | 41 ms | 4.3 KB | 含 $ref 内联展开 |
show 单操作 | 94 ms | 1.9 KB | 最慢的一类查询,仍在百毫秒内 |
| Amazon API 调用 | 0.2–3 s | — | 在你本地发生,取决于你的网络 |