🛒 amazon-in-mcp
一個 MCP 服務器,讓你的 LLM 直接在 Amazon.in 上購物。
最便宜的有貨商品 · 最優性價比推薦 · 價格歷史 · 無需付費 API。
✨ 它能做什麼
為你的 LLM 提供三個可調用 amazon.in 的工具:
| 工具 |
返回內容 |
search_amazon_in(query, max_results=5) |
排序後的商品列表 + 兩個便捷推薦:最便宜的有貨商品 與 最優性價比(rating × log10(reviews) / √price) |
get_product(asin_or_url) |
完整商品詳情 — 價格、原價(MRP)、折扣、評分、評論數、庫存、賣點(bullets)、品牌、賣家、配送信息 |
price_history_link(asin_or_url) |
針對 amazon.in 域名的 Keepa.com 價格歷史圖表鏈接,無網絡請求。 |
無需 API 密鑰。無需賬號。通過 stdio 本地運行。直接抓取 HTML 頁面,配合輪換 User-Agent 與機器人檢測頁重試機制。
🚀 快速開始
1. 安裝(Claude Code):
git clone https://github.com/justadityaraj/amazon-in-mcp.git
cd amazon-in-mcp && npm install && npm run build
claude mcp add amazon-in -- node "$PWD/dist/index.js"
2. 重啟你的 MCP 客戶端(Claude Code、Cursor、Claude Desktop 等)
3. 提問:
"在 amazon.in 上找一款 1TB 的外置固態硬盤,預算 ₹10,000 以內。給我最優性價比的選擇。"
你的 LLM 會調用 search_amazon_in,按性價比排序,返回一件真實商品,附上當前價格和一條 Keepa 價格歷史鏈接。
📸 效果展示
實際調用 search_amazon_in("wireless mouse", max_results=3) 的返回結果:
{
"query": "wireless mouse",
"total_results": 3,
"results": [
{
"asin": "B0CQRNWJM2",
"title": "ZEBRONICS Blanc Slim Wireless Mouse...",
"url": "https://www.amazon.in/dp/B0CQRNWJM2?tag=artech-21",
"price_inr": 423,
"mrp_inr": 799,
"rating": 4.0,
"review_count": 7801,
"in_stock": true,
"delivery": "FREE delivery Tomorrow",
"price_history_url": "https://keepa.com/#!product/12-B0CQRNWJM2"
}
],
"cheapest_in_stock": { "asin": "...", "price_inr": 199, "...": "..." },
"best_value": { "asin": "...", "rating": 4.3, "...": "..." }
}
get_product 會額外返回 bullets[]、brand、seller、discount_percent、availability。
⚙️ 配置你的 MCP 客戶端
Claude Code
claude mcp add amazon-in -- node /absolute/path/to/amazon-in-mcp/dist/index.js
Claude Desktop
編輯 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"amazon-in": {
"command": "node",
"args": ["/absolute/path/to/amazon-in-mcp/dist/index.js"]
}
}
}
Cursor / Windsurf / 其他客戶端
使用與 Claude Desktop 相同的 JSON 配置,將其放入對應客戶端的 MCP 設置文件中即可。
🖼️ 圖片搜索
服務器有意不支持圖片輸入 —— 以此保持與具體模型供應商無關。取而代之的做法是:將圖片粘貼到你的 LLM 客戶端中,讓它描述商品,LLM 便會自動用正確的關鍵詞調用 search_amazon_in。在任何支持 MCP 的客戶端中體驗一致。
🧮 "最優性價比" 是如何評分的
在所有庫存充足、且評論數不少於 10 的商品中:
$$
\text{score} = \frac{\text{rating} \times \log_{10}(\text{reviews} + 10)}{\sqrt{\text{price}}}
$$
得分最高者勝出。cheapest_in_stock 只是有貨商品裡 price_inr 最低的那個 —— 當你只想要絕對便宜而不追求平衡時很有用。
🛡️ 穩健性
| 屬性 |
說明 |
| UA 輪換 |
5 個現代桌面端 UA(Mac / Win / Linux 上的 Chrome / Safari / Firefox) |
| 重試 |
最多 3 次嘗試,針對 5xx、429 以及機器人檢測頁使用指數退避 |
| 機器人檢測 |
掃描前 8 KB 內容以識別已知的 CAPTCHA / 機器人標記 |
| 超時 |
每次請求 20 秒 |
| 狀態 |
無狀態。Stdio、無 Cookie、無會話 |
在高頻使用下,預計約 1–5% 的請求會因機器人檢測而失敗。等待 30–60 秒後重試,或換一個網絡環境運行。
💰 項目資金來源
默認情況下,本服務器返回的 amazon.in 鏈接會帶有作者的 Amazon Associates 聯盟標籤(artech-21)。如果你(或你的 LLM)點擊鏈接並下單購買,作者會獲得一小筆佣金。你支付的價格不變。 這是讓項目保持免費、MIT 許可並持續維護的唯一方式。
隨時可以通過 AMAZON_IN_AFFILIATE_TAG 環境變量覆蓋或禁用:
| 取值 |
行為 |
| 未設置 |
使用作者的標籤(artech-21)—— 支持項目 |
yourtag-21 |
使用你自己的 Amazon Associates 標籤 |
none / off / false / "" |
不帶標籤,返回原始的 amazon.in 鏈接 |
示例 —— 使用你自己的標籤:
{
"mcpServers": {
"amazon-in": {
"command": "node",
"args": ["/path/to/dist/index.js"],
"env": { "AMAZON_IN_AFFILIATE_TAG": "yourtag-21" }
}
}
}
🗺️ 路線圖
- [ ] 發佈到 npm,讓安裝簡化為
npx -y amazon-in-mcp-server
- [ ] 可選支持 Keepa API(由用戶提供密鑰),以獲取真實的價格歷史數據
- [ ] 過濾輔助參數 ——
min_rating、min_reviews、under_price
- [ ] 附帶緩存 HTML 樣本的冒煙測試套件
🛠️ 開發
npm install
npm run dev
npm run build
npm start
使用 MCP Inspector 進行交互式測試:
npx @modelcontextprotocol/inspector node dist/index.js
項目結構:
src/
index.ts # MCP server + 3 tool registrations
scraper.ts # fetch with UA rotation, retry, bot-check
parse.ts # cheerio selectors for search + product pages
constants.ts # UAs, headers, tuning constants, affiliate config
types.ts # SearchResultItem, ProductDetail
⚠️ 免責聲明
本工具抓取公開可訪問的 amazon.in 頁面,用於個人研究與助手用途。它不會繞過身份驗證、付費牆或 CAPTCHA —— 當 Amazon 返回機器人檢測時,工具會停止並報告錯誤。
你需要自行負責以符合 Amazon 服務條款及當地法律的方式使用本工具。不對可用性、準確性或任何特定用途的適用性作任何保證。DOM 選擇器盡力而為,Amazon 更新頁面結構時可能失效。歡迎提交 PR。
📄 許可證
MIT © Aditya Raj Singh
歡迎提交 issue、bug 報告以及選擇器修復 —— Amazon 的 DOM 每隔幾個月就會變動,因此本項目會偶爾失效,需要社區共同維護。