DoorDash自动化服务

一个允许AI代理通过DoorDash自动订购食品、杂货等的MCP服务器,支持搜索餐厅、浏览菜单、构建购物车和下订单。

  • by ashah360
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 ashah360/doordash-mcp

使用说明

车门仪表板

一个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/.

认证

登录完全自动化,无需手动浏览。

  1. 服务器使用您的电子邮件和密码调用DoorDash的身份端点
  2. 如果需要MFA,它会通过以下方式提示输入验证码 doordash_verify
  3. 会话Cookie将持久化到 ~/.doordash-mcp/session.json
  4. 后续启动从磁盘还原会话——在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的欺诈检测阻止。

许可证

麻省理工学院