Amazon Cart MCP Server
by madebydia
README.md
# Amazon Cart MCP Server
Local MCP (Model Context Protocol) server that enables AI assistants to interact with your personal Amazon cart through browser automation. Works with [Claude Desktop](https://claude.ai/download), [Poke](https://poke.com), and any MCP-compatible client.
## ā ļø Important Disclaimer
**This tool uses browser automation to interact with Amazon.com.**
- **Users are solely responsible** for ensuring their use complies with [Amazon's Terms of Service](https://www.amazon.com/gp/help/customer/display.html?nodeId=508088)
- This project is **for personal, educational use only** - not for commercial automation or reselling
- **Use at your own risk** - the authors assume no liability for any violations of Amazon's policies or consequences thereof
- **Not affiliated with Amazon** - this is an independent, unofficial tool
- Amazon may change their website or policies at any time, potentially breaking functionality
- Excessive automation may result in account restrictions or bans
By using this software, you acknowledge and accept these risks.
## Features
- š **Search Amazon** - Find products by search query
- š **Add to Cart** - Add items to your Amazon cart automatically
- š **View Cart** - Check current cart contents and subtotal
- š **Login Persistence** - Session saved locally for seamless use
- š **Secure Access** - Bearer token authentication via ngrok tunnel
## Quick Start
### Prerequisites
- Node.js v20 or higher
- npm or yarn
- ngrok account (free tier works)
### Installation
1. **Clone the repository:**
```bash
git clone https://github.com/madebydia/amazon-mcp-server.git
cd amazon-mcp-server
```
2. **Install dependencies:**
```bash
npm install
```
3. **Configure environment:**
```bash
cp .env .env.local # Optional: keep your settings separate
```
Edit `.env` and set:
- `AUTH_TOKEN` - Generate a secure random token (required)
- `HEADLESS=false` - For first-time login
- `AMAZON_DOMAIN=amazon.com` - Or your local Amazon domain
4. **Build the project:**
```bash
npm run build
```
5. **Start the server:**
```bash
npm start
```
6. **First-time login:**
- A Chrome browser window will open
- Log into your Amazon account manually
- Session will be saved in `./user-data/`
- **After logging in once**, you can:
- Stop the server (Ctrl+C)
- Set `HEADLESS=true` in `.env`
- Restart with headless mode
7. **Expose via ngrok (in a separate terminal):**
```bash
npm run tunnel
# Note the HTTPS URL (e.g., https://abc123.ngrok.io)
```
## Connecting to Poke
1. Copy your ngrok URL from the terminal
2. In Poke, add a custom MCP integration:
- **URL:** `https://your-ngrok-url.ngrok.io/sse`
- **API Key:** Your `AUTH_TOKEN` from `.env`
- **Type:** MCP Server
3. **Important:** Always use the `/sse` endpoint!
4. Test the connection by asking Poke:
- "What tools do you have?"
- "Search Amazon for wireless mouse"
## Connecting to Claude Desktop
1. Build the project: `npm run build`
2. Open Claude Desktop ā Settings ā Developer ā Edit Config
3. Add to `mcpServers`:
```json
{
"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"
}
}
}
}
```
4. Restart Claude Desktop
5. You should see the Amazon tools available in the tools menu (š§)
> **First-time setup:** Run the server once with `HEADLESS=false` to log into Amazon manually. After that, set `HEADLESS=true` for Claude Desktop.
## Available Tools
| Tool | Description | Parameters |
|------|-------------|------------|
| `search_amazon` | Search for products on Amazon | `query` (required) |
| `add_to_cart` | Add a product to cart | `query` or `asin`, `quantity` (optional) |
| `view_cart` | View current cart contents | None |
| `check_login` | Verify Amazon login status | None |
## Architecture
```
āāāāāāāāāāāāāāāāāāā
ā 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) ā
āāāāāāāāāāāāāāāāāāā
```
## Configuration
### Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `PORT` | `3000` | Server port |
| `AUTH_TOKEN` | *required* | Bearer token for authentication |
| `AMAZON_DOMAIN` | `amazon.com` | Amazon domain (e.g., amazon.co.uk) |
| `HEADLESS` | `false` | Run browser in headless mode |
| `USER_DATA_DIR` | `./user-data` | Chrome user data directory |
### Example .env
```bash
PORT=3000
AUTH_TOKEN=a1b2c3d4-e5f6-4789-a012-3b4c5d6e7f8a
AMAZON_DOMAIN=amazon.com
HEADLESS=false
USER_DATA_DIR=./user-data
```
## Security
### ā ļø Important Security Considerations
1. **AUTH_TOKEN Protection**
- Never commit `.env` to Git (already in `.gitignore`)
- Use a cryptographically secure random token
- Generate with: `openssl rand -hex 32`
2. **ngrok Security**
- Free tier URLs are public but unguessable
- Consider ngrok's authentication features for extra security
- Upgrade to ngrok paid plan for reserved domains and IP restrictions
3. **Session Data**
- Login sessions stored in `./user-data/`
- Contains cookies and authentication tokens
- Never share or commit this directory
- Already excluded via `.gitignore`
4. **Network Security**
- Server only accepts authenticated requests
- All traffic through ngrok is HTTPS encrypted
- Local server binds to localhost only
5. **Browser Automation**
- Puppeteer runs with sandbox disabled (required for some systems)
- Session isolation via Chrome user data directory
- No data sent to third parties
### Best Practices
- ā
Use strong, unique AUTH_TOKEN
- ā
Never share your ngrok URL publicly
- ā
Regularly rotate AUTH_TOKEN
- ā
Monitor server logs for suspicious activity
- ā
Keep dependencies updated (`npm audit`)
- ā
Use HEADLESS=true in production
- ā ļø This is for personal use only - not production-ready for multi-user scenarios
## Troubleshooting
### Tools Not Showing in Poke
1. Restart the server
2. Delete and re-add the MCP connection in Poke
3. Check server logs for `tools/list` request
4. Verify ngrok tunnel is active
### Items Not Added to Cart
1. Verify you're logged into Amazon:
- Check the browser window (if visible)
- Or ask Poke to run `check_login`
2. If not logged in:
- Set `HEADLESS=false`
- Restart server
- Log in manually in the browser window
### Connection Keeps Dropping
- Normal behavior - Poke reconnects as needed
- If persistent, check ngrok connection: `curl https://your-url.ngrok.io/health`
### Computer Sleep Mode
- Server and ngrok pause when computer sleeps
- Poke will reconnect automatically on wake
- To prevent sleep: Run `caffeinate` in a separate terminal (macOS)
## Development
### Project Structure
```
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
```
### Running in Development
```bash
npm run dev # Uses ts-node, no build required
```
### Building
```bash
npm run build # Compiles TypeScript to dist/
```
## Testing
### Health Check
```bash
curl http://localhost:3000/health
```
Expected response:
```json
{"status":"ok","server":"amazon-mcp-server"}
```
### Test SSE Connection
```bash
curl -H "Authorization: Bearer YOUR_TOKEN" \
http://localhost:3000/sse
```
Should maintain an open connection with heartbeats.
## Compliance Notes
This project is designed for **personal, single-user use only**. It is not intended for:
- ā Multi-tenant deployments
- ā Production SaaS applications
- ā SOC 2 Type II compliance scenarios
- ā HIPAA or other regulated data handling
- ā Commercial automation at scale
If you need enterprise-grade compliance, consider:
- Implementing proper authentication (OAuth 2.0)
- Adding audit logging
- Using encrypted storage for sessions
- Deploying to compliant infrastructure (AWS, GCP with compliance certifications)
- Implementing rate limiting and abuse prevention
## Contributing
Contributions welcome! Please:
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Submit a pull request
## License
MIT License - see [LICENSE](LICENSE) file for details.
## Support
- š **Issues:** [GitHub Issues](https://github.com/madebydia/amazon-mcp-server/issues)
- š§ **Contact:** via GitHub
## Author
Created by [@madebydia](https://github.com/madebydia)
---
**Note:** Keep your computer awake while running the server. The ngrok tunnel and SSE connections are sensitive to network interruptions.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues