@striderlabs/mcp-mcdonalds
v0.1.0
Published
MCP server connector for McDonald's - browser automation with Playwright
Downloads
39
Maintainers
Readme
@striderlabs/mcp-mcdonalds
An MCP (Model Context Protocol) server for McDonald's — browse the menu, find nearby locations, manage a cart, place mobile orders, and check deals & rewards using Playwright browser automation.
Features
- Search Menu — Search McDonald's menu items by name, category, or keyword
- Find Restaurants — Locate nearby McDonald's with address, hours, and distance
- Cart Management — Add items with customizations, view cart totals
- Place Orders — Submit mobile pickup orders
- Deals — Browse current McDonald's promotions
- Rewards — Check MyMcDonald's points and available offers
Installation
npm install @striderlabs/mcp-mcdonalds
npx playwright install chromiumUsage
As an MCP server (Claude Desktop / Cursor / etc.)
Add to your MCP client config (e.g. ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"mcdonalds": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-mcdonalds"]
}
}
}Run directly
npx @striderlabs/mcp-mcdonaldsTools
search_menu
Search McDonald's menu items.
Input:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| query | string | Yes | Search term (e.g. "burger", "chicken", "breakfast") |
Example:
{ "query": "Big Mac" }find_restaurant
Find nearby McDonald's locations.
Input:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| location | string | Yes | Address, city, or ZIP code |
Example:
{ "location": "Chicago, IL" }add_to_cart
Add a menu item to your cart.
Input:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| menuItemId | string | Yes | Item ID from search_menu |
| name | string | Yes | Display name |
| price | number | Yes | Price per item (USD) |
| quantity | number | No | Quantity (default: 1) |
| customizations | object | No | Key-value customization pairs |
Example:
{
"menuItemId": "big-mac",
"name": "Big Mac",
"price": 5.99,
"quantity": 2,
"customizations": { "Sauce": "Extra" }
}view_cart
View current cart contents and totals.
No input required.
place_order
Place a mobile pickup order.
Input:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| restaurantId | string | Yes | Restaurant ID from find_restaurant |
| restaurantName | string | Yes | Restaurant name/address |
| pickupTime | string | No | Pickup time (default: "ASAP") |
| notes | string | No | Special instructions |
Example:
{
"restaurantId": "rest_001",
"restaurantName": "McDonald's - 123 Main St",
"pickupTime": "12:30 PM"
}Note: Full order placement requires McDonald's app authentication. The server generates an order ID and summary; complete payment through the McDonald's app.
get_deals
Get current McDonald's deals and promotions.
No input required.
get_rewards
Check MyMcDonald's rewards balance and offers.
Input:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| includeOffers | boolean | No | Include available offers (default: true) |
How It Works
The server uses Playwright to automate a headless Chromium browser, navigating mcdonalds.com to fetch live menu data, restaurant locations, deals, and rewards information. A static fallback dataset is used when scraping is unavailable (e.g. network issues or layout changes).
Cart state is maintained in-memory for the duration of the MCP session.
Development
git clone https://github.com/markswendsen-code/mcp-mcdonalds
cd mcp-mcdonalds
npm install
npx playwright install chromium
npm run dev # watch mode
npm run build # production buildLicense
MIT
