Amazon.in MCP Server について
Amazon.in MCP Serverは、ショッピング調査向けにAmazon.inの商品検索、詳細確認、価格履歴リンク取得をLLMに提供します。在庫のある最安商品を特定し、評価、レビュー数、価格を使ってコスパ商品を選びます。
主な機能
- 01商品一覧の検索と並べ替え
- 02在庫あり商品の最安値を提示
- 03評価・レビュー・価格でコスパを算出
- 04価格・在庫・販売者情報を取得
- 05Keepaの価格履歴チャートURLを生成
- 06APIキー不要でローカル実行
活用シーン
- 01キーワードで予算内の商品を探す
- 02在庫商品の価格とレビューを比較
- 03商品詳細や配送情報を確認
- 04商品の価格履歴チャートを開く
MCP 対応
MCPサーバーは商品検索、商品詳細、価格履歴リンクのツールをクライアントに提供し、Amazon.inのページから情報を取得します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y amazon-in-mcp-serverAMAZON_IN_AFFILIATE_TAGOverride the default Amazon Associates tag baked into emitted amazon.in URLs. Set to an empty string to disable affiliate tagging entirely.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
3掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | キーワード検索クエリ(例:'bluetooth speaker under 2000') |
| max_results | integer | いいえ | 返す商品の最大数(1~20)。デフォルトは 5 です。 |
| include_sponsored | boolean | いいえ | スポンサー/広告商品を含めます。デフォルトは false です。 |
詳細
amazon-in-mcp
LLM が Amazon.in で買い物できるようにするMCP サーバーです。
在庫のある最安商品。最もお得な商品。価格履歴。有料 API は不要です。
概要
LLM が amazon.in で呼び出せる 3 つのツールです。
| ツール | 返される内容 |
|---|---|
search_amazon_in(query, max_results=5, page=1) | ランク付けされた商品と、便利な 2 つの候補(在庫のある最安商品と最もお得な商品(評価 × log10(レビュー数) / √価格))です。page で、さらに深い検索結果ページを取得できます。 |
get_product(asin_or_url) | 商品の詳細情報(価格、希望小売価格、割引、評価、レビュー、在庫、箇条書き、ブランド、販売者、配送)です。 |
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",
"page": 1,
"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 / others
Claude Desktop と同じ JSON 設定を使用します。クライアントの MCP 設定ファイルに追加してください。
設定
すべて任意です。MCP クライアント設定の env ブロックで指定できます。デフォルトでは元の動作が維持されます。
| 環境変数 | デフォルト | 用途 |
|---|---|---|
AMAZON_IN_AFFILIATE_TAG | artech-21 | 出力する URL に付与する Amazon アソシエイトタグです。none / off / "" で無効になります。資金調達方法をご覧ください。 |
AMAZON_IN_CACHE_TTL_MS | 90000 | メモリ内ページキャッシュの有効期間(ms)です。0 でキャッシュが無効になります。 |
AMAZON_IN_PROXY | 未設定 | すべてのリクエストに使用する HTTP/HTTPS プロキシ URL です。例:http://user:pass@host:8080 |
例 — プロキシ経由にし、キャッシュ期間を 30 秒に短縮します。
{
"mcpServers": {
"amazon-in": {
"command": "node",
"args": ["/path/to/dist/index.js"],
"env": {
"AMAZON_IN_PROXY": "http://user:[email protected]:8080",
"AMAZON_IN_CACHE_TTL_MS": "30000"
}
}
}
}
自動ルーティング(「Amazon MCP を使って」と言う必要はありません)
インストールすると、サーバーがクライアントに対して、これらのツールを自動的に利用するよう指示します。initialize ハンドシェイクで返される MCP サーバーの指示が含まれており、amazon.in での買い物、価格、在庫状況、レビューに関する質問には、モデルがデフォルトで search_amazon_in / get_product を使うよう指示します。amazon.in のリンクや ASIN を貼り付けただけの場合も対象です。ツールの説明にも同じトリガーキーワードが含まれているため、サーバーの指示は読まずにツールの説明だけを読むクライアントにも対応できます。
「3000 未満のメカニカルキーボードを探して」と尋ねたり、商品リンクを貼り付けたりするだけで、クライアントはサーバー名を指定しなくてもこのサーバーにルーティングします。これはホスト(Claude Code、Claude Desktop、Cursor など)が提示するモデルレベルのガイダンスであり、プロトコルによる強制的な保証ではない点にご注意ください。サーバーの指示とツールの説明を無視するクライアントに、ルーティングを強制することはできません。
画像検索
このサーバーは、プロバイダーに依存しない設計を保つため、画像入力を意図的に受け付けません。代わりに、画像を 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 ローテーション | 最新のデスクトップ UA 5 種(Mac/Win/Linux の Chrome/Safari/Firefox) |
| 再試行 | 3 回試行。5xx、429、ボットチェックページの場合は指数バックオフ |
| ボット検出 | 既知の CAPTCHA/ロボット判定マーカーを先頭 8 KB からスキャン |
| タイムアウト | リクエストごとに 20 秒 |
| キャッシュ | 成功したページを重複取得しないよう、メモリ上に 90 秒間(URL ごと)キャッシュします。AMAZON_IN_CACHE_TTL_MS で調整でき、0 で無効になります |
| プロキシ | オプションです。データセンターの IP がブロックされた場合は、AMAZON_IN_PROXY を設定して HTTP/HTTPS プロキシ経由でリクエストを送信できます |
| 状態 | 永続化される状態はありません。stdio、Cookie なし、セッションなし。キャッシュはプロセス内の短期間だけ保持されるバッファです |
頻繁に利用すると、リクエストの約 1〜5% がボットチェックで失敗することがあります。30〜60 秒待ってから再試行するか、別のネットワークから実行するか、AMAZON_IN_PROXY を設定してください。
このプロジェクトの資金源
デフォルトでは、このサーバーが返す 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 # tsx watch
npm run build # tsc → dist/
npm start # node dist/index.js
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, proxy, cache
parse.ts # cheerio selectors for search + product pages
cache.ts # in-memory TTL + LRU cache
constants.ts # UAs, headers, tuning constants, affiliate/proxy/cache config
types.ts # SearchResultItem, ProductDetail
免責事項
個人の調査およびアシスタントでの利用を目的として、公開されている amazon.in のページを取得します。認証、ペイウォール、CAPTCHA を回避することはありません。Amazon がボットチェックを表示した場合、ツールは処理を停止してエラーを報告します。
本ツールは、Amazon の利用規約および地域の法律に従って使用する責任があります。稼働時間、正確性、特定の目的への適合性について保証はありません。DOM セレクターは最善を尽くして設定していますが、Amazon がレイアウトを更新すると動作しなくなる場合があります。プルリクエストを歓迎します。
ライセンス
MIT © Aditya Raj Singh
問題の報告、バグ報告、セレクターの修正を歓迎します。Amazon の DOM は数か月ごとに変化するため、このツールは時折動作しなくなり、最新の状態を保つにはコミュニティの協力が必要になります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。