PC Express MCP服务器
非官方 用于PC Express/Loblaws杂货店购物的模型上下文协议(MCP)服务器
用AI控制你的购物车!此MCP服务器使LLM(如克劳德)能够搜索过去的订单,查找产品,并在所有Loblaws拥有的杂货横幅上管理您的购物车。
 
⚠️ 重要免责声明
- 非官方:本项目不隶属于Loblaws Companies Limited、PC Express或任何相关实体,也不受其认可或支持
- 使用风险自负:这使用了未记录的API,可能会在不通知的情况下更改
- 无保修:参见 许可证 详情
- 教育目的:该项目演示了API逆向工程和MCP服务器开发
🛒 支持的杂货横幅
适用于所有支持PC Express的商店:
- Zehrs -总部位于安大略省的杂货连锁店
- Loblaws -主旗舰横幅
- 没有薯条 -折扣杂货横幅
- 正牌加拿大超市 -加拿大西部超市
- 你的独立杂货店 -加盟店
- 大统华超级市场 -亚洲特色超市
✨ 特性
MCP工具(6)
- 搜索_列表_订单 -从您的订单历史中查找商品
- 获取订单项目 -从特定订单中获取详细的产品列表
- 搜索产品 -搜索产品目录
- add_to_cart -将产品添加到购物车
- remove_from_cart -从购物车中删除商品
- view_cart -查看当前购物车内容
集成就绪
- ✅ 家庭助手 -语音控制杂货店购物
- ✅ 克劳德桌面版 -与你的购物清单聊天
- ✅ 自定义客户端 -任何与MCP兼容的应用程序
语音助手示例
🎤 "Add ice cream to my grocery cart"
🎤 "What did I order last week?"
🎤 "Search for organic bananas"
🎤 "What's in my cart?"🚀 快速开始
先决条件
- Python 3.10或更高版本
- 启用PC Express横幅的活动帐户
- pip或pip3
安装
- 克隆存储库
git clone https://github.com/YOUR_USERNAME/pcexpress-mcp-server.git
cd pcexpress-mcp-server- 安装依赖项
pip install -r requirements.txt- 配置凭据
cp .env.example .env
# Edit .env with your credentials (see Configuration section)- 测试连接
python test_api.py- 运行服务器
python pcexpress_mcp_server.py⚙️ 配置
获取您的凭据
由于没有公共API,您需要从浏览器会话中提取凭据:
方法1:HAR文件导出(推荐)
- 访问您的横幅网站(例如www.zehrs.ca)
- 登录您的帐户
- 打开DevTools(F12)→ 网络 标签
- ✅ 检查“保留日志”
- 清除网络日志
- 导航到您的购物车和过去的订单
- 在“网络”选项卡中单击鼠标右键→ “将所有内容另存为HAR”
- 运行凭据提取器:
python extract_credentials.py path/to/file.har这会自动创建您的 .env 文件!
方法2:手动提取
看 设置.md 有关详细的手动提取说明。
环境变量
# OAuth Bearer Token (expires after a few hours)
PCEXPRESS_BEARER_TOKEN=your_bearer_token_here
# Your customer/user ID
PCEXPRESS_CUSTOMER_ID=your_customer_id_here
# Your active cart ID
PCEXPRESS_CART_ID=your_cart_id_here
# Store ID (4-digit code)
PCEXPRESS_STORE_ID=your_store_id_here
# Banner: zehrs, loblaws, nofrills, superstore, independent, tandt
PCEXPRESS_BANNER=zehrs🔌 平台集成
家庭助手
# configuration.yaml
mcp:
servers:
- name: pcexpress
command: python3
args:
- /path/to/pcexpress_mcp_server.py
env:
PCEXPRESS_BEARER_TOKEN: "your_token"
PCEXPRESS_CUSTOMER_ID: "your_id"
PCEXPRESS_CART_ID: "your_cart"
PCEXPRESS_STORE_ID: "your_store"
PCEXPRESS_BANNER: "zehrs"克劳德桌面版
编辑您的Claude Desktop配置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"pcexpress": {
"command": "python3",
"args": ["/path/to/pcexpress_mcp_server.py"],
"env": {
"PCEXPRESS_BEARER_TOKEN": "your_token",
"PCEXPRESS_CUSTOMER_ID": "your_id",
"PCEXPRESS_CART_ID": "your_cart",
"PCEXPRESS_STORE_ID": "your_store",
"PCEXPRESS_BANNER": "zehrs"
}
}
}
}重新启动克劳德桌面,开始谈论杂货!
自定义MCP客户端
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
server_params = StdioServerParameters(
command="python3",
args=["pcexpress_mcp_server.py"],
env={
"PCEXPRESS_BEARER_TOKEN": "your_token",
# ... other env vars
}
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# List available tools
tools = await session.list_tools()
# Call a tool
result = await session.call_tool("search_products", {
"query": "ice cream"
})📚 文档
- QUICKSTART.md -5分钟设置指南
- 设置.md -详细的配置说明
- BANNERS.md -多横幅使用指南
- 建筑.md -技术架构细节
- 贡献.md -如何做出贡献
⚠️ 已知限制
1.令牌到期
问题:不记名代币在几个小时后过期
影响:令牌过期时服务器停止工作
变通方案:从浏览器会话中重新提取凭据
状态: ❌ 未解决-尚未实现长期身份验证
2.产品搜索限制
问题:提前键入搜索只返回类别建议,而不是实际产品
影响:无法直接获取添加到购物车的产品代码
变通方案:使用过去的订单查找产品代码
状态: 🔍 研究替代终点
3.购物车ID更改
问题:购物车ID可能会在注销/登录时更改
影响:服务器需要更新购物车ID
变通方案:重新提取凭据
状态: ⚠️ 需要实现购物车合并
4.没有官方API
问题:使用逆向工程、未经证明的API
影响:如果Loblaws更改其API,则可能会中断
变通方案:监控变化,相应更新
状态: ⚠️ 固有局限
5.门店特定库存
问题:产品可用性因商店位置而异
影响:搜索结果取决于所选商店
变通方案:确保正确 PCEXPRESS_STORE_ID 已设置
状态: ✅ 预期行为
🐛 故障排除
“401未经授权”
原因:令牌已过期或无效
修复:从浏览器中重新提取凭据
“404未找到”
原因:购物车/客户ID更改或横幅错误
修复:验证 PCEXPRESS_BANNER 匹配令牌源,重新提取ID
“未找到产品”
原因:商店没有商品或商店ID错误
修复:验证 PCEXPRESS_STORE_ID 是正确的
测试失败
原因:缺少依赖项或凭据无效
修复:
pip install -r requirements.txt
python extract_credentials.py your_file.har请参阅中的完整故障排除指南 设置.md
🗺️ 路线图
高优先级
- \[\]自动令牌刷新(#1)
- \[\]完整的产品搜索(不只是提前键入)(#2)
- \[\]购物车ID更改检测(#3)
- \[\]更好的错误消息(#4)
中优先级
- \[\]购物清单管理
- \[\]PC优化点集成
- \[\]结账/下单
- \[\]产品详细信息(图片、营养等)
- \[\]价格跟踪
低优先级
- \[\]单个实例中支持多个横幅
- \[\]基于购物车的食谱建议
- \[\]横幅之间的价格比较
看 问题 查看完整列表。
🤝 贡献
欢迎投稿!看 贡献.md 作为指导方针。
快速贡献指南
- 分叉回购
- 创建要素分支(
git checkout -b feature/amazing-feature) - 进行更改
- 彻底测试(
python test_api.py) - 承诺(
git commit -m 'Add amazing feature') - 推(
git push origin feature/amazing-feature) - 打开拉取请求
📜 许可证
此项目根据GNU Affero通用公共许可证v3.0获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- 感谢Anthropic的MCP协议团队
- 受到对更好的杂货购物自动化需求的启发
- 通过逆向工程和决心构建
⚖️ 法律
本项目为 仅供教育和个人使用.
- 不隶属于Loblaws有限公司
- 使用未经证明的API-使用风险自负
- 可能违反服务条款-使用前请检查
- 不提供功能保证或担保
- 作者不对使用的任何后果负责
使用本软件即表示您同意对您的使用承担全部责任。
📧 联系
- 问题:
- 讨论:
______________________________________________________________________
由以下材料制成❤️ 为了更好地购物
*如果这个项目为你节省了时间,可以考虑主演⭐ 回购!*
