Skip to main content
Glama
README.md
# DoorDash MCP Server

A minimal Model Context Protocol (MCP) server that bridges the DoorDash Drive API with MCP-compatible clients.

## Features

- **create_delivery_quote**: Get delivery quotes for pickup/dropoff locations
- **create_delivery**: Create new delivery requests
- **get_delivery**: Check status of existing deliveries
- **cancel_delivery**: Cancel pending deliveries
- **accept_delivery_quote**: Accept a quote and optionally include a tip
- **update_delivery**: Update delivery addresses, times, or other details

## Prerequisites

1. DoorDash Drive API access (contact DoorDash for business partnership)
2. Node.js 12+ 
3. Required environment variables:
   - `DOORDASH_DEVELOPER_ID`
   - `DOORDASH_KEY_ID` 
   - `DOORDASH_SIGNING_SECRET`

## Installation

```bash
git clone https://github.com/amannm/doordash-mcp.git
cd doordash-mcp
npm install
```

## Usage

### As MCP Server

```json
{
  "mcpServers": {
    "doordash": {
      "command": "node",
      "args": ["/path/to/doordash-mcp/index.js"],
      "env": {
        "DOORDASH_DEVELOPER_ID": "your_developer_id",
        "DOORDASH_KEY_ID": "your_key_id", 
        "DOORDASH_SIGNING_SECRET": "your_signing_secret"
      }
    }
  }
}
```

### Direct Usage

```bash
export DOORDASH_DEVELOPER_ID=your_developer_id
export DOORDASH_KEY_ID=your_key_id
export DOORDASH_SIGNING_SECRET=your_signing_secret

node index.js
```

## API Reference

### create_delivery_quote

Get a delivery quote without creating an actual delivery.

**Parameters:**
- `external_delivery_id` (required): Unique identifier
- `pickup_address` (required): Full pickup address
- `dropoff_address` (required): Full dropoff address
- `pickup_business_name`: Business name for pickup
- `pickup_phone_number`: Contact number for pickup
- `pickup_instructions`: Special pickup instructions
- `dropoff_business_name`: Business name for dropoff  
- `dropoff_phone_number`: Contact number for dropoff
- `dropoff_instructions`: Special dropoff instructions
- `order_value`: Value of order in cents

### create_delivery

Create an actual delivery request.

**Parameters:** Same as `create_delivery_quote`

### get_delivery

Check the status of an existing delivery.

**Parameters:**
- `external_delivery_id` (required): The delivery ID to check

### cancel_delivery

Cancel a pending delivery.

**Parameters:**
- `external_delivery_id` (required): The delivery ID to cancel

## Architecture

This MCP server acts as a minimal bridge:

```
MCP Client <-> DoorDash MCP Server <-> DoorDash SDK <-> DoorDash Drive API
```

The implementation minimizes transformation between the MCP protocol and DoorDash SDK, passing through requests with minimal processing.

## License

MIT

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific actions in the delivery lifecycle: create_quote, accept_quote, create_delivery, get_delivery, update_delivery, and cancel_delivery. There is no overlap or ambiguity between these operations.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case naming (e.g., create_delivery_quote, accept_delivery_quote, cancel_delivery). The naming is predictable and uniform throughout the set.

Tool Count5/5

With 6 tools, this server is well-scoped for managing deliveries, covering the essential lifecycle from quoting to completion. Each tool earns its place without being excessive or insufficient for the domain.

Completeness5/5

The tool set provides complete CRUD/lifecycle coverage for the delivery domain: create (quote and delivery), read (get), update, and delete (cancel). There are no obvious gaps, and agents can handle typical workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues