mcpField
P
price-tracker-drop-alert-watch

price-tracker-drop-alert-watch

リモート
mcp.zovo.oneビジネス・マーケティング21 日前に更新
リポジトリ公式サイト

price-tracker-drop-alert-watch について

price-tracker-drop-alert-watch は、商品価格を確認・追跡したい買い物客向けの MCP サーバーです。商品ページから価格を取得してローカルに履歴を保存し、目標価格や値下がりを確認できます。更新は明示的な呼び出し時のみ行われます。

主な機能

  1. 01商品ページから価格・通貨・商品名を抽出
  2. 02価格の記録と履歴の確認
  3. 03目標価格到達や値下がりの検出
  4. 04取得できない価格の手動記録
  5. 05価格抽出の信頼度表示

活用シーン

  1. 01購入前の商品価格の確認
  2. 02商品の価格追跡と過去価格の比較
  3. 03目標価格への到達状況の確認
  4. 04自動アクセスを拒否する店舗の価格記録

MCP 対応

MCP サーバーとして、価格確認、ウォッチリスト、履歴、アラート、手動入力のツールに加え、watches リソースと check_prices プロンプトを提供します。watch_refresh の呼び出し時のみ価格を再取得し、バックグラウンド監視は行いません。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.zovo.one/mcp/price-tracker
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://mcp.zovo.one/mcp/price-tracker認証が必要
パッケージ
mcpbprice-tracker.mcpb0.22.8

ツール

10
パラメーター型必須説明
urlstringはい商品ページの URL(https:// を含む)

詳細

mcp-price-tracker

Awesome MCP Serversで紹介されました - ディレクトリの掲載ページ | ホストされたライブエンドポイント、無料プラン、登録不要。

アシスタントに、今いくらなのかを尋ねられます。商品ページを指定すると、ページから価格を読み取って記録し、次回は価格が変動したか、どれくらい変わったか、待っていた価格に達したかを知らせます。多くの店舗がすでに公開している構造化データ(JSON-LD、Open Graph、マイクロデータ)を読み取り、それがない場合はページに表示されている価格を参照するため、一般的なショップのページで動作します。大手小売店が自動リクエストをブロックした場合は、そのことを明確に伝え、価格を手動で記録できるため、履歴を保持できます。すべてのデータは、お使いのマシン上のJSONファイルに保存されます。

theluckystrike が開発しました。

公式 MCP Registryに登録されています(io.github.theluckystrike/price-tracker-drop-alert-watch)。

価格トラッカーのデモ

チャットから任意の商品ページを監視して値下がりを確認できます。スクレイピングサービスもアカウントも不要で、すべてローカルで動作します。

60秒でインストール

@theluckystrike/mcp-price-tracker の npm 公開は保留中です。それまでは、ワンクリックの .mcpb バンドル、またはクローンしてビルドする方法が利用できます。 どちらも以下の手順で動作確認済みです。

ワンクリック(.mcpb):最新リリースから price-tracker.mcpb をダウンロードし、Claude Desktop でダブルクリックします: https://github.com/theluckystrike/mcp-servers/releases/latest

(claude_desktop_config.json):

{
  "mcpServers": {
    "price-tracker": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-price-tracker"]
    }
  }
}

Claude Code:

claude mcp add price-tracker -- npx -y @theluckystrike/mcp-price-tracker

(.cursor/mcp.json):

{
  "mcpServers": {
    "price-tracker": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-price-tracker"]
    }
  }
}

上記の npx 形式は、パッケージが公開されるとすぐに使えるようになります。それまでは、上記の .mcpb バンドルを使用するか、 以下の3つのコマンドだけでソースからビルドしてください:

git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-servers
npm install
npm run build -w packages/mcp-license -w servers/price-tracker

次に、クライアントの command を node に設定し、引数として servers/price-tracker/dist/index.js の絶対パスを指定します。

Pro モードで実行するには、同じ設定ブロックで MCP_LICENSE_KEY を設定するか、キーを指定して一度 license_activate を呼び出してください。

ツール

ツール内容
price_checkページを今すぐ取得します。価格、通貨、タイトル、抽出の信頼度、およびそのURLで最後に保存された観測値からの変化を返します。監視対象にする必要はありません。
watch_addURLの追跡を開始します。最初の観測値を保存します。label、target_price、currency は任意です。
watch_list現在の価格、最小値、最大値、変化、目標価格、信頼度、情報源を含む、すべての監視対象を表示します。
watch_removeid または url を指定して、追跡を停止します。
watch_refresh1つの監視対象(id)またはすべて(all: true)を再取得します。観測値を追加し、現在値、前回値、最小値、最大値、変化率、目標達成フラグを返します。価格を確認するのはこのツールだけです。
price_history1つの監視対象について、保存された観測値を古い順に表示します。limit を指定できます。
price_add_manualボットをブロックするショップ向けに、自分で確認した価格を記録します。必要に応じて監視対象を作成します。
alerts_pending最新価格が目標価格以下の監視対象、または前回の観測値から5%以上値下がりした監視対象を表示します。無料です。
license_statusFree または Pro の状態と、アップグレード方法を表示します。
license_activatePro キーを有効化します。オフラインで検証されます。

リソース:prices://watches - 最新価格を含むすべての監視対象のJSONです。

プロンプト:check_prices - すべての監視対象を更新し、値下がりと目標達成を1つのコマンドで要約します。

できること

こう言うとツール
「今の価格はいくらですか?:<url>」price_check
「このページを監視して、40未満になったら知らせてください。」watch_add
「監視中のものをすべて表示して、値下がりしたものがあるか教えてください。」watch_refresh(すべて)を実行してから watch_list
「そのノートパソコンは別のところで買ったので、追跡をやめてください。」watch_remove
「監視対象を更新してください。」watch_refresh
「監視中の本棚の価格履歴を教えてください。」price_history
「自分で確認したところ、店頭価格は39.99 GBPでした。記録してください。」price_add_manual
「監視中のものが目標価格に達したり、大幅に値下がりしたりしましたか?」alerts_pending
「無料プランとProのどちらを利用していますか?」license_status
「ライセンスキーはこちらです。有効化してください。」license_activate

実行例

docs/USER_VALUE_R2.md にある、books.toscrape.com を対象とした実際の実行例です。WebFetch/WebSearch は 使用できないため、価格トラッカー独自のツールで回答する必要がありました。

You: What does this cost right now: https://books.toscrape.com/catalogue/...?

  price_check { url: "https://books.toscrape.com/catalogue/..." }
  -> price 51.77, currency GBP, source regex-fallback, confidence low

Assistant: GBP 51.77. Confidence: low (regex-fallback) -- this page has no
structured price data, so I read it from the visible text.

信頼度ラベルは飾りではありません。books.toscrape.com には JSON-LD もマイクロデータもないため、テストで価格を取得できたのは 正規表現によるフォールバックだけを使ったこのケースのみでした。また、モデルは促されることなく「低」というラベルをユーザーに伝え、 51.77 を確定した事実として述べませんでした。

アラート:バックグラウンドでは動作しません

スケジューラーもデーモンもありません。監視対象は保存された履歴であり、サブスクリプションではありません。価格が再取得されるのは watch_refresh の実行時だけで、alerts_pending はすでに保存されているデータを報告します。セッションの開始時に 「監視対象を更新して」 と伝える(または check_prices プロンプトを実行する)のが基本の使い方です。その後、値下がりしたものを尋ねてください。

Free と Pro

FreePro(19ドル、買い切り)
price_check無制限無制限
alerts_pendingはい、無制限はい、無制限
監視対象3件無制限
監視対象ごとの履歴直近30件の観測データ全履歴
watch_refresh(1件)はいはい
watch_refresh(すべてを一括)いいえはい
price_add_manualはいはい
リダイレクトの確認と抽出の信頼度はいはい

Pro を入手 — このサーバーは19ドル、全サーバーを利用できる買い切りプランは39ドルです。

価格の読み取り方法

次の順に読み取ります。JSON-LD の Product/Offer(price、priceCurrency、lowPrice)、マイクロデータの itemprop="price"、Open Graph の og:price:amount/product:price:amount、meta itemprop、data-price 属性、価格を示す一般的なクラス名と ID(Amazon の a-offscreen を含む)、最後に可視テキストの先頭 200 KB に対する正規表現です。ヨーロッパ式と米国式の両方の区切り文字に対応しているため、1.299,00 EUR と 1,299.00 USD はどちらも 1299.00 になります。

価格は、主要通貨単位の小数文字列として、小数点に . を使い、桁区切りなしで保存されます。たとえば "1299.00" です。タイムスタンプは ISO 8601 UTC 形式です。

読み取った価格にはすべて信頼度が付きます。JSON-LD、マイクロデータ、meta itemprop、Open Graph は high、data-price 属性と価格を示すクラス名または ID は medium、正規表現によるフォールバックは low です。商品タイトルがないページで low の価格が読み取られた場合、報告はされますが保存はされません。

ページの JSON-LD に複数の商品(おすすめ商品、「あわせて購入されている商品」など)が記載されている場合、ある商品の価格情報が別の商品と混在することはありません。商品名がページタイトルと一致する商品が優先され、一致するものがなければ、価格情報を持つ最初の商品が使われます。取り消し線付きの価格や以前の価格(<s>、<del>、<strike>、および old-price、was、compare-at-price、list-price、rrp などのクラス)は無視されるため、現行価格 99 の横に取り消し線付きの 199 があっても、報告される価格は 99 です。数値の横に記載された ISO コード(「$10 USD」など)は、ドメインから推測される通貨より優先されます。また、twitter:data1 にある「$50 以上で送料無料」のような自由形式のテキストは価格として読み取られません。

ページはデスクトップブラウザーの User-Agent を使って取得され、タイムアウトは 12 秒、リダイレクトは追跡され、本文の上限は 2 MB です。取得後、最終 URL と指定した URL が比較されます。ショップが商品ページのパスからリダイレクトした場合(パスの階層が異なる、カテゴリーページやホームページに移動する、またはタイトルが「Products」、「Home」、ショップ名のみ、「not found」のような一般的なものになる場合)は、リダイレクト先の一覧にある最安商品ではなく、the shop redirected to <finalUrl>, which is not a product page が返されます。同じ商品 ID またはパスの前に正規スラッグが追加されるだけのリダイレクト(Newegg、Amazon の /dp/、Zalando 形式の URL など)は受け入れられ、拒否されません。

データの保存方法

監視対象とその価格履歴は、1 つの JSON ファイルに保存されます。 ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/price-tracker/watches.json。すべての変更(watch_add、 watch_remove、watch_refresh、price_add_manual)は、アドバイザリロックファイル .../price-tracker/.lock によるロック中に行われ、読み込みから変更、保存までの処理全体でロックが保持されるため、2 つの更新処理が同時に実行されても処理が交錯することはありません。price_check と読み取り専用ツールにはロックは不要です。保存時は一時ファイルに書き込み、その後ファイル名を変更するため、書き込みが中断されてもファイルが不完全な状態で残ることはありません。監視履歴をバックアップするには、watches.json をコピーしてください。

ファイルがない場合に限り、「監視対象なし」と見なされます。watches.json が存在していても読み込みまたは解析ができない場合、サーバーが空のファイルとして扱うことはありません。読み取れないバイト列は watches.json.corrupt-<timestamp> に移動され、障害内容は stderr に書き込まれます。また、サーバーを再起動するまで、すべてのツールはそのファイル名を含むエラーを返します。そのため、破損したデータベースが次の価格記録によって気付かれないまま上書きされることはありません。

制限事項と正直な注意点

  • 実環境での抽出成功率は、おおむね12件中5件です。大手小売業者を混ぜたサンプルでは、5サイトでボット対策の403エラーが返され(H&M、Allegro、MediaMarkt、Home Depot、Etsy)、1サイトではタイムアウトしました(Best Buy)。残りは、正しい価格を取得できたものと、意図的に取得を拒否したもの(商品ページから別のページへリダイレクトされたため)がありました。これはオープンウェブの特性であり、サーバーで修正できるバグではありません。設計上、ヘッドレスブラウザーやCAPTCHA ソルバーはありません(ネイティブ依存関係なし、有料 API なし)。ブロックされたショップには、price_add_manual をご利用ください。
  • バックグラウンドジョブはありません。 あなた自身(または自身で実行するスケジュール済みスクリプトを介したクライアント)が watch_refresh を呼び出さない限り、価格は確認されません。これは機能不足ではありません。ローカルの stdio サーバーが、あなたのマシン上でデーモンを実行するのは適切ではありません。
  • 無料プランでは、監視対象は3件まで、履歴は監視対象ごとに直近30件までです。無料プランでも price_check と alerts_pending は無制限で利用できます。
  • 信頼度が low の正規表現による読み取り結果も報告されますが、確実な情報として扱われることはありません。事実ではなく推定としてユーザーに伝えてください。

トラブルシューティング

  • npx がハングする、またはパッケージが見つからない:このパッケージの npm 公開は保留中です。公開されるまでは、上記の .mcpb バンドルまたはクローンしてビルドする方法をご利用ください。
  • .mcpb バンドルを使用する場合:Claude Desktop に直接インストールされるため、個別の設定手順はありません。
  • クローンする方法を使用する場合:npm run build の実行後、サーバーバイナリは servers/price-tracker/dist/index.js にあります。クライアントの command を node に設定し、引数としてこの絶対パスのみを指定してください。
  • Node のバージョン:Node >= 18 が必要です。node -v で確認してください。
  • 監視対象が常に「商品ページではありません」というエラーになる:ショップによって、指定した URL から別のページ(カテゴリーページ、ホームページ、または汎用タイトルのページ)へリダイレクトされています。ショップから正確な商品 URL を再取得して監視対象を追加し直すか、ショップがリダイレクトを続ける場合は price_add_manual を使用してください。
  • ショップから毎回403エラーが返される:自動リクエストがブロックされています。これは一部の大手小売業者で想定される動作です(上記の「制限事項」を参照)。price_add_manual を使用してください。
  • 何も表示されない/何も出力されずに失敗する:ログは stderr にのみ出力され、stdout には出力されません。Claude Desktop では「設定」→「開発者」→サーバーのログファイルを確認してください。Claude Code ではターミナルまたは --mcp-debug を確認してください。

プライバシー

すべてのデータは ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/price-tracker/watches.json にローカル保存されます。ネットワークリクエストは、指定した商品ページに対してのみ行われます。ライセンスキーはオフラインで検証され、データが外部に送信されることはありません。

併用できるツール

よくある質問

このサーバーにはスケジューラーがありません。価格が再読み込みされるのは、watch_refreshが実行されたときだけです。実行されるのは、依頼したとき(または、ご自身で設定したcron/launchdジョブから呼び出したとき)です。

店舗からボット対策の応答(403)が返されたか、リクエストが商品ページから一覧、カテゴリ、またはホームページにリダイレクトされました。誤った数値を返すのではなく、どちらの場合も実際の状況をそのまま報告します。価格の履歴を手動で続けるには、price_add_manualを使用してください。

価格は、ページ内の構造化データ(JSON-LD、microdata、Open Graph)ではなく、テキストパターンによるフォールバックから取得されました。通常は正確ですが、機械可読フィールドとの照合は行われていません。

watch_addとprice_add_manualではcurrencyを明示的に指定できますが、保存する数値は実際に確認した値と一致させてください。サーバーは通貨を換算しません。

いいえ。外部へのリクエストは、ページを取得するために追加した商品URLに対してのみ行われます。テレメトリもアカウントもありません。

MITライセンスです。

これらのドキュメントをMCPサーバーとして使う

どのMCPクライアント(Claude、Cursor、Windsurf、VS Code)からでも、インストール不要でGitMCP経由でこのリポジトリのドキュメントを直接読み取れます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。