亚马逊购物车自动化服务

一个本地MCP服务器,通过浏览器自动化实现AI助手与个人亚马逊购物车的交互,适用于个人和教育用途。

  • by madebydia
  • TypeScript
  • 本地部署
  • 22 星标
  • 更新于
在 GitHub 查看 meimakes/amazon-mcp-local

使用说明

亚马逊购物车MCP服务器

本地MCP(模型上下文协议)服务器,使AI助手能够通过浏览器自动化与您的个人亚马逊购物车进行交互。使用 克劳德桌面版, 戳,以及任何兼容MCP的客户端。

⚠️ 重要免责声明

该工具使用浏览器自动化与Amazon.com进行交互。

  • 用户全权负责 确保其使用符合 亚马逊的服务条款
  • 这个项目是 仅供个人教育使用 -不适用于商业自动化或转售
  • 使用风险自负 -作者对违反亚马逊政策或由此产生的后果不承担任何责任
  • 不隶属于亚马逊 -这是一个独立的、非官方的工具
  • 亚马逊可能会随时更改其网站或政策,从而可能破坏其功能
  • 过度自动化可能会导致帐户限制或禁止

使用此软件即表示您承认并接受这些风险。

特性

  • 🔍 搜索亚马逊 -通过搜索查询查找产品
  • 🛒 加入购物车 -自动将商品添加到您的亚马逊购物车
  • 👀 查看购物车 -检查当前购物车内容和小计
  • 🔐 登录持久性 -会话在本地保存以实现无缝使用
  • 🌐 安全访问 -通过ngrok隧道进行承载令牌身份验证

快速开始

先决条件

  • Node.js v20或更高版本
  • npm或纱线
  • ngrok帐户(免费版有效)

安装

  1. 克隆存储库:

    git clone https://github.com/madebydia/amazon-mcp-server.git
    cd amazon-mcp-server
    
  2. 安装依赖项:

    npm install
    
  3. 配置环境:

    cp .env .env.local  # Optional: keep your settings separate
    

    编辑 .env 并设置:

    • AUTH_TOKEN -生成安全的随机令牌(必需)
    • HEADLESS=false -首次登录
    • AMAZON_DOMAIN=amazon.com -或您当地的亚马逊域名
  4. 构建项目:

    npm run build
    
  5. 启动服务器:

    npm start
    
  6. 首次登录:

    • Chrome浏览器窗口将打开
    • 手动登录您的亚马逊帐户
    • 会话将保存在 ./user-data/
    • 登录一次后,您可以:
      • 停止服务器(Ctrl+C)
      • 集 HEADLESS=true 在 .env
      • 以无头模式重新启动
  7. 通过ngrok暴露(在单独的终端中):

    npm run tunnel
    # Note the HTTPS URL (e.g., https://abc123.ngrok.io)
    

连接到Poke

  1. 从终端复制您的ngrok URL

  2. 在Poke中,添加自定义MCP集成:

    • 网址: https://your-ngrok-url.ngrok.io/sse
    • API密钥: 你的 AUTH_TOKEN 从 .env
    • 类型: MCP服务器
  3. 重要提示: 始终使用 /sse 端点!

  4. 通过询问Poke来测试连接:

    • “你有什么工具?”
    • “在亚马逊上搜索无线鼠标”

连接到克劳德桌面

  1. 构建项目: npm run build
  2. 打开克劳德桌面→ 设置→ 开发者→ 编辑配置
  3. 添加 mcpServers:
{
  "mcpServers": {
    "amazon-cart": {
      "command": "node",
      "args": ["/absolute/path/to/amazon-mcp-server/dist/server.js"],
      "env": {
        "AUTH_TOKEN": "your-token-here",
        "HEADLESS": "true",
        "AMAZON_DOMAIN": "amazon.com"
      }
    }
  }
}
  1. 重新启动克劳德桌面
  2. 您应该在工具菜单中看到可用的亚马逊工具(🔧)

首次设置: 使用以下命令运行服务器一次 HEADLESS=false 手动登录亚马逊。之后,设置 HEADLESS=true 克劳德桌面。

可用工具

工具 说明 参数
search_amazon 在亚马逊上搜索产品 query (必填)
add_to_cart 将产品添加到购物车 query 或 asin, quantity (可选)
view_cart 查看当前购物车内容 无
check_login 验证亚马逊登录状态 无

建筑

┌─────────────────┐
│   Poke.com      │ (Remote AI Assistant)
│   (Cloud)       │
└────────┬────────┘
         │ HTTPS
         ↓
┌─────────────────┐
│     ngrok       │ (Secure Tunnel)
│  Public HTTPS   │
└────────┬────────┘
         │ Local
         ↓
┌─────────────────┐
│   MCP Server    │ (Port 3000)
│   SSE + HTTP    │
└────────┬────────┘
         │
         ↓
┌─────────────────┐
│   Puppeteer     │ (Browser Automation)
│  + Chrome       │
│  (Persistent    │
│   Session)      │
└─────────────────┘

配置

环境变量

变量 默认值 描述
PORT 3000 服务器端口
AUTH_TOKEN 必需的 用于身份验证的承载令牌
AMAZON_DOMAIN amazon.com 亚马逊域名(例如Amazon.co.uk)
HEADLESS false 在无头模式下运行浏览器
USER_DATA_DIR ./user-data Chrome用户数据目录

示例.env

PORT=3000
AUTH_TOKEN=a1b2c3d4-e5f6-4789-a012-3b4c5d6e7f8a
AMAZON_DOMAIN=amazon.com
HEADLESS=false
USER_DATA_DIR=./user-data

安全

⚠️ 重要安全注意事项

  1. AUTH_TOKEN保护

    • 永不承诺 .env Git(已在 .gitignore)
    • 使用加密安全的随机令牌
    • 生成方式: openssl rand -hex 32
  2. ngrok安全

    • 免费层URL是公开的,但不可访问
    • 考虑ngrok的身份验证功能以获得额外的安全性
    • 针对保留域和IP限制升级到ngrok付费计划
  3. 会话数据

    • 登录会话存储在 ./user-data/
    • 包含Cookie和身份验证令牌
    • 切勿共享或提交此目录
    • 已通过排除 .gitignore
  4. 网络安全

    • 服务器只接受经过身份验证的请求
    • 所有通过ngrok的流量都是HTTPS加密的
    • 本地服务器仅绑定到本地主机
  5. 浏览器自动化

    • Puppeteer在禁用沙盒的情况下运行(某些系统需要)
    • 通过Chrome用户数据目录进行会话隔离
    • 未向第三方发送数据

最佳实践

  • ✅ 使用强大、独特的AUTH_TOKEN
  • ✅ 永远不要公开分享你的ngrok网址
  • ✅ 定期旋转AUTH_TOKEN
  • ✅ 监控服务器日志以查找可疑活动
  • ✅ 保持依赖关系更新(npm audit)
  • ✅ 在生产中使用HEADLES=true
  • ⚠️ 这仅供个人使用,不适合多用户场景的生产

故障排除

Poke中未显示的工具

  1. 重新启动服务器
  2. 在Poke中删除并重新添加MCP连接
  3. 检查服务器日志 tools/list 请求
  4. 验证ngrok隧道是否处于活动状态

未添加到购物车的商品

  1. 验证您是否已登录亚马逊:
    • 检查浏览器窗口(如果可见)
    • 或者让Poke跑 check_login
  2. 如果未登录:
    • 集 HEADLESS=false
    • 重启服务器
    • 在浏览器窗口中手动登录

连接持续中断

  • 正常行为-按需重新连接
  • 如果持续存在,请检查ngrok连接: curl https://your-url.ngrok.io/health

计算机睡眠模式

  • 服务器和ngrok在计算机睡眠时暂停
  • Poke将在唤醒时自动重新连接
  • 防止睡眠:跑步 caffeinate 在单独的终端(macOS)中

发展

项目结构

amazon-mcp/
├── src/
│   ├── server.ts       # MCP server + SSE implementation
│   ├── amazon.ts       # Amazon automation logic
│   ├── browser.ts      # Puppeteer browser management
│   └── types.ts        # TypeScript interfaces
├── dist/               # Compiled JavaScript (gitignored)
├── user-data/          # Chrome session data (gitignored)
├── .env                # Environment config (gitignored)
└── package.json

在发展中奔跑

npm run dev    # Uses ts-node, no build required

建筑

npm run build  # Compiles TypeScript to dist/

测试

健康检查

curl http://localhost:3000/health

预期响应:

{"status":"ok","server":"amazon-mcp-server"}

测试SSE连接

curl -H "Authorization: Bearer YOUR_TOKEN" \
  http://localhost:3000/sse

应与心跳保持开放连接。

合规说明

该项目旨在 仅供个人、单用户使用。它不适用于:

  • ❌ 多租户部署
  • ❌ 生产SaaS应用程序
  • ❌ SOC 2 II类合规场景
  • ❌ HIPAA或其他受监管的数据处理
  • ❌ 大规模商业自动化

如果您需要企业级合规性,请考虑:

  • 实现正确的身份验证(OAuth 2.0)
  • 添加审核日志记录
  • 对会话使用加密存储
  • 部署到合规的基础设施(AWS、具有合规认证的GCP)
  • 实施限速和防止滥用

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 提交拉取请求

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

支持

  • 🐛 问题: GitHub问题
  • 📧 联系人: 通过GitHub

作者

由...创建 @madebydia


注: 运行服务器时保持计算机处于唤醒状态。ngrok隧道和SSE连接对网络中断很敏感。