Wildberries评论获取工具

用于从Wildberries获取产品评论并通过MCP协议提供给LLM客户端的服务器工具,支持本地stdio和远程HTTP传输,可选Xray-core实现VLESS出口旋转。

  • by Happyfunnysad
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Happyfunnysad/WildberriesToolsMCP

使用说明

Wildberries工具MCP

MCP服务器,用于检索Wildberry产品评论并将其暴露给LLM客户端。

服务器支持:

  • 标准 适用于本地MCP客户端,如Claude Desktop、Cursor和Cherry Studio;
  • 可流式传输的HTTP 用于远程MCP客户端,如ChatGPT自定义MCP应用程序;
  • optional 通过X射线核心旋转VLESS出口 适用于正常出站IP不适合Wildberry访问的部署。

工具

工具 说明
get_wb_reviews 接受Wildberry产品URL或SKU,并以JSON格式返回产品元数据和最多500条评论文本。

建筑学

无X射线:

ChatGPT / MCP client
        |
        v
WildberriesToolsMCP
        |
        v
Wildberries APIs

带旋转式VLESS出口:

ChatGPT / MCP client
        |
        v
WildberriesToolsMCP
        |
        | HTTPX SOCKS5
        v
127.0.0.1:1080
        |
        v
Xray-core
        |
        | validated VLESS candidate
        v
Wildberries APIs

MCP端点本身是 不 通过VLESS代理。只有Wildberry客户端发出的出站HTTP请求才会使用 OUTBOUND_PROXY.

VLESS旋转生命周期

当 XRAY_ENABLED=true,容器监控器在MCP服务器之前启动X射线旋转器:

  1. 下载已配置的 vless:// 订阅。

  2. 提取并洗牌唯一的VLESS候选者。

  3. 将候选对象转换为Xray JSON。

  4. 通过以下方式验证生成的配置:

    xray run -test -config candidate.json
    
  5. 在临时SOCKS端口上启动候选者(1081).

  6. 向以下对象发出真正的HTTP请求 XRAY_VALIDATION_URL 通过X射线过程。

  7. 仅激活通过X射线语法验证和实时HTTP探测的候选者。

  8. 将所选路线送达 127.0.0.1:1080.

  9. 定期对活动路线进行健康检查,并在反复出现故障后进行轮换。

  10. 刷新订阅并定期轮换退出。

默认的Docker Compose和Render配置使用:

https://raw.githubusercontent.com/igareck/vpn-configs-for-russia/main/BLACK_VLESS_RUS_mobile.txt

来源于此项目的外部。以(权力)否决 XRAY_SUBSCRIPTION_URL 需要时,您可以使用自己值得信赖的VLESS提要。

当前解析器支持该提要使用的常见订阅形状:

  • VLESS+现实+TCP;
  • VLESS+TLS+WebSocket;
  • VLESS+TLS+XHTTP;
  • VLESS+gRPC;
  • VLESS+HTTP升级。

不受支持或格式错误的候选者将自动跳过。

需求

直接使用Python:

  • Python 3.10+;
  • pip.

对于捆绑的Xray部署:

  • Docker或与Docker兼容的托管平台。

Docker镜像当前固定了Xray核心 26.3.27 而不是使用未固定的 latest 二元的。

本地安装

git clone https://github.com/Happyfunnysad/WildberriesToolsMCP.git
cd WildberriesToolsMCP
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

在Windows PowerShell上:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt

溢出stdio

stdio 仍然是直接Python执行的默认传输方式:

python server.py

等效显式配置:

MCP_TRANSPORT=stdio python server.py

客户端配置示例:

{
  "mcpServers": {
    "wildberries-tools": {
      "command": "/absolute/path/to/.venv/bin/python",
      "args": ["/absolute/path/to/WildberriesToolsMCP/server.py"],
      "env": {
        "MCP_TRANSPORT": "stdio"
      }
    }
  }
}

在Windows上,使用完整路径 .venv\\Scripts\\python.exe.

通过流式HTTP运行

不使用Xray的直接Python进程:

MCP_TRANSPORT=streamable-http \
MCP_HOST=0.0.0.0 \
MCP_PORT=8000 \
MCP_PATH=/mcp \
python server.py

MCP终点为:

http://localhost:8000/mcp

支持的MCP HTTP变量:

变量 默认值 描述
MCP_TRANSPORT stdio stdio, streamable-http,或 sse
MCP_HOST 0.0.0.0 为HTTP传输绑定主机
MCP_PORT 8000 绑定端口;托管平台 PORT 优先
MCP_PATH /mcp 可流式传输的HTTP端点路径
MCP_STATELESS_HTTP true 遗留HTTP客户端的无状态行为
MCP_JSON_RESPONSE false JSON响应,而不是支持的SSE
MCP_ALLOWED_HOSTS empty 逗号分隔的主机列表
MCP_ALLOWED_ORIGINS empty 逗号分隔的Origin列表
MCP_TRUST_PROXY false 仅在受信任的代理/隧道后禁用SDK DNS重新绑定检查

带旋转VLESS出口的Docker

启动整个堆栈:

docker compose up --build -d

观察路线选择和X射线健康状况:

docker compose logs -f wb-analyzer-mcp

MCP终点仍然是:

http://localhost:8000/mcp

SOCKS端口 1080 和 1081 仅限于 127.0.0.1 在容器内部,并且不会发布到主机。

X射线环境变量

变量 默认值 描述
XRAY_ENABLED false 启用捆绑式旋转器;部署配置将其设置为 true
OUTBOUND_PROXY 空 HTTPX代理URL;使用 socks5://127.0.0.1:1080 带旋转器
XRAY_SUBSCRIPTION_URL 已配置的公共订阅源 文本订阅包含 vless:// 链接
XRAY_SOCKS_PORT 1080 主动本地SOCKS侦听器
XRAY_TEST_SOCKS_PORT 1081 临时验证侦听器
XRAY_VALIDATION_URL https://www.wildberries.ru/ 用于通过代理进行真实探测的URL
XRAY_VALIDATE_STATUS_MAX 399 最高接受HTTP状态
XRAY_MAX_CANDIDATES 15 每次轮换尝试测试的最大候选人数
XRAY_PROBE_TIMEOUT 12 探测超时(秒)
XRAY_ROTATE_INTERVAL 900 周期性旋转间隔(秒)
XRAY_HEALTH_INTERVAL 60 活动路线健康检查间隔
XRAY_HEALTH_FAILURES 2 强制旋转前连续发生故障
XRAY_FEED_REFRESH_INTERVAL 7200 订阅刷新间隔
XRAY_STARTUP_TIMEOUT 180 主管等待第一条有效路线的最长时间
XRAY_IP_CHECK_URL 空 可选端点仅用于记录所选的公共出口IP

紧急旁路

要在不使用X射线的情况下启动同一图像,请执行以下操作:

docker run --rm \
  -e XRAY_ENABLED=false \
  -e MCP_TRANSPORT=streamable-http \
  -e MCP_TRUST_PROXY=true \
  -p 8000:8000 \
  wildberries-tools-mcp

渲染部署

存储库包含 render.yaml 对于单服务Docker部署。Xray进程和旋转器与MCP服务器运行在同一个容器中,因此不需要私有sidecar服务。

从该存储库创建渲染蓝图。部署后,端点看起来像:

https://<service-name>.onrender.com/mcp

蓝图启用VLESS路由,并在自动部署之前等待CI检查。

对于自定义订阅,请在Render中重写此环境变量:

XRAY_SUBSCRIPTION_URL=https://example.com/my-vless-subscription.txt

公共部署安全

对于在稳定主机名上的直接部署,更喜欢显式的allowlist:

MCP_TRANSPORT=streamable-http \
MCP_ALLOWED_HOSTS='mcp.example.com,mcp.example.com:*' \
python server.py

当MCP服务器位于验证Host标头的受信任反向代理或托管边缘之后时,请设置:

MCP_TRUST_PROXY=true

在没有速率限制或其他访问控制的情况下,不要广泛暴露未经身份验证的MCP端点。该工具是只读的,但开放端点仍可能被滥用于计算和出站流量。

公共VLESS节点也是第三方基础设施。将它们视为不可信的网络传输。不要通过此机制路由凭据、私有API或其他敏感的应用程序流量。此项目仅通过以下方式发送Wildberry检索请求 OUTBOUND_PROXY.

ChatGPT连接

  1. 部署服务器,以便 /mcp 可以通过HTTPS访问。
  2. 打开ChatGPT开发人员/自定义应用程序设置。
  3. 添加远程MCP端点,例如 https://mcp.example.com/mcp.
  4. 让客户端发现服务器工具。
  5. 让ChatGPT分析Wildberry产品URL或SKU。

示例提示:

Проанализируй отзывы на этот товар и выдели основные плюсы, минусы и повторяющиеся проблемы: 12345678

客户可以致电 get_wb_reviews 并使用返回的评论文本进行分析。

CI验证

GitHub Actions执行两个独立的检查:

  1. 构建Docker镜像,并通过以下方式运行代表性的Reality/TCP、WS-TLS和XHTTP/TLS共享链接 xray run -test.
  2. 使用以下命令启动MCP容器 XRAY_ENABLED=false,执行真正的MCP initialize 握手,并验证 tools/list 广告 get_wb_reviews.

CI路径有意不依赖于第三方公共VLESS节点的可用性。

SSE兼容模式

MCP_TRANSPORT=sse \
MCP_HOST=0.0.0.0 \
MCP_PORT=8000 \
MCP_SSE_PATH=/sse \
MCP_MESSAGE_PATH=/messages/ \
python server.py

许可证

麻省理工学院