mcp-amazon-sp-api
Provides tools for interacting with the Amazon Selling Partner API, enabling management of catalog, orders, listings, reports, inventory, pricing, A+ content, feeds, fulfillment, messaging, and more across multiple marketplaces.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-amazon-sp-api get my orders from the last 30 days for US marketplace"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-amazon-sp-api
MCP server that exposes the Amazon Selling Partner API to Claude Desktop and any other client that speaks the Model Context Protocol.
It wraps the python-amazon-sp-api SDK and ships 55+ tools across 19 SP-API scopes — catalog, orders, listings, reports, inventory, pricing, A+ content, feeds, fulfillment, messaging and more — with automatic pagination, throttle-aware retry and multi-marketplace support.
Status: production-ready, used daily against the live SP-API. ~400 unit and integration tests, ~95% coverage.
Features
55+ MCP tools covering 19 SP-API scopes (see Tool catalogue).
Multi-marketplace. Every tool accepts a
marketplaceparameter (ES,DE,FR,IT,GB,NL,BE,PL,SE,IE,US,AE,SA). When omitted, falls back toSP_API_MARKETPLACEfrom.env.Safe writes. Mutating tools require
confirm=True; without it they return a detailed plan preview so the agent can show the user what would happen.Automatic pagination on inventory, listings, finances, orders and catalog endpoints.
Throttle-aware retry with exponential backoff for all SP-API calls.
Reports pipeline (create → poll → download → parse) for Brand Analytics, FBA reports and Sales & Traffic.
Bulk updates via
JSON_LISTINGS_FEEDfor price/inventory.Credential resolution order: environment variables → macOS Keychain →
.env.
Related MCP server: shopline-mcp
Requirements
Python ≥ 3.12
uv(recommended) or any PEP 517 installerAmazon SP-API developer credentials (LWA app + refresh token)
Installation
git clone https://github.com/christian-ramos/mcp-amazon-sp-api.git
cd mcp-amazon-sp-api
uv syncuv sync will create .venv/ and install the runtime dependencies declared in pyproject.toml. For development extras (pytest, ruff):
uv sync --group devConfiguration
Copy .env.example to .env and fill in your credentials:
cp .env.example .envSP_API_REFRESH_TOKEN=Atzr|...
LWA_APP_ID=amzn1.application-oa2-client...
LWA_CLIENT_SECRET=...
SP_API_SELLER_ID=...
SP_API_MARKETPLACE=ESTo obtain these:
In Seller Central, go to Apps & Services → Develop Apps.
Create (or open) your SP-API application and authorize it for your seller account.
Note the LWA client ID and LWA client secret.
Generate a refresh token by self-authorizing the app for your seller account.
Copy your Seller ID from Settings → Account Info → Your Merchant Token.
Storing credentials in macOS Keychain (optional)
If you prefer not to keep secrets on disk, store them in the Keychain — the server will pick them up automatically:
security add-generic-password -s mcp-amazon-sp-api -a SP_API_REFRESH_TOKEN -w 'Atzr|...'
security add-generic-password -s mcp-amazon-sp-api -a LWA_APP_ID -w 'amzn1.application-oa2-client...'
security add-generic-password -s mcp-amazon-sp-api -a LWA_CLIENT_SECRET -w '...'Resolution order is: environment variables → Keychain → .env.
Running
As a Claude Desktop MCP server
Add the following to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on your platform:
{
"mcpServers": {
"amazon-sp-api": {
"command": "uv",
"args": [
"--directory", "/absolute/path/to/mcp-amazon-sp-api",
"run", "mcp-amazon-sp-api"
]
}
}
}Restart Claude Desktop. The 55+ tools will appear under the amazon-sp-api server.
Standalone (for debugging)
uv run mcp-amazon-sp-apiThis speaks MCP over stdio; you will need an MCP client on the other end (the MCP Inspector is great for this).
Tool catalogue
Tools are grouped by scope. See src/mcp_amazon_sp_api/tool_docs.py for the full per-tool documentation that Claude reads at runtime via the tool-docs:// MCP resource.
Scope | Tools |
Catalog & Orders |
|
Analytics |
|
Listings |
|
Reports infra |
|
Brand Analytics |
|
FBA Reports |
|
Sales & Traffic |
|
Inventory (realtime) |
|
Pricing |
|
A+ Content |
|
Pricing cross-marketplace |
|
Competitor analysis |
|
Listings restrictions |
|
Feeds |
|
Fulfillment inbound |
|
Messaging |
|
Solicitations |
|
Invoices |
|
Sales API |
|
Development
uv sync --group dev # install with dev deps
uv run pytest tests/unit # unit tests (no SP-API credentials needed)
uv run pytest -m integration # integration tests (require live credentials)
uv run ruff check . # lintProject layout:
src/mcp_amazon_sp_api/
├── server.py # FastMCP entry point — registers all tool packages
├── config.py # Credentials resolution and marketplace map
├── sp_client.py # Re-export of clients/
├── clients/ # One module per SP-API scope (BaseClient + mixins)
├── tools/ # MCP tool implementations, grouped by scope
└── tool_docs.py # Per-tool detailed docs exposed via tool-docs:// resourceSee ROADMAP.md for the implementation history and per-phase scope.
Security notes
This server holds production seller credentials with full SP-API access. Treat
.envlike a password file — never commit it.Write tools (
update_listing_attribute,update_listing_batch,update_marketplace_price,sync_marketplace_prices,bulk_update_prices,send_buyer_message,request_review) requireconfirm=True. Without confirmation they return a plan preview rather than executing.All requests honour SP-API rate limits via throttle-aware retry.
Disclaimer
This project is not affiliated with, endorsed by, or supported by Amazon.com, Inc. Trademarks belong to their respective owners.
License
MIT © Christian Ramos
Available Tools
53 toolsanalyze_competitor_pricesC
Buscar competidores y comparar precios y rankings.
Inputs: keywords (required), marketplace, max_results. Returns: result
bulk_update_pricesC
Actualizar precios en bulk vía feed. Requiere confirm=True.
Inputs: updates (required), confirm, marketplace. Returns: result
check_expansion_eligibilityC
Elegibilidad para vender en otros marketplaces EU.
Inputs: asin (required), marketplaces (required). Returns: result
check_feedC
Estado y resultado de un feed de actualización masiva.
Inputs: feed_id (required), marketplace. Returns: result
check_listing_restrictionsC
Ver restricciones para vender un ASIN.
Inputs: asin (required), condition, marketplace. Returns: result
check_reportB
Estado de un informe: IN_QUEUE, IN_PROGRESS, DONE, FATAL.
Inputs: report_id (required), marketplace. Returns: result
check_review_eligibilityC
Ver si puedes solicitar review para un pedido.
Inputs: order_id (required), marketplace. Returns: result
compare_with_competitorsC
Comparar tu producto vs competidores similares.
Inputs: my_asin (required), keywords (required), marketplace, max_results. Returns: result
download_invoiceC
Descargar documento de factura.
Inputs: invoice_id (required), marketplace. Returns: result
download_reportC
Descargar contenido de un informe completado.
Inputs: report_id (required), marketplace. Returns: result
estimate_feesC
Estimar fees de Amazon para un producto y precio.
Inputs: asin (required), price (required), is_fba, marketplace. Returns: result
get_aplus_asin_relationsC
ASINs asociados a un documento A+ Content.
Inputs: content_key (required), marketplace. Returns: result
get_aplus_contentC
Detalle de un documento A+ Content.
Inputs: content_key (required), marketplace. Returns: result
get_competitive_pricingC
Precios competitivos, Buy Box y rankings por ASIN.
Inputs: asins (required), marketplace. Returns: result
get_competitor_offersC
Ofertas de todos los vendedores para un ASIN.
Inputs: asin (required), marketplace. Returns: result
get_cross_marketplace_pricesC
Ver precio de un SKU en todos los marketplaces EU.
Inputs: sku (required), marketplaces. Returns: result
get_fba_fees_reportC
Tarifas de almacenamiento FBA actuales y largo plazo.
Inputs: marketplace. Returns: result
get_fba_inventoryC
Stock FBA por SKU vía report asíncrono.
Inputs: marketplace. Returns: result
get_fba_returnsC
Devoluciones FBA con motivo detallado vía report.
Inputs: days_back, marketplace. Returns: result
get_fba_shipment_itemsC
Items de un envío a FBA: enviado vs recibido.
Inputs: shipment_id (required), marketplace. Returns: result
get_inbound_guidanceC
Guía de envío a FBA: elegibilidad y prep requerido.
Inputs: asins (required), marketplace. Returns: result
get_inventoryC
Stock FBA en tiempo real por SKU.
Inputs: sku, marketplace. Returns: result
get_invoicesC
Obtener facturas por pedido o periodo.
Inputs: order_id, days_back, marketplace. Returns: result
get_listing_contentA
Contenido de tu listing: título, bullets, keywords, offers y atributos.
Busca primero en Listings API (datos del seller). Si faltan atributos, hace fallback a Catalog API (datos del catálogo, incluye traducciones BIL).
Inputs: sku (required), marketplace. Returns: result
get_listing_issuesD
Issues de calidad de un listing.
Inputs: sku (required), marketplace. Returns: result
get_market_basketC
Productos comprados junto con los tuyos (Brand Analytics).
Inputs: days_back, marketplace. Returns: result
get_messaging_optionsC
Tipos de mensaje disponibles para un pedido.
Inputs: order_id (required), marketplace. Returns: result
get_order_financesC
Desglose financiero de un pedido: fees, neto, margen.
Inputs: order_id (required), marketplace. Returns: result
get_order_itemsC
Items de un pedido: SKU, ASIN, precio, cantidad.
Inputs: order_id (required), marketplace. Returns: result
get_order_metricsC
Métricas de ventas agregadas. Respuesta inmediata.
Inputs: days_back, granularity, marketplace. Returns: result
get_ordersC
Pedidos recientes por fecha y estado.
Inputs: status, days_back, marketplace. Returns: result
get_product_detailsC
Detalle de un producto: título, marca, imágenes, rankings.
Inputs: asin (required), marketplace. Returns: result
get_product_type_infoC
Atributos válidos de un product type o buscar tipos.
Inputs: keywords, marketplace, product_type. Returns: result
get_profitability_reportC
Rentabilidad por SKU: ingresos, fees, margen neto.
Inputs: days_back, max_orders, marketplace. Returns: result
get_repeat_purchasesC
Tasa de recompra por ASIN (Brand Analytics).
Inputs: days_back, marketplace. Returns: result
get_restock_suggestionsC
Recomendaciones de restock: qué y cuánto reabastecer.
Inputs: marketplace. Returns: result
get_returns_summaryC
Resumen de devoluciones y reembolsos.
Inputs: days_back, marketplace. Returns: result
get_sales_and_trafficC
Sesiones, conversión, Buy Box % por ASIN vía report.
Inputs: days_back, marketplace. Returns: result
get_sales_rankingsC
Rankings de ventas (BSR) por categoría.
Inputs: asin (required), marketplace. Returns: result
get_sales_summaryC
Resumen de ventas: revenue, unidades, top productos.
Inputs: days_back, marketplace. Returns: result
get_search_performanceC
Rendimiento de tus ASINs en búsquedas (Brand Analytics).
Inputs: asins (required), marketplace. Returns: result
get_search_termsC
Top keywords con click/conversion share (Brand Analytics).
Inputs: days_back, marketplace. Returns: result
list_aplus_contentC
Listar documentos A+ Content de tu cuenta.
Inputs: marketplace. Returns: result
list_fba_shipmentsC
Envíos a FBA y su estado.
Inputs: status, marketplace, shipment_ids. Returns: result
list_my_listingsC
Listar todos tus listings con estado e issues.
Inputs: status, page_size, marketplace, issue_severity. Returns: result
list_productsC
Buscar productos en el catálogo de Amazon por keywords.
Inputs: keywords, marketplace. Returns: result
request_reportC
Solicitar generación de un informe de Amazon (asíncrono).
Inputs: report_type (required), days_back, marketplace. Returns: result
request_reviewC
Solicitar review al comprador. Requiere confirm=True.
Inputs: order_id (required), confirm, marketplace. Returns: result
send_buyer_messageC
Enviar mensaje al comprador. Requiere confirm=True.
Inputs: body (required), order_id (required), message_type (required), confirm, +1 more. Returns: result
sync_marketplace_pricesC
Sincronizar precios a varios marketplaces. Requiere confirm=True.
Inputs: sku (required), targets (required), base_price (required), product_type (required), +3 more. Returns: result
update_listing_attributeC
Actualizar un atributo de un listing. Requiere confirm=True.
Inputs: sku (required), value (required), product_type (required), attribute_name (required), +3 more. Returns: result
update_listing_batchC
Actualizar múltiples atributos de un listing. Requiere confirm=True.
Inputs: sku (required), updates (required), product_type (required), confirm, +1 more. Returns: result
update_marketplace_priceC
Cambiar precio en un marketplace. Requiere confirm=True.
Inputs: sku (required), price (required), marketplace (required), product_type (required), +1 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 53 tools
There is significant overlap among tools related to pricing and competition (e.g., analyze_competitor_prices, compare_with_competitors, get_competitive_pricing, get_competitor_offers) and among inventory reporting tools (get_fba_inventory, get_inventory, get_fba_fees_report, get_profitability_report). This ambiguity would likely cause an agent to select the wrong tool.
Tool names consistently follow verb_noun pattern (get_, list_, update_, check_, request_), with no mixing of casing styles. A few prefixes (check_, request_) deviate from the majority get_/list_/update_, but the pattern remains predictable overall.
With 53 tools, the server is overly large for typical MCP usage. While it covers a broad domain (Amazon SP API), the high count increases cognitive load and makes it harder for agents to navigate. A more focused subset would improve coherence.
The tool set covers many essential areas (orders, inventory, listings, reports, A+ content, fees), but notable gaps exist: no tool for creating listings (only updating), no advertising management, and no returns processing beyond reporting. This leaves some workflows incomplete.
Related MCP Connectors
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Connect Amazon Seller Central to Claude or ChatGPT via MCP. Orders, inventory, pricing, fees, FBA.
Hosted MCP server for 3Dsellers, the multichannel selling platform. Connect Claude, ChatGPT, Cursor, VS Code or any MCP client and manage your eBay, Amazon, Walmart, Etsy, Shopify, WooCommerce and TikTok Shop stores in plain language: search and update products, publish listings, sync inventory, tag and track orders, run bulk actions and CSV imports, and reply to customer messages. 120+ tools. Sign in with OAuth or a personal token. No eBay developer account and nothing to install. Setup guides and config examples for every client: https://github.com/3dsellers/ebay-mcp-server
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceHosted Amazon Seller Central & Vendor Central MCP server. Connect Claude, ChatGPT, Cursor, Codex, Gemini, and GitHub Copilot to live Amazon SP-API and Amazon Ads API data.16MIT
- AlicenseAqualityDmaintenanceMCP server for the Shopline Open API. Exposes 140+ tools for querying and managing orders, products, customers, promotions, analytics, and store settings from your Shopline store via Claude.100MIT
- FlicenseAqualityCmaintenanceAn MCP server that exposes marketplace seller operations (Shopee first) as tools Claude can call, enabling automation of product, pricing, inventory, customer service, and other seller tasks.32-
- AlicenseNot gradedqualityDmaintenanceMCP server for Amazon Selling Partner API and Advertising API, enabling access to orders, inventory, pricing, ads, and reports via natural language.1MIT