Amazon Shopping MCP
Headless Chromium browser automation for Amazon.com with local DuckDB product cache and shopping list.
Server Location
/Users/alice/v/mcp/amazon-shopping/
MCP Registration
{
"amazon-shopping": {
"type": "stdio",
"command": "/bin/sh",
"args": ["-c", "cd /Users/alice/v/mcp/amazon-shopping && unset PYTHONPATH && exec uv run python -m amazon_shopping_mcp.server"]
}
}
Stack
- FastMCP 2.14.x — MCP server framework (pinned
<3)
- Playwright — headless Chromium for Amazon browsing
- DuckDB — product cache, price history, shopping list at
~/v/amazon-shopping.duckdb
- Python 3.14 via uv
Tools (12)
Browser / Amazon
| Tool | Args | Description |
|---|
search_amazon | query, max_results=5 | Search Amazon, returns ASIN/title/price/rating |
get_product_details | asin | Full product page: features, description, availability |
add_to_cart | asin | Click Add to Cart (headless session, not logged in by default) |
view_cart | — | List cart items + subtotal |
screenshot_page | — | Screenshot to /tmp/amazon_screenshot.png |
navigate_url | url | Go to any URL, return title + 2000 char text preview |
Shopping List (DuckDB)
| Tool | Args | Description |
|---|
list_add | asin, title, qty=1, notes="" | Add to local list |
list_view | — | Show all items with status |
list_update_status | item_id, status | Set TODO/BUY/BOUGHT/SKIP |
list_remove | item_id | Delete from list |
Price Tracking
| Tool | Args | Description |
|---|
price_history | asin | All observed prices over time |
cached_products | query="" | Search local product cache (empty = all) |
DuckDB Schema
products (asin PK, title, price_cents, currency, rating, review_count, url, category, image_url, last_seen)
price_history (asin, price_cents, currency, observed_at)
shopping_list (id PK, asin, title, qty, notes, status, added_at)
Every search_amazon and get_product_details call auto-caches to products and appends to price_history.
Env Vars
| Var | Default | Description |
|---|
AMAZON_SHOPPING_DB | ~/v/amazon-shopping.duckdb | DuckDB path |
Workflow Examples
Research + buy list
search_amazon("thunderbolt 4 cable 2m") — get top 5 results
get_product_details("B0CXRSWRBR") — read features, check availability
list_add("B0CXRSWRBR", "Cable Matters TB4 2m", qty=2) — track locally
price_history("B0CXRSWRBR") — check price trend over time
Cart operations
add_to_cart("B0CXRSWRBR") — add to Amazon cart
view_cart() — check cart subtotal
screenshot_page() — visual verification
Offline queries
cached_products("thunderbolt") — search previously seen products
list_view() — review full shopping list
price_history("B0CDH4FGZY") — price trend for Anker TB4
Limitations
- Not logged in by default — cart is anonymous session. Login requires manual cookie injection or interactive auth.
- Amazon anti-bot — headless Chrome may hit CAPTCHAs on heavy use. Use
screenshot_page to debug.
- Prices in cents — stored as integers (2999 = $29.99) to avoid float rounding.
- Single browser context — tools share one Chromium page. Concurrent calls may race.
Development
cd /Users/alice/v/mcp/amazon-shopping
unset PYTHONPATH
uv sync # install deps
uv run playwright install chromium # install browser (once)
uv run python -m amazon_shopping_mcp.server # run server
Companion Artifact
Shopping list org file: ~/v/amazon-shopping.org — manually curated product research with ASINs, prices, and notes.