Skip to main content
Glama
README.md
# @striderlabs/mcp-burgerking

An MCP (Model Context Protocol) server for Burger King fast food ordering. This package enables AI assistants like Claude to search the BK menu, manage a cart, find nearby locations, and place orders via Playwright browser automation.

## Features

- Search the full Burger King menu by keyword or category
- Get detailed nutrition info and customization options for any item
- Add items to an in-memory cart with customizations
- View cart contents and estimated totals (with tax)
- Find nearby Burger King locations
- Checkout with delivery or pickup options
- Track order status after placement

## Installation

### Via npm

```bash
npm install @striderlabs/mcp-burgerking
```

### Via tarball

```bash
npm install /path/to/striderlabs-mcp-burgerking-1.0.0.tgz
```

### Playwright browsers (required)

After installing, you must install Playwright's Chromium browser:

```bash
npx playwright install chromium
```

## Configuration

### Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "burgerking": {
      "command": "npx",
      "args": ["-y", "@striderlabs/mcp-burgerking"]
    }
  }
}
```

Or if installed globally:

```json
{
  "mcpServers": {
    "burgerking": {
      "command": "mcp-burgerking"
    }
  }
}
```

Config file locations:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`

## Tools

### `search_menu`

Search the Burger King menu by keyword or category.

**Parameters:**
- `query` (optional): Search keyword (e.g., "chicken", "burger", "fries")
- `category` (optional): One of `burgers`, `sides`, `drinks`, `desserts`, `breakfast`

**Example:**
> "Search for chicken items on the BK menu"

### `get_item_details`

Get detailed information about a specific menu item including nutrition facts and customization options.

**Parameters:**
- `item_id` (required): Item ID from search results (e.g., `whopper`, `fries-md`)

**Example:**
> "Get details for the Whopper"

### `add_to_cart`

Add a menu item to the cart with optional customizations.

**Parameters:**
- `item_id` (required): Item ID to add
- `quantity` (optional): Number to add (default: 1)
- `customizations` (optional): Array of customization strings (e.g., `["no pickles", "extra cheese"]`)

**Example:**
> "Add 2 Whoppers with no pickles to my cart"

### `view_cart`

View current cart contents with subtotal, estimated tax, and grand total.

**Example:**
> "Show me my cart"

### `checkout`

Proceed to checkout. Attempts browser automation to bk.com; falls back gracefully if bot protection is encountered.

**Parameters:**
- `order_type` (required): `delivery` or `pickup`
- `address` (optional): Delivery address (required for delivery)
- `location_id` (optional): BK location ID for pickup (from `find_locations`)

**Example:**
> "Checkout for delivery to 123 Main St, San Francisco CA"

### `get_order_status`

Check the status of a placed order.

**Parameters:**
- `order_id` (required): Order ID returned by checkout

**Example:**
> "What's the status of order BKA1B2C3?"

### `find_locations`

Find nearby Burger King locations.

**Parameters:**
- `address` (required): Address, city, or ZIP code
- `radius_miles` (optional): Search radius in miles (default: 5)

**Example:**
> "Find BK locations near 10001"

## Usage Examples

```
User: Find me something vegetarian at Burger King
Claude: [calls search_menu with query="vegetarian"] → Returns Impossible Whopper

User: Add an Impossible Whopper with no mayo and a large Coke to my cart
Claude: [calls add_to_cart for impossible-whopper] → Added
         [calls add_to_cart for coke-lg] → Added

User: Show my cart
Claude: [calls view_cart] → Shows items, subtotal $11.27, tax $0.90, total $12.17

User: Checkout for pickup at the downtown location
Claude: [calls find_locations] → Gets location IDs
         [calls checkout with order_type=pickup] → Returns order ID
```

## Notes

- **Bot Protection**: bk.com uses Akamai/Cloudflare bot protection. The checkout and location tools gracefully fall back to demo/simulated responses when the site blocks automation.
- **In-Memory Cart**: Cart state is maintained in memory for the duration of the server process. Restarting the server clears the cart.
- **Playwright Requirement**: Playwright and Chromium must be installed for browser automation features. The server will still function with demo data if Playwright is unavailable.
- **Real Orders**: Due to bot protection and authentication requirements, actual order placement on bk.com requires signing into a BK account. The checkout tool provides an order reference ID for completing the order manually.

## Development

```bash
git clone https://github.com/markswendsen-code/mcp-burgerking
cd mcp-burgerking
npm install
npm run build
```

Run in development mode:
```bash
npm run dev
```

## License

MIT - Strider Labs

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: searching, details, cart management, checkout, locations, and order status. No overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (e.g., add_to_cart, get_item_details, search_menu). Even 'checkout' as a single verb is clear and fits the pattern.

Tool Count5/5

With 7 tools, the server is well-scoped for a food ordering service. Each tool serves a necessary function without redundancy or bloat.

Completeness4/5

Covers the full ordering workflow: search, details, add to cart, view cart, checkout, find locations, and order status. Minor gap: no tool to remove or modify cart items, but the core flow is complete.

Maintenance

ActivityInactive
ResponsivenessNo issues