DoorDash MCP Server
An MCP (Model Context Protocol) server that lets AI agents search restaurants, browse menus, compare prices, and manage your DoorDash cart — all without opening a browser or wasting tokens on HTML parsing.
How It Works
Instead of using a browser-based AI agent (which eats context and tokens parsing HTML), this MCP server runs a lightweight background browser that handles authentication and API calls. Your AI agent gets clean JSON — no HTML, no screenshots, no wasted tokens.
Under the hood, it uses DoorDash's internal GraphQL API (reverse-engineered from web traffic) via a Playwright browser instance that maintains your session.
Features
| Tool | Description |
|---|---|
login_check |
Check if your DoorDash session is active |
search_restaurants |
Search restaurants and food by keyword |
get_store_menu |
Get full menu with prices, deals, and badges |
add_to_cart |
Add items to your cart |
remove_from_cart |
Remove items from cart |
list_carts |
View all active carts |
order_history |
Get recent order history |
Deals and promotions (Buy 1 Get 1 Free, DashPass offers, etc.) are surfaced in both search results and menu items.
Setup
1. Install
git clone <this-repo>
cd doordash-mcp
npm install
npx playwright install chromium
2. Configure Email
cp .env.example .env
Edit .env and set your DoorDash account email:
DOORDASH_EMAIL=your-email@example.com
3. Login (one-time)
node login.js
This opens a browser, sends an OTP to your email/phone, and saves the session. You only need to do this once (or when your session expires).
On headless Linux: The script auto-starts a virtual display via Xvfb. Make sure xvfb is installed (sudo apt install xvfb).
4. Add to Claude Code
Add to ~/.claude/settings.json:
{
"mcpServers": {
"doordash": {
"command": "node",
"args": ["/absolute/path/to/doordash-mcp/mcp-server.js"]
}
}
}
Restart Claude Code to pick up the new server.
Usage
Once configured, just talk to your AI agent naturally:
- "Search for biryani near me"
- "Show me the Pizza Hut menu"
- "What's the cheapest dosa at Thanjai Restaurant?"
- "Add 2 Masala Dosas to my cart"
- "What did I order last time?"
- "Find me a burger place with deals"
How the Spy Tool Works
Want to discover new endpoints or debug? The spy.js script opens a browser and logs all DoorDash API traffic as you browse:
node spy.js
Browse DoorDash normally — search, view menus, add to cart. All API calls get logged to logs/api-calls.jsonl. Close the browser when done.
Architecture
AI Agent ──(MCP stdio)──> mcp-server.js ──(GraphQL via Playwright)──> DoorDash API
│
browser-data/ (persistent session cookies)
- No headless HTTP: Cloudflare blocks plain HTTP requests. The server uses a real browser (positioned off-screen on macOS, or via Xvfb on Linux)
- Persistent session: Login once, the browser profile in
browser-data/keeps your cookies alive - Minimal tokens: AI agents get structured JSON, never HTML
Platform Notes
| Platform | How it runs |
|---|---|
| macOS | Browser window positioned off-screen (-32000, -32000) |
| Linux with display | Same as macOS |
| Linux headless (SSH) | Auto-starts Xvfb virtual display |
Disclaimer
This project reverse-engineers DoorDash's internal web APIs for personal use. It is not affiliated with, endorsed by, or connected to DoorDash in any way. Use at your own risk — endpoints may change without notice, and automated access may violate DoorDash's Terms of Service.
License
MIT
Tools 7
login_checkCheck if your DoorDash session is activesearch_restaurantsSearch restaurants and food by keywordget_store_menuGet full menu with prices, deals, and badgesadd_to_cartAdd items to your cartremove_from_cartRemove items from cartlist_cartsView all active cartsorder_historyGet recent order historyEnvironment Variables
DOORDASH_EMAILrequiredYour DoorDash account email address