使用说明
车门仪表板
一个MCP服务器,允许AI代理通过DoorDash订购食品、杂货等。搜索餐馆、浏览菜单、构建购物车和下订单——所有这些都是通过编程实现的。
内置于 CycleTLS,the 模型上下文协议SDK和DoorDash的内部GraphQL API。无需浏览器、Chromium或木偶师/剧作家。
设置
git clone https://github.com/ashah360/doordash-mcp.git
cd doordash-mcp
npm install
npm run build
创建一个 .env 文件(参见 .env.example):
DOORDASH_EMAIL=your@email.com
DOORDASH_PASSWORD=your-password
光标
添加 ~/.cursor/mcp.json:
{
"mcpServers": {
"doordash": {
"command": "node",
"args": ["/path/to/doordash-mcp/dist/index.js"],
"env": {
"DOORDASH_EMAIL": "your@email.com",
"DOORDASH_PASSWORD": "your-password"
}
}
}
}
克劳德桌面
添加 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"doordash": {
"command": "node",
"args": ["/path/to/doordash-mcp/dist/index.js"],
"env": {
"DOORDASH_EMAIL": "your@email.com",
"DOORDASH_PASSWORD": "your-password"
}
}
}
}
HTTP传输
设置 PORT 启动HTTP服务器而不是stdio的环境变量:
PORT=3000 node dist/index.js
MCP端点将在 http://localhost:3000/mcp.
工具
涵盖DoorDash整个生命周期的21个工具:
发现
| 工具 | 说明 |
|---|---|
doordash_search |
按名称、菜肴或食物类型搜索餐馆和商店 |
doordash_menu |
获取餐厅的完整菜单,包括菜品、价格和选项标志 |
doordash_convenience_search |
在杂货店/便利店/酒类商店内搜索商品 |
doordash_item_options |
获取菜单项的自定义选项(侧面、额外部分、尺寸) |
购物车
| 工具 | 说明 |
|---|---|
doordash_add_to_cart |
使用嵌套自定义选项将商品添加到购物车 |
doordash_cart |
查看所有包含商品和小计的活动购物车 |
doordash_modify_cart |
更新项目数量或删除项目 |
doordash_delete_cart |
删除购物车 |
结账
| 工具 | 说明 |
|---|---|
doordash_checkout |
预览费用、交付时间和总计 |
doordash_place_order |
下订单(向账户收费) |
doordash_order_status |
检查付款和交货状态 |
集团订单
| 工具 | 说明 |
|---|---|
doordash_create_group_order |
创建群组订单并获取共享链接 |
doordash_group_order_status |
查看每个人的项目和完成状态 |
账户
| 工具 | 说明 |
|---|---|
doordash_login |
使用电子邮件+密码自动登录 |
doordash_verify |
输入MFA验证码 |
doordash_orders |
查看订单历史记录 |
doordash_addresses |
列出已保存的收货地址 |
doordash_set_address |
设置活动收货地址 |
doordash_add_address |
添加新的收货地址 |
doordash_payment_methods |
列出已保存的付款方式 |
doordash_add_card |
添加支付卡(通过Stripe标记) |
运作原理
DoorDash没有公共消费者API。这个项目反向引擎他们的内部GraphQL API-同一个 doordash.com 在浏览器中使用。
最困难的部分是Cloudflare。DoorDash位于Cloudflare的机器人检测之后,该检测对TLS握手(JA3)进行指纹识别。一个正常的 fetch() Node.js的TLS指纹看起来不像真正的浏览器,因此会立即被阻止。
CycleTLS 通过在网络级别使用类似Chrome的JA3指纹建立TLS连接来解决这个问题。无需浏览器,只需一次虚假的握手。结合匹配的User-Agent标头,请求看起来与Cloudflare的真实Chrome会话没有区别。
GraphQL查询是从真实的DoorDash浏览器会话中捕获的,并存储为 .graphql 文件位于 queries/.
认证
登录完全自动化,无需手动浏览。
- 服务器使用您的电子邮件和密码调用DoorDash的身份端点
- 如果需要MFA,它会通过以下方式提示输入验证码
doordash_verify - 会话Cookie将持久化到
~/.doordash-mcp/session.json - 后续启动从磁盘还原会话——在Cookie过期之前不需要重新登录
建筑
src/
├── index.ts # MCP server bootstrap (stdio + HTTP transports)
├── tools/
│ └── index.ts # 21 tool registrations
├── api/
│ ├── graphql.ts # GraphQL client + query loader
│ ├── search.ts # Restaurant/store search
│ ├── menu.ts # Menus + item options
│ ├── cart.ts # Cart management
│ ├── checkout.ts # Checkout + order placement
│ ├── orders.ts # Order history + status
│ ├── group.ts # Group orders
│ └── account.ts # Addresses, payment methods, Stripe tokenization
├── auth/
│ └── login.ts # Login + MFA flow
├── client/
│ ├── http.ts # CycleTLS HTTP client (JA3 spoofing)
│ ├── cookies.ts # Cookie jar with domain matching + expiry
│ └── session.ts # Session persistence to disk
└── logging/
└── traffic.ts # Request/response logging with redaction
queries/
└── *.graphql # Captured GraphQL queries
已知限制
- 真钱:
doordash_place_order向您的账户收费。没有沙盒。 - 购物车数量更新:DoorDash
updateCartItemV2变异在服务器端被破坏。该工具通过删除+重新添加来绕过它。 - 预定订单:仅支持ASAP交付。
- 地址地理编码:
doordash_add_address需要lat/lng坐标。 - VCC卡:虚拟信用卡被DoorDash的欺诈检测阻止。
许可证
麻省理工学院