mcpField
T
trustrails

trustrails

本地服务
github.com/james-webdev搜索与检索03 周前更新

关于 trustrails

trustrails 是用于跨零售商搜索英国电子产品的 MCP 服务。它返回价格、库存情况和结构化规格以供比较,并可为选定商品提供更完整的零售商报价信息。

主要功能

  1. 01跨英国零售商搜索电子产品
  2. 02按品牌、类别、价格和规格筛选
  3. 03比较价格与库存情况
  4. 04获取零售商报价和商品详情

适用场景

  1. 01按预算和规格范围查找笔记本电脑
  2. 02比较不同零售商的耳机价格
  3. 03查看候选商品的库存和报价

MCP 相关

该 MCP 服务向兼容客户端提供商品搜索和商品详情工具。配置时使用 TRUSTRAILS_API_KEY 环境变量。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"app-trustrails-server": {
"command": "npx",
"args": [
"-y",
"@trustrails/mcp-server"
],
"env": {
"TRUSTRAILS_API_KEY": "<TRUSTRAILS_API_KEY>"
}
}
}
}
启动命令npx -y @trustrails/mcp-server
需要配置的环境变量
TRUSTRAILS_API_KEY密钥Optional TrustRails API key. If unset, the server uses the shared public key, which is rate-limited.

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

安装包
npm@trustrails/mcp-server1.0.28

工具

2

收录的工具列表 · 更新于 2 周前

参数类型必填说明
liteboolean否返回精简后的产品对象,仅包含必要字段(id、title、brand、price、currency、availability、image_url、purchase_url、offer_count、attributes(每项已知规格均为 {status, value},不含来源),以及在有约束时的 constraint_status)。始终设为 true;它仍会包含 attributes。仅在不需要 ean、category、provenance 或所有来源时才设为 false。
sortstring否排序方式:'relevance'(默认)、'price_asc'(有库存的商品优先,然后按价格从低到高)、'price_desc'(有库存的商品优先,然后按价格从高到低)。
brandstring否按品牌名称筛选(完全匹配,不区分大小写)。示例:Apple、Samsung、Sony、HP、Dell、Lenovo、Anker、Bose、LG
limitnumber否返回的产品数量上限(默认 50,最多 100)
querystring否仅填写细化搜索的词语——产品线、系列、型号变体、型号编号(例如 'neo'、'ultra'、'oled'、'WH-1000XM5'、's25 ultra')。切勿填写类别名称:错误示例 query='tablet'、query='smartwatch'、query='laptop'。请改用类别筛选器。切勿填写品牌名称:错误示例 query='Sony'。请改用品牌筛选器。切勿填写价格。按类别或品牌浏览时请完全省略此参数——“显示平板电脑” = category='Tablets',不设置 query。
categorystring否按产品类别筛选。仅使用以下精确值:Laptops、Desktops、Tablets、Phones、TVs、Monitors、Headphones、Speakers、Cameras、Keyboards、Mice、Printers、Networking、Storage、Gaming、Wearables、Drones、Audio、Cables & Chargers。注意:'Smartphones' 无效,请使用 'Phones'。'Televisions' 无效,请使用 'TVs'。
max_pricenumber否GBP 最高价格。
min_pricenumber否英镑最低价格。
constraintsobject否硬性规格要求,根据每件产品的 attributes 进行核验。格式为 {name: {op: number}},其中 op 为 eq、gte 或 lte;范围格式为 {gte, lte}。对所有运算符,存储容量按 3% 范围内匹配,屏幕尺寸按 0.5 英寸范围内匹配;整数屏幕尺寸 N 在 eq 和 lte 下也涵盖至 N+1(gte 不变);其他规格按以下规则匹配:gte 1024 接受 1TB 硬盘,eq 22 接受 21.5" 屏幕,eq 13 接受 13.6" 屏幕,lte 15 接受 15.6" 屏幕。示例:{"memory_gb": {"gte": 24}, "storage_gb": {"gte": 1000}, "screen_in": {"eq": 15}}。名称和单位:memory_gb(RAM,GB)、storage_gb(GB,1TB = 1000)、screen_in(英寸)、resolution_p(像素高度:4K = 2160,QHD = 1440,Full HD = 1080)、refresh_hz(Hz)、power_w(W)、wifi_gen(Wi-Fi 代际:6、6E = 6.5、7)。查询中写明的规格仅在明确指出规格类型时才计入('24GB RAM'、'1TB'、'144Hz'、'55"'),且表示至少达到该值,屏幕尺寸除外(表示该尺寸);单独的 '24GB' 仍仅作为搜索词。显式约束优先。单独的 '16GB' 或 '65W' 表示 gte;只有用户明确说“恰好”时才使用 eq,屏幕尺寸除外。
constraints.power_wobject否
constraints.power_w.eqnumber否
constraints.power_w.gtenumber否
constraints.power_w.ltenumber否
constraints.wifi_genobject否
constraints.wifi_gen.eqnumber否
constraints.wifi_gen.gtenumber否
constraints.wifi_gen.ltenumber否
constraints.memory_gbobject否
constraints.memory_gb.eqnumber否
constraints.memory_gb.gtenumber否
constraints.memory_gb.ltenumber否
constraints.screen_inobject否
constraints.screen_in.eqnumber否
constraints.screen_in.gtenumber否
constraints.screen_in.ltenumber否
constraints.refresh_hzobject否
constraints.refresh_hz.eqnumber否
constraints.refresh_hz.gtenumber否
constraints.refresh_hz.ltenumber否
constraints.storage_gbobject否
constraints.storage_gb.eqnumber否
constraints.storage_gb.gtenumber否
constraints.storage_gb.ltenumber否
constraints.resolution_pobject否
constraints.resolution_p.eqnumber否
constraints.resolution_p.gtenumber否
constraints.resolution_p.ltenumber否

详细介绍

TrustRails MCP 服务

搜索英国电子产品 - 比较价格、查找优惠,并在多家零售商中发现产品。

基于 Model Context Protocol (MCP) 构建 - 可与 Claude Desktop、Claude Code 及其他兼容 MCP 的 AI 助手配合使用。

npm version License: MIT


快速开始

无需安装 — 只需将 TrustRails 添加到 Claude 配置中。

配置

适用于 Claude Desktop(macOS 上的 ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "trustrails": {
      "command": "npx",
      "args": ["-y", "@trustrails/mcp-server"],
      "env": {
        "TRUSTRAILS_API_KEY": "mcp-public-2026"
      }
    }
  }
}

适用于 Claude Code(~/.config/claude/config.json):

{
  "mcpServers": {
    "trustrails": {
      "command": "npx",
      "args": ["-y", "@trustrails/mcp-server"],
      "env": {
        "TRUSTRAILS_API_KEY": "mcp-public-2026"
      }
    }
  }
}

就这么简单!重启 Claude 并开始搜索。


你可以做什么

自然语言产品搜索

只需自然地向 Claude 提问 — 它会将你的请求拆解为合适的查询和筛选条件:

"Find me a gaming laptop under £1000"
"I need Sony noise cancelling headphones"
"What HP laptops are available between £500-£700?"
"Show me Anker chargers"

Claude 会在多家英国零售商中搜索,并向你展示:

  • 实时价格和供货情况
  • 购买链接(trustrails.app/go/ 会通过联盟链接重定向至零售商)
  • 所有已知的结构化规格(attributes),让你仅凭搜索结果即可比较产品
  • 然后,只有当你需要搜索结果中没有的信息时,才对最终选出的 1-3 款产品调用 get_product:零售商的产品描述,或所有零售商的报价和购买链接(搜索结果仅包含最佳报价的 purchase_url,即有库存商品中的最低价)

可用工具

search_products

在 7 家零售商中搜索 26,000 多种英国电子产品,并比较价格。价格以英镑计。工具文本会指示助手先将请求拆解为筛选条件:品牌、类别和价格分别填入各自的参数;RAM、存储空间、屏幕尺寸、分辨率、刷新率、瓦数和 Wi-Fi 代际填入 constraints;剩余内容才填入 query。 参数:

  • query(字符串,可选)- 仅用于细化搜索的词:型号系列、系列、变体、型号(例如 'neo'、'ultra'、'oled'、'WH-1000XM5'、's25 ultra')。绝不能是类别名称(错误示例:query='tablet'、query='smartwatch'、query='laptop':应改用类别筛选器),也不能是品牌名称(错误示例:query='Sony':应改用品牌筛选器),更不能是价格。浏览某个类别或品牌时,请完全省略:'show me tablets' = category='Tablets',不设置 query。query 中的词必须出现在标题中,但用于命名类别的词除外(例如 Networking 类别中的 'router'),以及查找商品时会忽略、仅用于排序的纯数字或规格(例如 '4070'、'16GB')。型号必须带前缀('RTX 4070',而非 '4070'),并逐个检查标题是否包含该型号。不要加入 gaming、cheap 或 best 等用途词。
  • min_price(数字,可选)- 英镑最低价格。
  • max_price(数字,可选)- 英镑最高价格。
  • brand(字符串,可选)- 按品牌名称筛选(完全匹配,不区分大小写)。示例:Apple、Samsung、Sony、HP、Dell、Lenovo、Anker、Bose、LG
  • category(字符串,可选)- 按产品类别筛选。只能使用以下精确值:Laptops、Desktops、Tablets、Phones、TVs、Monitors、Headphones、Speakers、Cameras、Keyboards、Mice、Printers、Networking、Storage、Gaming、Wearables、Drones、Audio、Cables & Chargers。'Smartphones' 无效(应使用 'Phones'),'Televisions' 也无效(应使用 'TVs')。游戏耳机的类别应设为 category='Headphones',query='gaming headset':Gaming 类别仅包含游戏主机、控制器和配件。
  • constraints(对象,可选)- 硬性规格要求,针对每件产品的 attributes 进行检查。格式为 {name: {op: number}},其中 op 可为 eq、gte 或 lte;范围格式为 {gte, lte}。对每个运算符,存储容量允许 3% 的误差,屏幕尺寸允许 0.5 英寸的误差;整数屏幕尺寸 N 在 eq 和 lte 下也涵盖最高 N+1 英寸(gte 不变);其他规格均精确匹配:gte 1024 可匹配 1TB 硬盘,eq 22 可匹配 21.5" 屏幕,eq 13 可匹配 13.6" 屏幕,lte 15 可匹配 15.6" 屏幕。示例:{"memory_gb": {"gte": 24}, "storage_gb": {"gte": 1000}, "screen_in": {"eq": 15}}。名称和单位:memory_gb(RAM,GB)、storage_gb(GB,1TB = 1000)、screen_in(英寸)、resolution_p(垂直像素:4K = 2160、QHD = 1440、Full HD = 1080)、refresh_hz(Hz)、power_w(W)、wifi_gen(Wi-Fi 代际:6、6E = 6.5、7)。query 中写明的规格仅在同时注明规格类型时才计入('24GB RAM'、'1TB'、'144Hz'、'55"'),且表示至少达到该值;屏幕尺寸除外,表示该尺寸。单独的 '24GB' 仍视为搜索词。明确设置的 constraints 优先。普通的 16GB 或 65W 表示 gte;只有用户明确说“恰好”时才使用 eq,屏幕尺寸除外。使用 constraints 时,务必设置 category(以及已知时的品牌):仅搜索规格会被拒绝;无效请求也会被拒绝(名称或运算符未知、值为负数、要求无法同时满足的组合,例如 gte 高于 lte);错误信息会列出有效值。参见 结构化规格。
  • lite(布尔值,可选)- 返回精简的产品对象,仅包含必要字段(id、title、brand、price、currency、availability、image_url、purchase_url、offer_count、attributes(每项已知规格均为 {status, value},不含来源);使用 constraints 时还包含 constraint_status)。始终设为 true;仍会返回 attributes。仅在需要一次性获取 ean、category、provenance 或所有来源时才设为 false。
  • limit(数字,可选)- 返回的产品数量上限(默认值 50,最大值 100)
  • sort(字符串,可选)- 排序方式:'relevance'(默认)、'price_asc'(有货商品优先,然后按价格从低到高)、'price_desc'(有货商品优先,然后按价格从高到低)。设置 constraints 时,匹配的产品仍会排在前面。 返回:products 和 total。每件产品都包含所有已知的 attributes 规格(没有 attributes 键的产品表示以下七项规格均未知:仅在用户询问其中某项时说明):根据这些规格进行比较。说明 confirmed 或 inferred 规格的值;只有 conflicting(零售商提供的信息不一致)或缺少名称(未知)时才需要加以说明。提供约束条件时,每件产品都会针对每个名称提供 constraint_status(matched:零售商标题注明的值符合要求;unverified:无法确认符合要求,因此绝不能视为匹配),total 统计符合所有约束条件的产品数,unverified_total 统计通过其他筛选条件但未经验证的产品数,excluded_by_constraints 则列出注明的值不符合要求的产品。candidates_truncated: true 表示已按所选排序方式检查前 2,000 个候选项,且还有更多候选项:添加品牌或类别,或使用更具体的查询,然后重新搜索。availability 的值为 in_stock、low_stock、out_of_stock 或 unknown(零售商未提供库存信息);若有 purchase_url 和 price,则根据该产品的最佳报价确定:优先选择有货的报价,其次选择最便宜的报价。如果 offer_count 大于 1,请对最终选出的 1–3 件产品调用 get_product,比较各零售商的报价。声称有优惠前,请查看 offers[].title(来自 get_product):这些标题必须指向同一型号;如果型号不同,就不要声称有优惠。推荐任何产品前,请确认其标题指的是用户询问的产品类型(而非线缆、配件或适配器)。
get_product

根据产品 ID 获取单件产品的完整详情。返回结构化的 attributes(参见结构化规格)、specs.description(零售商提供的文字描述,涵盖处理器、GPU、端口、重量、电池和 attributes 未涵盖的功能)、价格、库存情况、配送时间,以及所有零售商的报价和各自的价格(仅当零售商提供库存数量时,offers[].stock 才会显示数量,否则为 null)。接受规范产品 ID 和零售商原始报价 ID。仅在调用 search_products 后、为最终选出的 1–3 件产品执行此操作,并且只有在需要搜索结果未提供的信息时才调用:仅在描述中提供的详情(若描述中没有相关信息,请告知用户未列出),或所有零售商的报价和购买链接(搜索结果仅包含最佳报价的 purchase_url,即有货报价中最便宜的报价)。搜索结果已包含用于比较规格的 attributes。若产品的 offer_count 为 1,则无需调用,除非用户询问仅在描述中提供的详情。

参数:

  • product_id(字符串)- 搜索结果中的唯一产品 ID

**返回:**包含结构化 attributes、specs(包括零售商提供的 specs.description)、按有货优先、价格从低到高排序的 offers,以及来源信息的完整产品详情

结构化规格

搜索结果和 get_product 会返回 attributes:目录导入时从零售商标题中读取的结构化规格(RAM、存储空间、屏幕尺寸、分辨率、刷新率、电源、Wi-Fi 代际)。每项都有一个 status;零售商未提及的规格为缺失(未知);没有 attributes 键的产品,其这七项规格均未知(只有用户询问其中某项时才说明这一点)。各调用的返回内容如下:

调用返回内容
search_products 使用 lite=true(Agent 应始终设置此项)id、title、brand、price、currency、availability、image_url、purchase_url、offer_count、每项已知属性(格式为 {status, value};存在冲突时为 {status, values}),不含来源;受约束时还会返回 constraint_status
search_products 不使用 litelite 字段,以及 ean、category、product_type、provenance 和每项带 sources 的属性
get_product所有内容,包括 specs.description 和尺寸、offers 及 delivery_time

名称和单位与 constraints 中的一致。对于 confirmed 和 inferred,直接说明数值;只有 conflicting 或缺少名称时才需要注明。状态如下:

  • confirmed:两个或更多零售商给出的数值相同。
  • inferred:一个零售商的标题中注明了该数值。
  • conflicting:零售商给出的数值不同。不选择其中任何一个;会列出各数值及对应零售商,同一个零售商也可能出现在两个数值下(请查看 offers[].title)。

specs.description 是零售商提供的描述文字。它可能描述另一种配置或最大值(例如“最高 32GB”),因此绝不会覆盖或补充属性:attributes 中缺少的规格就是未知。

对于一台 Galaxy S26 Ultra,只有 JoyBuy 标明 RAM(12GB),且两家零售商对存储空间意见不一致:

{
  "memory_gb": { "status": "inferred", "value": 12,
    "sources": [{ "retailer": "JoyBuy", "field": "title" }] },
  "storage_gb": { "status": "conflicting", "values": [
    { "value": 256, "sources": [{ "retailer": "Laptops Direct", "field": "title" }] },
    { "value": 512, "sources": [{ "retailer": "JoyBuy", "field": "title" }] } ] }
}

带约束的搜索会返回已应用的约束、excluded_by_constraints、unverified_total,以及每个产品的 constraint_status:matched(零售商标题中注明了满足约束的数值)或 unverified(无法确认是否满足约束:绝不可视为匹配;请告知用户该信息尚未确认;检查 attributes[name],其中 conflicting 表示零售商意见不一致,缺失则表示未知)。注明的数值不满足约束的产品会被排除。lite 结果会携带每项已知规格的 status 和数值,但不含 sources,因此可以区分 64GB 与 16GB 的笔记本电脑,也能区分规格冲突与未知。

  • **容差:**所有运算符下,存储空间允许 3% 的误差(1TB = 1000–1024GB),屏幕尺寸允许 0.5 英寸的误差。零售商会向下取整尺寸,因此整数屏幕尺寸 N 在 eq 和 lte 下也涵盖至 N+1(eq 13 接受 13.6",lte 15 接受 15.6";gte 不变)。其他规格(包括内存)必须精确匹配。
  • **query 中的规格:**只有明确说明规格类型的内容才计入(例如“24GB RAM”、“1TB”、“512GB SSD”、“144Hz”、55")。单独的“24GB”仍视为搜索词。内存、存储空间、分辨率、刷新率、电源和 Wi-Fi 均表示至少达到指定值;屏幕尺寸表示该尺寸。
  • **只有规格时:**如果搜索中没有类别、品牌或搜索词,系统会拒绝搜索,而不会检查任意 2,000 个产品。如果需求不明确(例如单独的“16GB”可能指 RAM 或存储空间),请询问用户,或不带该约束进行搜索。
  • **total:**带约束时,它统计满足所有约束的产品数量;unverified_total 统计通过其他筛选条件但尚未验证的产品数量(其中只有部分可能出现在 products 中)。不带约束时,total 是所有符合筛选条件的产品数量。
  • **候选窗口:**约束仅针对所选排序顺序中的前 2,000 个候选进行检查。如果候选更多,响应会包含 candidates_truncated: true:请添加 brand 或 category,或缩小 query 范围,然后重新搜索,再得出没有匹配结果的结论。如果搜索范围已缩小,结果仍可能不完整。

支持的零售商

可搜索来自 AO 等英国主要零售商的 26,000+ 款电子产品,并定期新增零售商。


使用示例

预算购物:

"Find laptops with at least 16GB RAM under £800"
→ category='Laptops', constraints={"memory_gb": {"gte": 16}}, max_price=800, sort='price_asc', lite=true

品牌搜索:

"I need Sony headphones under £200"
→ brand='Sony', category='Headphones', max_price=200, sort='price_asc', lite=true

按类别浏览:

"Show me cheap monitors"
→ category='Monitors', max_price=200, lite=true

规格要求:

"A 15 inch laptop with at least 24GB RAM and 1TB storage"
→ category='Laptops', constraints={"memory_gb":{"gte":24},"storage_gb":{"gte":1000},"screen_in":{"eq":15}}, lite=true

详细规格:

"Tell me the specs of this laptop"
→ compare specs from search; get_product(product_id) only for description-only details or every offer

价格范围:

"Apple products between £500 and £1000"
→ brand='Apple', min_price=500, max_price=1000, lite=true

速率限制

  • 每个 IP 地址每小时 50 次请求
  • 响应标头中包含速率限制信息
  • 限制每小时重置

环境变量

  • TRUSTRAILS_API_KEY - API 密钥(使用 mcp-public-2026 进行共享公共访问)
  • TRUSTRAILS_BASE_URL - API 端点(可选,默认值为 https://trustrails.app)

为什么选择 TrustRails?

  • ✅ 实时数据 - 产品数据源每天更新两次
  • ✅ 多家零售商 - 一次搜索即可比较价格
  • ✅ 库存信息 - 查看哪些商品确实有货可买
  • ✅ 购买链接 - 点击跳转至零售商购买(联盟链接)
  • ✅ 零配置 - 使用共享公共密钥即可开箱即用
  • ✅ 专注英国市场 - 针对英国电子产品购物进行了优化

故障排除

“找不到命令”或服务未启动

  • 确保已安装 Node.js 且 npx 可用:npx --version
  • 尝试手动运行:npx -y @trustrails/mcp-server
  • 正在使用 nvm? Claude Desktop 不会继承你的 shell PATH。请改用 node 的完整路径:
    {
      "command": "/Users/YOUR_USERNAME/.nvm/versions/node/vX.X.X/bin/node",
      "args": ["/Users/YOUR_USERNAME/.nvm/versions/node/vX.X.X/lib/node_modules/@trustrails/mcp-server/dist/index.js"]
    }
    
    首先运行 npm install -g @trustrails/mcp-server,然后使用 which node 查找 node 路径。

“超出速率限制”

  • 等待一小时,直到限制重置
  • 查看 X-RateLimit-Reset 标头,获取确切的重置时间
  • 每小时 50 次请求足以满足正常使用需求

“未找到结果”

  • 尝试使用更宽泛的搜索词(例如,搜索“laptop”,而不是具体型号)
  • 检查品牌名称的拼写
  • 先尝试不加筛选条件进行搜索

开发

本地设置
# Clone the repo
git clone https://github.com/james-webdev/trustrails-mcp-server
cd trustrails-mcp-server

# Install dependencies
npm install

# Run locally
npm run dev
测试
# Run the MCP inspector to test tools
npx @modelcontextprotocol/inspector npm run dev

支持与链接


许可证

MIT © TrustRails


关于 MCP

此服务实现了 Model Context Protocol,这是一项用于将 AI 助手连接到外部工具和数据源的标准。了解如何构建 MCP 服务,请访问 modelcontextprotocol.io。

评论

支持 Markdown

第一次接触 MCP?

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

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