mcpField
P
Portage Store

Portage Store

本地服务
portage.readthedocs.io商业与营销21 周前更新

关于 Portage Store

Portage Store 面向消费者、Agent 开发者和商家,提供购物命令行工具与 Agent 技能。它可搜索真实商店的商品,并通过明确审批、消费限额和结账交接来处理购买。

主要功能

  1. 01搜索商店目录与商品
  2. 02查询报价、审批并购买
  3. 03命令行工具与购物技能
  4. 04消费限额与付款审批
  5. 05受限商店的结账交接

适用场景

  1. 01查找不同网店的商品
  2. 02审批购买前比较价格
  3. 03让 Agent 准备商店结账
  4. 04开发购物 Agent 或商家协议

MCP 相关

`portage mcp` 命令会启动 stdio MCP 服务,提供搜索、报价、审批和购买工具。购买仍受 Portage 的审批与消费策略约束。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"tomtom87-portage-ucp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SHOPIFY_SHOP_DOMAIN",
"-e",
"SHOPIFY_STOREFRONT_ACCESS_TOKEN",
"-e",
"SHOPIFY_ADMIN_ACCESS_TOKEN",
"ghcr.io/tomtom87/portage-ucp:0.17.0"
],
"env": {
"SHOPIFY_SHOP_DOMAIN": "<SHOPIFY_SHOP_DOMAIN>",
"SHOPIFY_STOREFRONT_ACCESS_TOKEN": "<SHOPIFY_STOREFRONT_ACCESS_TOKEN>",
"SHOPIFY_ADMIN_ACCESS_TOKEN": "<SHOPIFY_ADMIN_ACCESS_TOKEN>"
}
}
}
}
启动命令docker run -i --rm -e SHOPIFY_SHOP_DOMAIN -e SHOPIFY_STOREFRONT_ACCESS_TOKEN -e SHOPIFY_ADMIN_ACCESS_TOKEN ghcr.io/tomtom87/portage-ucp:0.17.0
需要配置的环境变量
SHOPIFY_SHOP_DOMAINYour shop, e.g. your-shop.myshopify.com
SHOPIFY_STOREFRONT_ACCESS_TOKEN密钥Storefront API access token
SHOPIFY_ADMIN_ACCESS_TOKEN密钥Admin API access token (optional)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/tomtom87/portage-ucp:0.17.0

工具

还没有获取到工具列表

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

详细介绍

Portage

gem version gem downloads homebrew ruby license docs Claude Code plugin MCP UCP OpenClaw skill Portage MCP server – quality and maintenance score on Glama

portage buy searching The Light Yard over UCP and opening the checkout for a gold leaf bathroom wall light

Portage 可让 AI Agent 为你在真实的在线商店中查找并购买商品,每笔付款都由你审批。它提供命令行工具(portage)、用于驱动该工具的 Claude Code 插件(buy),以及 Ruby gems,让任何商店都能向购物 Agent 提供相同的开放协议(MCP 和 UCP)。适用于希望 Agent 代为购物的人、构建购物 Agent 的开发者,以及希望 Agent 在自家商店购物的商家。

状态: pre-1.0。小版本之间的 API 仍可能变更。最新发布版本:0.22.0(更新日志)。

快速入门

有两种方式:使用 buy 插件让 Claude 帮你购物,或自行运行 portage CLI。两种方式使用相同的 CLI,约五分钟即可完成。

安装 buy 插件

该插件会教 Claude Code 通过 portage CLI 购物,因此请先安装 CLI。

  1. 安装 CLI(portage-cli 0.9.0 或更高版本):

    brew install tomtom87/portage/portage
    

    或者,如果使用 Ruby 3.2 或更高版本,运行 gem install portage-cli。Homebrew 会打包所有适配器。使用 RubyGems 时,如果需要 Portage 浏览器配置文件和结账自动填充功能,还要安装 portage-ucp-webmcp 0.2.0 或更高版本。

  2. 添加插件。 在 Claude Code 中:

    /plugin marketplace add tomtom87/Portage
    /plugin install buy@portage
    

    或者在 shell 中运行:

    claude plugin marketplace add tomtom87/Portage
    claude plugin install buy@portage
    
  3. 在终端中运行一次 portage setup。 它会逐项询问你的收货地址、可选的搜索密钥和消费上限,每项都可以跳过。这是交互式流程,因此请自行运行,不要通过 Claude 运行。

  4. 向 Claude 提出请求。 输入 /buy a burton snowboard under $600,或者直接用自然语言提问。该技能会显示为 buy:buy。Claude 会检查你的设置、显示真实优惠和模拟运行总额,并在购买前等待你确认。

要更新或移除此插件:

claude plugin marketplace update portage
claude plugin update buy@portage        # then restart Claude Code

claude plugin uninstall buy@portage
claude plugin marketplace remove portage

Claude 插件目录中的收录即将推出。在此之前,请通过此市场安装。

其他 Agent:Codex、Cursor、OpenCode 等

buy 技能是一个纯 SKILL.md 文件,因此任何能加载技能并在你的机器上运行命令的 Agent 都可以使用它。请先按上述说明安装 CLI 并运行 portage setup。该插件还包含第二个技能 shop-research:只读技能,用于回答价格、库存、商店和订单相关问题,不执行购买;需要购买时,它会转交给 buy。按照相同方式将它安装在 buy 旁边。

  • 使用 dotagents(Codex、Cursor、OpenCode):运行一条命令即可将插件安装到 ~/.agents/,并生成各个 Agent 的插件或技能文件。

    npx @sentry/dotagents add tomtom87/Portage
    

    使用 npx @sentry/dotagents install 更新。使用 npx @sentry/dotagents remove buy 移除。如果你的 agents.toml 只允许受信任的来源,请先运行 npx @sentry/dotagents trust add tomtom87/Portage。

  • 作为普通技能使用(VS Code,或任何不支持插件的 Agent):将 plugins/buy/skills/buy/ 文件夹复制到 Agent 的技能目录,并将 plugins/buy/skills/shop-research/ 放在它旁边。使用 dotagents 时,在 ~/.agents/agents.toml 中声明这些技能,然后运行 npx @sentry/dotagents install,即可将它们安装到 ~/.agents/skills/buy 和 ~/.agents/skills/shop-research:

    [[skills]]
    name = "buy"
    source = "tomtom87/Portage"
    path = "plugins/buy/skills/buy"
    
    [[skills]]
    name = "shop-research"
    source = "tomtom87/Portage"
    path = "plugins/buy/skills/shop-research"
    
  • OpenClaw。 先安装 CLI(见上文),然后从 ClawHub 安装技能:openclaw skills install @tomtom87/portage-buy 会将其安装到当前使用的 OpenClaw 工作区,clawhub install @tomtom87/portage-buy 则会将其安装到当前目录下的 ./skills(ClawHub 文档)。然后运行 portage setup。该技能的 frontmatter 包含 OpenClaw 的 metadata.openclaw 区块(需要 portage 二进制文件,将读取的每个环境变量都标记为可选,并包含 brew 安装规范),因此 OpenClaw 会在安装 portage 之前禁用该技能。若要跳过 ClawHub,请使用上文的普通技能安装方式:OpenClaw 会从 ~/.agents/skills 读取个人技能,并从 ~/.openclaw/skills 读取托管技能(OpenClaw 技能文档),因此可将 plugins/buy/skills/buy/ 复制或符号链接到其中任一目录。shop-research 也发布在 ClawHub 上,名称为 @tomtom87/portage-shop-research(以相同方式安装),也可以复制或符号链接 plugins/buy/skills/shop-research/。其 frontmatter 具有相同的 metadata.openclaw 结构,只包含其中列出的搜索和零售商密钥。ClawHub 会以 MIT-0 许可证重新发布技能;此仓库仍采用 MIT 许可证。

  • OpenClaw 插件。 如果想使用类型化工具而非 shell 命令,请安装原生插件:在安装 CLI(portage-cli 0.12.0 或更高版本)并运行 portage setup 后,执行 openclaw plugins install clawhub:tomtom87/portage。它会通过 CLI 向 Agent 提供 portage_* 工具,并附带 buy、shop-research 和一个简短的 OpenClaw 技能,用于将购买的每个步骤对应到相应工具。只读工具默认启用;用于定价、审批、购买或交接的工具需在 OpenClaw 的工具设置中选择启用。支出策略和审批仍由 Portage 管理,任何工具都不能对 URL 传递 --yes 或放宽你的限制。请参阅插件 README。

  • Omarchy(Arch Linux)。使用 Omarchy 自带的辅助工具安装 CLI:omarchy-mise-install gem:portage-cli portage,它会按照 Omarchy 安装 claude、codex 和 gh 的方式,写入 ~/.local/bin/portage 包装脚本。也可以使用普通的 mise(mise use -g gem:portage-cli)或 Linux 上的 Homebrew(brew install tomtom87/portage/portage)。然后运行 portage setup。标准 Omarchy 需要先运行 sudo pacman -S --needed make:Ruby 3.4 会原生编译 bigdecimal,gcc 已通过 clang 提供,缺少的只有 make。对于技能,请将 plugins/buy/skills/buy/ 和 plugins/buy/skills/shop-research/ 链接到所用 Agent 的技能目录。Omarchy 自带的配置会创建指向 ~/.agents/skills(OpenClaw 和 dotagents 方式)、~/.claude/skills(Claude Code;优先使用上文的插件方式)和 ~/.codex/skills 的链接。

  • 浏览器中的聊天应用(ChatGPT、Grok 等)无法在你的机器上运行 portage,因此不能使用该技能。请改用厂商的编码 Agent 或 CLI(如果支持加载技能)。

在任意 MCP 客户端中使用 Portage

portage mcp 通过标准输入/输出,为任何可运行本地服务的客户端提供相同的搜索、报价、审批和购买工具。先安装 CLI(brew install tomtom87/portage/portage 或 gem install portage-cli,版本为 0.14.0 或更高),然后在终端中运行 portage setup。支出政策和审批由 Portage 管理:Agent 可以搜索和查看价格,但购买需要等待你的审批。

  • Claude Desktop。 将以下内容添加到 claude_desktop_config.json(Settings、Developer、Edit Config),然后重启。Claude Desktop 不会继承 shell 的 PATH,因此请使用 which portage 返回的绝对路径(通常是 /opt/homebrew/bin/portage 或 /usr/local/bin/portage):

    {
      "mcpServers": {
        "portage": { "command": "/opt/homebrew/bin/portage", "args": ["mcp"] }
      }
    }
    
  • Claude Code。 运行 claude mcp add --scope user portage -- portage mcp(去掉 --scope user,即可仅用于当前项目)。

  • Docker。 运行 docker run -i --rm -v "$HOME/.portage:/root/.portage" ghcr.io/tomtom87/portage-mcp:0.14.0,即可通过镜像仓库中的镜像运行相同的服务。容器无法打开浏览器,因此移交操作会打印结账链接。

自行使用 CLI

按照上面的第 1 步安装 CLI,运行 portage setup,然后:

portage find --query "burton snowboards" --json
portage buy "burton snowboards" --max-price 600 --dry-run --json

find 无需密钥即可使用。其默认搜索使用 DuckDuckGo 的免密 API,可以解析品牌和商店名称(“burton snowboards”),但无法处理开放式查询(“waterproof hiking boots”)。如需处理这类查询,请添加 Brave 或 Google 搜索密钥:portage setup 会提示你设置,搜索后端中也有详细说明。不带商店 URL 的 buy 会列出商品;在终端中,你可以选择其中一项。--dry-run 会显示实际总价,且绝不会扣款。

提供商店 URL 后,buy 会直接访问该商店的 /.well-known/ucp 清单:

portage buy https://some-ucp-store.example --query "hoodie" --dry-run --json

如需实际购买,请先登记付款方式(portage payment enroll <store-url>),设置支出上限(portage policy set),然后移除 --dry-run 并添加 --yes。buy 只会通过商店公布的 UCP 端点或你已持有凭据的平台 API(你自己的商店)完成结账。其他情况都会转为移交。它绝不会抓取网页。CLI 教程介绍了所有这些操作,包括搜索结果为空时的处理方法。

portage setup 会将设置保存到 ~/.portage/.env(权限为 chmod 600),.env.example 列出了所有变量。只有 ~/.portage/.env 会自动加载,当前目录中的 .env 不会,因此克隆的仓库无法悄悄重定向你的购买或流量(原因)。有关升级、在同一个 PATH 中安装两个版本以及 Linux 密钥环的信息,请参阅安装。

如何完成购买

大多数商店不允许第三方完成付款,因此 buy 通常会构建购物车并将操作移交给你:

层级操作默认状态
A在你自己的浏览器中打开结账页面。由你付款。开启
BPortage 在单独的浏览器配置文件中构建购物车,然后停在付款步骤。由你付款。关闭(可选择启用)
C仅移交操作。Portage 打开页面,由你自行购买。不会向网站发送请求,不会抓取网页,也不会进行任何形式的自动化。所有 Amazon 网站,以及 walmart.com、ebay.com、bestbuy.com 和你添加的任何主机

Amazon 及类似零售商在服务条款中限制自动化购买 Agent,因此 Portage 绝不会对它们进行自动化操作。Amazon 条目默认启用,可由你编辑;walmart.com、ebay.com 和 bestbuy.com 始终仅移交操作。详情请参阅层级和移交目标。

安全

这些规则适用于所有层级,包括 CLI 和插件:

  • 不处理原始银行卡数据。 银行卡数据绝不会经过 Portage。支付方式是通过 portage payment enroll 获取的令牌,保存在你的操作系统钥匙串中;插件会拒绝任何看起来像银行卡号的内容。
  • 每笔付款都由你批准。 未经你明确同意,不会购买任何商品。仅凭 --yes 绝不会购买搜索结果:你必须指定商店。插件会显示供你选择的商品,以及待批准的确切总金额;每个商品都附有商品页面链接,一次确认只对应一次购买。portage policy set --require-approval person 可确保只有你在自己的终端中输入的确认才算数。通过浏览器交接时,由你点击付款。
  • 你的浏览器机密信息不会被读取。 Portage 绝不会读取浏览器的密码、Cookie 或自动填充数据,也绝不会连接到你的默认浏览器配置文件。
  • 不绕过 CAPTCHA 或反机器人拦截。 Portage 会报告此类情况并交由你处理。
  • 支出上限。 portage policy set 可设置单笔、滚动周期和消费频率上限,以及商店允许列表。

Portage 是按原样提供的开源软件,不提供任何形式的保证(MIT)。你如何在任何网站上使用它,以及是否遵守该网站的条款,均由你自行负责。请按照 SECURITY.md 中的说明报告安全问题。

命令

portage --help 会显示此帮助信息。各命令的标志和环境变量见 portage-cli/README.md,也可查阅发布的 CLI 参考。

usage: portage buy <url> --query "..." [--qty N] [--payment-token TOKEN]
                          [--product-id ID] [--yes] [--dry-run]
                          [--auto-open|--no-auto-open] [--notify-webhook URL]
                          [--handoff-target default|print|profile|agent:NAME]
                          [--decision-backend jev|laya] [--min-confidence N] [--json]
                          [--wait [--wait-timeout DURATION|off]]
       portage buy --offer REF [--qty N] [--yes] [--dry-run] ...
       portage buy --quote QUOTE_ID --yes [--json] ...
       portage buy --query "..." [--store URL] [--max-price N] [--limit N] ...
       portage find --query "..." [--max-price N] [--limit N] [--json]
       portage compare <url> --product-id ID [--id VALUE ...] [--results N]
                              [--max-price N] [--json]
       portage check <url> [--json]
       portage pick [--search LAST|SEARCH_ID] [--via auto|tty|agent] [--json]
                    [--choose REF | --compare REF | --view REF]
       portage approve QUOTE_ID [--via auto|tty|agent] [--relayed-yes | --view] [--json]
       portage history [list] [--purchases|--searches] [--limit N] [--json]
       portage history clear [--purchases|--searches]
       portage payment list [--json]
       portage payment enroll <url> [--label NAME] [--json]
                              [--scope-merchant HOST ...] [--scope-max-amount N] [--scope-currency CUR]
       portage payment set-default <id>
       portage payment remove <id>
       portage payment freeze <id>
       portage payment revoke <id>
       portage policy show [--json]
       portage policy set [--per-transaction-cap N --currency CUR]
                           [--rolling-cap N --rolling-window-seconds N --currency CUR]
                           [--velocity-count N --velocity-window-seconds N]
                           [--allow HOST ...] [--clear-allowlist]
                           [--require-approval person|any|off]  (lowering asks at a terminal)
       portage orders reconcile [--checkout ID] [--json]
       portage index build [--sources a,b] [--queries FILE] [--dry-run] [--export DIR] [--json]
       portage index refresh [--sources a,b] [--queries FILE] [--dry-run] [--export DIR] [--json]
       portage index show [--stores|--products [--page N] [--per-page N]] [--json]
       portage index search QUERY [--category ID] [--store HOST] [--limit N] [--json]
       portage index add <url> [--crawl] [--json]
       portage index remove <host> [--json]
       portage index sources [--json]
       portage browser import [--browser chrome|edge|brave|arc|firefox|safari] [--profile-root DIR]
                              [--history-days 90] [--include-product-pages] [--max-probes 200]
                              [--exclude HOST,HOST] [--dry-run] [--yes] [--json]
       portage browser profile init|open|status [--browser chrome|edge|brave|arc] [--port N]
                              [--url URL (open only)] [--json]
       portage doctor [--require FILE] [--adapter CLASS_NAME] [--json]
       portage configure [--require FILE] [--adapter CLASS_NAME] [--json]  (alias for doctor)
       portage setup [--json]  (interactive wizard on a TTY; --json/no TTY: today's doctor report)
       portage generate adapter NAME [--dir DIR]
       portage generate agent-profile [--out FILE] [--key-out FILE] [--rotate]
       portage --version

     proxy flags (buy/find/compare/doctor/payment enroll):
       [--proxy URL] [--proxy-mode forward|gateway] [--proxy-header "Name: value"]
       [--no-proxy HOSTS] [--proxy-route ROUTE=URL|direct] [--proxy-chain URL,URL,...]
       [--proxy-passthrough HEADER] [--proxy-ca FILE] [--no-env-proxy]

软件包和文档

包版本适用对象功能文档
buy 插件0.10.5购物者通过 portage 购物的 Claude Code 插件,另附只读的购物研究技能购物技能,购物研究技能
portage-cli0.15.0购物者portage 命令CLI 参考,教程
shop-via-ucp 技能–Agent 构建者通过商店的 UCP 端点购物,可使用或不使用 portage技能页面
browse-via-ucp 技能–Agent 构建者只读:查看商店的清单、目录,以及是否支持自动化购物技能页面
portage-ucp-client0.7.0Agent 构建者Ruby 客户端:连接到商店的清单,或以购物者 Agent 的身份驱动自己的 Adapter操作指南,Agent 配置,工具门控
portage-ucp-decision0.1.2Agent 构建者商品排名、升级处理策略、置信度门控(Jev/Laya)、PolicyGuard–
portage-ucp-journal0.1.1Agent 构建者买家侧购买日志及其 Store 抽象–
portage-ucp-webmcp0.2.0两者WebMCP 传输:在页面中提供工具,或驱动页面的工具(Tier B 配置、自动填充)–
portage-ucp0.17.0商家协议核心:Adapter 合约、能力注册表、清单构建器、MCP 服务提供 /.well-known/ucp,安全钩子,库用法
serve-via-ucp 技能–商家设置商店自己的 UCP 端点技能页面
portage-ucp-shopify0.6.1商家Shopify Admin 和 Storefront GraphQL API–
portage-ucp-wix0.2.1商家Wix Stores Catalog 和 eCommerce REST API–
portage-ucp-woocommerce0.3.0商家WooCommerce Admin REST API 和 Store API–
portage-ucp-bigcommerce0.2.1商家BigCommerce v3 Catalog/Carts/Checkouts 和 v2 Orders API–
portage-ucp-magento0.2.1商家Magento/Adobe Commerce REST v1–
portage-ucp-etsy0.1.5商家Etsy Open API v3 目录和订单;结账通过重定向链接完成–
portage-ucp-instagram0.2.0商家Meta Commerce Catalog;结账通过重定向链接完成;get_order 已弃用,并将在 Meta 于 2026-10-27 移除其 Order Management 端点后停止工作–

商家: 适配器 gem 或你自己的 portage-ucp Adapter 子类,可通过 MCP 和 UCP 提供你的商品目录、购物车和结账功能。每个适配器 gem 都附带一个 exe/ 服务端和 PORTAGE_UCP_CONFIG 钩子,并提供通用的 examples/portage_ucp.rb 起点(库用法、凭据、能力覆盖范围)。在 Shopify 上,原生 Universal Commerce Agent 应用无需编写代码即可处理结账和订单;Portage 则添加 cart、catalog 和签名清单(提供 /.well-known/ucp)。

贡献者和适配器作者: 架构 · 编写适配器 · 规范符合性 · 开发 · CONTRIBUTING.md。 阅读文档的 AI Agent: 文档网站提供 llms.txt 和 llms-full.txt。

在代理后运行

buy、find、compare、check、doctor 和 payment enroll 接受 --proxy* 标志。同样的设置也可通过 PORTAGE_PROXY* 环境变量或 ~/.portage/config.json 中的 "proxy" 部分配置。未配置的项目会回退到标准的 HTTPS_PROXY/HTTP_PROXY/NO_PROXY 变量,但支付流量除外:除非为其指定代理,否则会直接连接。portage doctor 会显示每条路由实际生效的代理,并隐藏凭据。有关企业出口流量、轮换代理池、API 网关、mitmproxy 和 nginx/Cloudflare 的配置示例,以及环境变量注意事项,请参阅 docs/proxy.md。

要求

Ruby 3.2 或更高版本,以及 mcp gem ~> 1.8(由 portage-ucp 引入)。Homebrew 公式自带 Ruby,因此通过 Homebrew 安装无需另行安装 Ruby。

贡献

欢迎在 tomtom87/Portage 提交错误报告和拉取请求。该项目尚未达到 1.0 版本,仍在跟进规范,因此任何超出错误修复范围的更改都请先提交 issue。CONTRIBUTING.md 介绍了工作流程;请遵守行为准则。

许可证

MIT。版权所有 (c) 2026 Tom Whitbread。

评论

支持 Markdown

第一次接触 MCP?

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

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