ALLMarvelous/my-heb-proxy

GitHub: ALLMarvelous/my-heb-proxy

一个基于 TypeScript 的轻量级代理服务器,将 H-E-B 超市移动应用的生产级 API 封装为 HTTP 接口和 MCP 工具,供 AI 助手实时查询商品、优惠券和门店信息。

Stars: 0 | Forks: 0

# My H-E-B API 代理与 MCP 服务器 一个轻量级的 TypeScript 封装、HTTP 代理和用于 My H-E-B 移动应用 API 的 Model Context Protocol (MCP) 服务器。使用 Bun 和 Elysia.js 构建。 我对 My H-E-B 应用的生产级 GraphQL 和 REST API 进行了逆向工程,以提取它们的 schema 查询、headers 和 API keys。本项目将这些 endpoint 封装为一个简洁、现代的 HTTP 代理,并将其作为标准的 MCP 工具暴露给 LLM 使用。 有关原始 GraphQL 查询、REST endpoint、headers 和参数的详细说明,请参阅 [API 规范](API.md)。 ### 预期用途 本项目旨在弥合大型语言模型 (LLM) 与实时杂货数据之间的差距。通过连接您的 AI 助手(通过 MCP 或 HTTP 代理),您可以: - **寻找最优惠的交易:** 让您的模型扫描每周广告,或搜索符合您购物需求的活跃优惠券。 - **构建智能购物清单:** 让模型推荐食材、整理有条理的杂货清单,并与实际的商店商品和价格进行交叉比对。 - **定位附近商店:** 以编程方式验证商店位置、设施和营业时间。 ## 功能特性 - **商店定位器:** 根据地址或邮政编码搜索 H-E-B 商店详情、距离和营业时间。 - **数字优惠券:** 根据类别、打印状态或搜索关键词搜索和筛选 H-E-B 数字优惠券。 - **商品目录:** 根据商店编号和购物场景(路边提货、送货、店内)查询商品目录,以获取价格、SKU 数据和图片。 - **每周广告:** 获取每周广告布局、促销轮播图以及直接的出版物翻页书链接。 - **通用 GraphQL 透传:** 将原始查询转发到 H-E-B 的边缘 API 网关,同时自动注入正确的拦截器 headers。 - **Model Context Protocol (MCP) 集成:** 将 API 作为本地工具直接插入您的 AI 编程助手或桌面客户端。 ## 工作原理 H-E-B 的 API 网关会拒绝没有特定移动应用客户端 headers 的请求。本服务器会自动注入: 1. **API Key (`apiKey`):** Android 应用客户端使用的已提取的生产级 key。 2. **User-Agent:** 格式化为模拟标准的移动设备(例如 `MyHEB/2.80.1.1 (Android 14; Google Pixel 8)`)。 3. **Request UUID (`X-CLNT-REQ-UUID`):** 为每个请求自动生成一个新的随机 UUID。 ## 技术栈 - **Runtime:** [Bun](https://bun.sh) (快速的 JS/TS runtime) - **HTTP 服务器:** [Elysia.js](https://elysiajs.com) (快速且类型友好的 Web 框架) - **文档:** Swagger UI (在 `/swagger` 自动生成) - **协议:** Model Context Protocol (MCP) TypeScript SDK ## 快速开始 ### 前置条件 请确保您已安装 [Bun](https://bun.sh)。 ### 安装 克隆仓库并安装依赖: ``` git clone https://github.com/ALLMarvelous/my-heb-proxy.git cd my-heb-proxy bun install ``` ### 运行 HTTP 代理 要以开发模式运行服务器(支持热重载): ``` bun run dev ``` 服务器将启动于 `http://localhost:3000`。您可以在浏览器中打开 [http://localhost:3000/swagger](http://localhost:3000/swagger) 查看交互式 API 文档。 ## API Endpoint | 方法 | Endpoint | 描述 | | :------- | :--------------------- | :------------------------------------------------ | | **GET** | `/api/stores` | 查找地址或邮政编码附近的商店 | | **POST** | `/api/coupons` | 搜索并筛选数字优惠券 | | **POST** | `/api/products` | 搜索商品目录以获取价格/图片 | | **GET** | `/api/weekly-ad` | 获取每周广告组件布局 | | **GET** | `/api/weekly-ad/flyer` | 重定向到静态的每周广告翻页书 PDF | | **POST** | `/api/graphql` | 原始 GraphQL 代理(自动注入所需 headers) | ## MCP 服务器集成 本项目是一个完全兼容的 Model Context Protocol 服务器。要在您的 AI 工作流中使用这些工具: ### Claude Desktop 将此内容添加到您的 `claude_desktop_config.json` 中: ``` { "mcpServers": { "my-heb-mcp": { "command": "bun", "args": ["run", "/absolute/path/to/my-heb-proxy/src/mcp-server.ts"] } } } ``` ### Cursor / Windsurf 在您的编辑器设置中添加一个新的 MCP 服务器: - **名称:** `my-heb-mcp` - **类型:** `command` - **命令:** `bun run /absolute/path/to/my-heb-proxy/src/mcp-server.ts` ### 可用的 MCP 工具 - `search_stores` (参数:`address`、`radiusMiles`、`includeNextAvailableTimeslot`、`includeEcommInactive`) - `search_coupons` (参数:`text`、`offset`、`limit`、`categories`、`couponTypes`、`sortOrder`) - `search_products` (参数:`query`、`storeId`、`shoppingContext`) - `get_weekly_ad` (参数:`storeId`、`shoppingContext`) - `get_weekly_ad_flyer_url` (参数:`storeId`)
标签:API代理, GraphQL, LLM集成, MCP, TypeScript, 云资产清单, 安全插件, 自动化攻击, 购物应用, 逆向工程