mcpField
P
prices-deal

prices-deal

本地服务
mcp.zovo.one商业与营销21 天前更新

关于 prices-deal

prices-deal 是用于查询商品价格并在本地保存跟踪记录的 MCP 服务。它从商品页提取价格,支持目标价和降价提醒;商店阻止自动请求时也可手动记录。

主要功能

  1. 01查询商品页当前价格
  2. 02按网址跟踪并设置目标价
  3. 03查看价格历史与变化
  4. 04报告目标价命中和降价
  5. 05为受阻商店手动录入价格
  6. 06将跟踪数据存入本地 JSON 文件

适用场景

  1. 01购买前查询商品价格
  2. 02跟踪商品是否达到目标价
  3. 03查看多个商品的价格变化
  4. 04为受阻商店保留价格记录

MCP 相关

向 MCP 客户端提供价格查询、跟踪管理、历史、提醒和手动录入工具。另提供跟踪记录资源,以及刷新并汇总价格的提示词。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbprice-tracker.mcpb0.22.5

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mcp-price-tracker

入选 Awesome MCP Servers - 目录条目 | 在线托管端点,免费套餐,无需注册。

询问助手某样商品现在的价格。给它任意商品页面,它就会读取页面上的价格并记住;下次告诉你价格是否有变、变动幅度,以及是否达到你等待的价格。它通过读取大多数商店已发布的结构化数据(JSON-LD、Open Graph、microdata)来处理普通商店页面;如果页面没有这些数据,则回退到读取可见价格。当大型零售商屏蔽自动请求时,它会明确告知你,并允许你手动记录价格,让历史记录保持完整。所有内容都存储在你自己的设备上的 JSON 文件中。

由 theluckystrike 构建。

已加入 官方 MCP Registry(io.github.theluckystrike/price-tracker-drop-alert-watch)。

price-tracker 演示

在聊天中监控任意商品页面的降价,无需抓取服务或账户,所有数据均保存在本地。

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 安装包,或通过以下三条命令从源代码构建:

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_add开始监控一个 URL,并存储首次观察结果。可选参数:label、target_price、currency。
watch_list列出所有监控项及其当前价格、最低价、最高价、变动、目标价格、置信度和来源。
watch_remove按 id 或 url 停止监控。
watch_refresh重新抓取一个监控项(id)或全部监控项(all: true);追加观察记录,并返回当前价、之前的价格、最低价、最高价、变动百分比及是否达到目标的标记。这是唯一会检查价格的工具。
price_history返回某个监控项已存储的观察记录,按时间从早到晚排列,可选参数 limit。
price_add_manual为屏蔽机器人的商店记录你手动读取的价格;如有需要会创建监控项。
alerts_pending列出最新价格不高于目标价格,或较上次观察下降 5% 或以上的监控项。免费。
license_status显示免费版或 Pro 版,以及升级方式。
license_activate激活 Pro 密钥。离线验证。

资源:prices://watches - 包含所有监控项及其最新价格的 JSON。

提示词:check_prices - 刷新所有监控项,并在一条命令中汇总降价和达到目标的情况。

你可以这样说

你说工具
“现在这个商品多少钱:<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

示例

针对 books.toscrape.com 的一次真实运行,摘自 docs/USER_VALUE_R2.md。由于禁用了 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 提示词),然后询问价格有哪些下降。

免费版与 Pro

免费版Pro(一次性支付 $19)
price_check不限次数不限次数
alerts_pending是,不限次数是,不限次数
关注项3 个不限数量
每个关注项的历史记录最近 30 次观察记录完整历史记录
watch_refresh 单个项目是是
watch_refresh 一次刷新全部项目否是
price_add_manual是是
重定向检查和提取置信度是是

获取 Pro - 此 MCP 服务售价 $19,所有 MCP 服务的终身套餐售价 $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 等类名)会被跳过,因此相邻的划线价 199 和现价 99 会报告 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 或路径前插入规范 slug(Newegg、Amazon /dp/、Zalando 风格的 URL),则会接受,不会拒绝。

如何存储数据

监控商品及其价格历史记录存储在一个 JSON 文件中: ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/price-tracker/watches.json。每次修改(watch_add、 watch_remove、watch_refresh、price_add_manual)都会在建议锁文件保护下进行: .../price-tracker/.lock。锁会在整个读取、修改和保存过程中持有,因此两个同时运行的刷新操作不会交错。price_check 和只读工具不需要锁。保存时会先写入临时文件,再将其重命名到目标位置,因此即使写入中断,也不会留下只写入一半的文件。要备份监控历史记录,请复制 watches.json。

只有文件缺失才表示“尚无监控项”。如果 watches.json 存在但无法读取或解析,服务绝不会将其视为空文件:无法读取的字节会被移至 watches.json.corrupt-<timestamp>,故障信息会写入 stderr,并且在重启服务之前,所有工具都会返回一条指出该文件的错误。因此,损坏的数据库不会被之后记录的价格悄悄覆盖。

限制与诚实说明

  • 在实际场景中,提取成功率约为 5/12,测试样本涵盖多家大型零售商:5 个网站直接返回了机器人拦截 403(H&M、Allegro、MediaMarkt、Home Depot、Etsy),1 个超时(Best Buy),其余网站则有的返回正确价格,有的则有 1 次因重定向离开商品页面而主动拒绝读取。这是开放网络本身的特点,不是服务端可以修复的 Bug。这里不会使用无头浏览器或 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 检查。
  • 监控项总是报错“不是商品页面”:商店将你提供的网址重定向到了其他页面(分类页、主页或通用标题页面)。请从商店重新获取准确的商品网址并重新添加监控项;如果商店一直重定向,则使用 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 直接读取此仓库的文档,无需安装:

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。