返回市场
亚马逊-MCP-服务器

亚马逊-MCP-服务器

作者:meimakes8 星标更新:2025-10-31

项目介绍

Amazon Cart MCP Server

GitHub Website

本地MCP(模型上下文协议)服务器,使AI助手如Poke能够通过浏览器自动化与您的个人Amazon购物车进行交互。使用Puppeteer控制浏览器,并通过ngrok安全地暴露。

⚠️ 重要免责声明

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

  • 用户完全负责确保其使用符合Amazon的服务条款
  • 本项目仅用于个人教育用途,不得用于商业自动化或转售
  • 自行承担风险 - 作者不对任何违反Amazon政策的行为及其后果承担责任
  • 非Amazon官方工具 - 这是一个独立、非官方的工具
  • Amazon可能会随时更改其网站或政策,这可能会影响功能
  • 过度自动化可能导致账户限制或封禁

使用此软件即表示您已知悉并接受这些风险。

功能

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

快速开始

先决条件

  • Node.js v20或更高版本
  • npm或yarn
  • ngrok账户(免费层级即可)

安装

  1. 克隆仓库:

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

    npm install
    
  3. 配置环境:

    cp .env .env.local  # 可选:保持设置分离
    

    编辑.env并设置:

    • AUTH_TOKEN - 生成一个安全随机令牌(必需)
    • HEADLESS=false - 首次登录时
    • AMAZON_DOMAIN=amazon.com - 或者您的本地Amazon域名
  4. 构建项目:

    npm run build
    
  5. 启动服务器:

    npm start
    
  6. 首次登录:

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

    npm run tunnel
    # 注意HTTPS URL(例如,https://abc123.ngrok.io)
    

连接到Poke

  1. 从终端复制您的ngrok URL

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

    • URL: https://your-ngrok-url.ngrok.io/sse
    • API Key: 您的.env中的AUTH_TOKEN
    • 类型: MCP Server
  3. 重要: 总是使用/sse端点!

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

    • "你有哪些工具?"
    • "在Amazon上搜索无线鼠标"

可用工具

工具描述参数
search_amazon在Amazon上搜索产品query(必需)
add_to_cart将产品添加到购物车queryasinquantity(可选)
view_cart查看当前购物车内容
check_login验证Amazon登录状态

架构

┌─────────────────┐
│   Poke.com      │ (远程AI助手)
│   (云)          │
└────────┬────────┘
         │ HTTPS
         ↓
┌─────────────────┐
│     ngrok       │ (安全隧道)
│  公共HTTPS      │
└────────┬────────┘
         │ 本地
         ↓
┌─────────────────┐
│   MCP Server    │ (端口3000)
│   SSE + HTTP    │
└────────┬────────┘
         │
         ↓
┌─────────────────┐
│   Puppeteer     │ (浏览器自动化)
│  + Chrome       │
│  (持久会话)     │
└─────────────────┘

配置

环境变量

变量默认值描述
PORT3000服务器端口
AUTH_TOKEN必需身份验证的Bearer Token
AMAZON_DOMAINamazon.comAmazon域名(例如,amazon.co.uk)
HEADLESSfalse以无头模式运行浏览器
USER_DATA_DIR./user-dataChrome用户数据目录

示例 .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的身份验证功能以增加安全性
    • 升级到ngrok付费计划以获得保留的域名和IP限制
  3. 会话数据

    • 登录会话存储在./user-data/
    • 包含cookies和认证令牌
    • 不要分享或提交此目录
    • 已经通过.gitignore排除
  4. 网络安全

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

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

最佳实践

  • ✅ 使用强且唯一的AUTH_TOKEN
  • ✅ 不要公开分享您的ngrok URL
  • ✅ 定期轮换AUTH_TOKEN
  • ✅ 监控服务器日志以查找可疑活动
  • ✅ 保持依赖项更新(npm audit
  • ✅ 生产环境中使用HEADLESS=true
  • ⚠️ 仅供个人使用 - 不适用于多用户场景

故障排除

工具未显示在Poke中

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

商品未添加到购物车

  1. 验证您是否已登录Amazon:
    • 检查浏览器窗口(如果可见)
    • 或要求Poke运行check_login
  2. 如果未登录:
    • 设置HEADLESS=false
    • 重启服务器
    • 在浏览器窗口中手动登录

连接频繁断开

  • 正常行为 - Poke根据需要重新连接
  • 如果持续出现,请检查ngrok连接:curl https://your-url.ngrok.io/health

计算机睡眠模式

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

开发

项目结构

amazon-mcp/
├── src/
│   ├── server.ts       # MCP服务器 + SSE实现
│   ├── amazon.ts       # Amazon自动化逻辑
│   ├── browser.ts      # Puppeteer浏览器管理
│   └── types.ts        # TypeScript接口
├── dist/               # 编译的JavaScript(gitignored)
├── user-data/          # Chrome会话数据(gitignored)
├── .env                # 环境配置(gitignored)
└── package.json

开发中运行

npm run dev    # 使用ts-node,无需编译

构建

npm run build  # 将TypeScript编译到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 Type II合规场景
  • ❌ HIPAA或其他受监管的数据处理
  • ❌ 商业规模的自动化

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

  • 实现适当的认证(OAuth 2.0)
  • 添加审计日志
  • 使用加密存储会话
  • 部署到合规基础设施(带有合规证书的AWS、GCP)
  • 实现速率限制和滥用预防

贡献

欢迎贡献!请:

  1. 分叉仓库
  2. 创建功能分支
  3. 进行更改
  4. 提交拉取请求

许可

MIT许可 - 详情见LICENSE文件。

支持

作者

@meimakes创建


注意: 运行服务器时请保持计算机清醒。ngrok隧道和SSE连接对网络中断敏感。