🛒 amazon-in-mcp
あなたのLLMがAmazon.inで買い物できるMCPサーバー — 最安値の在庫品、ベストバリュー、価格履歴。有料API不要。
Model Context Protocol 対応のMCPサーバーで、LLMから amazon.in を直接操作できます。
🚀 概要
LLMから amazon.in に対して呼び出せる3つのツールを提供します。
| ツール |
返す内容 |
search_amazon_in(query, max_results=5) |
ランク付けされた出品リスト + 2つの便利なピック:最安の在庫品 と ベストバリュー(評価 × log10(レビュー数) / √価格) |
get_product(asin_or_url) |
商品の詳細情報 — 価格、MRP、割引、評価、レビュー、在庫状況、箇条書き、ブランド、出品者、配送情報 |
price_history_link(asin_or_url) |
amazon.in ドメイン用の Keepa.com チャートURL。ネットワーク呼び出しは発生しません。 |
APIキー不要。アカウント不要。stdio経由でローカルで動作します。ユーザーエージェントをローテーションしながらHTMLを直接スクレイピングし、ボットチェックページではリトライします。
✨ クイックスタート
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で₹10,000以下の良い1TB外付けSSDを探して。ベストバリューのものを。」
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(Chrome / Safari / Firefox、Mac / Win / Linux) |
| リトライ |
3回試行。5xx、429、ボットチェックページでは指数バックオフ |
| ボット検出 |
最初の8KBをスキャンして既知のCAPTCHA / ロボットマーカーを検出 |
| タイムアウト |
リクエストあたり20秒 |
| 状態 |
なし。stdio、Cookieなし、セッションなし |
高負荷時には約1〜5%のリクエストがボットチェックで失敗することが想定されます。30〜60秒待って再試行するか、別のネットワークから実行してください。
💰 このプロジェクトの資金源
デフォルトでは、このサーバーが返す amazon.in のURLには作者のAmazonアソシエイトタグ(artech-21)が含まれます。あなた(またはあなたのLLM)がそれをクリックして購入すると、作者に少額のコミッションが入ります。支払う価格は同じです。 これがプロジェクトを無料・MIT・積極的にメンテナンスし続ける唯一の方法です。
AMAZON_IN_AFFILIATE_TAG 環境変数でいつでも上書き・無効化できます:
| 値 |
動作 |
| 未設定 |
作者のタグ(artech-21)— プロジェクトを支援 |
yourtag-21 |
あなた自身のAmazonアソシエイトタグ |
none / off / false / "" |
タグなし、生の amazon.in URL |
例 — 自分のタグを使う場合:
{
"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、バグ報告、セレクタの修正を歓迎します — AmazonのDOMは数ヶ月ごとに変わるため、時々壊れてコミュニティの助けが必要になります。