@striderlabs/mcp-ubereats
README.md
# @striderlabs/mcp-ubereats
[](https://www.npmjs.com/package/@striderlabs/mcp-ubereats)
[](https://registry.modelcontextprotocol.io/)
[](https://opensource.org/licenses/MIT)
MCP server for Uber Eats — let AI agents search restaurants, browse menus, place orders, and track deliveries.
Built by [Strider Labs](https://striderlabs.ai).
## Features
- Search restaurants by name, cuisine, or food type
- Browse full menus with item details and prices
- Add items to cart with quantity and special instructions
- Clear cart and start fresh
- Place orders with a mandatory confirmation step
- Track active order status and delivery progress
- Persistent sessions — stay logged in across restarts
## Installation
```bash
npm install -g @striderlabs/mcp-ubereats
```
Or run directly with npx:
```bash
npx @striderlabs/mcp-ubereats
```
## Configuration
Add to your MCP client configuration (e.g., Claude Desktop `~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"ubereats": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-ubereats"]
}
}
}
```
## Authentication
This connector uses Playwright browser automation. On first use:
1. Call `ubereats_status` — it will return a login URL
2. Open the URL in your browser and log in to Uber Eats
3. Run `ubereats_status` again to verify the session was saved
4. Session cookies are stored at `~/.strider/ubereats/cookies.json`
5. Sessions persist automatically across restarts
To log out or reset your session:
```
ubereats_logout
```
## Available Tools
### Session Management
| Tool | Description |
|------|-------------|
| `ubereats_status` | Check login status; returns login URL if not authenticated |
| `ubereats_login` | Get the login URL to open in a browser |
| `ubereats_logout` | Clear stored session cookies (log out) |
### Delivery
| Tool | Description |
|------|-------------|
| `ubereats_set_address` | Set delivery address before searching |
### Restaurants & Menus
| Tool | Description |
|------|-------------|
| `ubereats_search` | Search restaurants by name, food type, or cuisine |
| `ubereats_get_restaurant` | Get restaurant details and full menu |
### Cart & Ordering
| Tool | Description |
|------|-------------|
| `ubereats_add_to_cart` | Add an item to cart with quantity and special instructions |
| `ubereats_view_cart` | View current cart contents and totals |
| `ubereats_clear_cart` | Remove all items from cart |
| `ubereats_checkout` | Preview or place the order (`confirm=true` to place) |
| `ubereats_track_order` | Track an active order's status and ETA |
## Example Usage
### Check login status
```json
{
"tool": "ubereats_status"
}
```
### Set delivery address
```json
{
"tool": "ubereats_set_address",
"arguments": {
"address": "123 Main St, San Francisco, CA 94102"
}
}
```
### Search for restaurants
```json
{
"tool": "ubereats_search",
"arguments": {
"query": "sushi",
"cuisine": "japanese"
}
}
```
### Get restaurant menu
```json
{
"tool": "ubereats_get_restaurant",
"arguments": {
"restaurantId": "nobu-restaurant-sf"
}
}
```
### Add to cart
```json
{
"tool": "ubereats_add_to_cart",
"arguments": {
"restaurantId": "nobu-restaurant-sf",
"itemName": "Spicy Tuna Roll",
"quantity": 2,
"specialInstructions": "No wasabi please"
}
}
```
### Preview order before placing
```json
{
"tool": "ubereats_checkout",
"arguments": {
"confirm": false
}
}
```
### Place the order
```json
{
"tool": "ubereats_checkout",
"arguments": {
"confirm": true
}
}
```
### Track order
```json
{
"tool": "ubereats_track_order",
"arguments": {
"orderId": "abc123"
}
}
```
## Typical Workflow
```
1. ubereats_status — check if logged in
2. ubereats_set_address — set where to deliver
3. ubereats_search — find restaurants
4. ubereats_get_restaurant — browse the menu
5. ubereats_add_to_cart — add items
6. ubereats_view_cart — review cart
7. ubereats_checkout — preview (confirm=false), then place (confirm=true)
8. ubereats_track_order — track delivery
```
## Requirements
- Node.js 18+
- Playwright (Chromium browser auto-installed on first run)
- An active Uber Eats account with a saved payment method
## How It Works
1. **Headless Chrome** — Playwright runs a real browser in the background
2. **Stealth mode** — Browser fingerprint mimics a real user to avoid detection
3. **Cookie persistence** — Login sessions are saved and reloaded automatically
4. **Structured responses** — All tool outputs are JSON for easy parsing
## Security
- Session cookies stored locally at `~/.strider/ubereats/cookies.json`
- No credentials are stored — authentication uses the browser-based Uber login flow
- Cookies never leave your machine
## Limitations
- Uber Eats must be available in your region
- Menu customizations (modifiers, options) may require additional interaction
- Order placement requires a valid payment method on your Uber Eats account
- Dynamic pricing and availability may differ from what is displayed
## Development
```bash
git clone https://github.com/markswendsen-code/mcp-ubereats.git
cd mcp-ubereats
npm install
npm run build
npm start
```
## License
MIT © [Strider Labs](https://striderlabs.ai)
## Related
- [@striderlabs/mcp-doordash](https://www.npmjs.com/package/@striderlabs/mcp-doordash) — DoorDash MCP connector
- [@striderlabs/mcp-gmail](https://www.npmjs.com/package/@striderlabs/mcp-gmail) — Gmail MCP connector
- [Model Context Protocol](https://modelcontextprotocol.io) — Learn more about MCP
TDQS
A4.2/5.0
Scored across 11 tools
Disambiguation5/5
Each tool has a distinct and non-overlapping purpose, covering authentication, search, cart management, checkout, and tracking without ambiguity.
Naming Consistency5/5
All tools follow a consistent 'ubereats_<verb>_<noun>' or 'ubereats_<verb>' pattern, making them predictable and easy to understand.
Tool Count5/5
11 tools is well-scoped for a food ordering service, covering all essential steps from login to tracking without being excessive or insufficient.
Completeness4/5
The tool set covers the full lifecycle of ordering, but lacks a tool to remove individual items or edit quantities in the cart, which is a minor gap.
Maintenance
ActivityInactive
ResponsivenessNo issues