Back to MCP Servers

Uber Eats MCP Server

Community proof-of-concept MCP server that uses browser automation to search Uber Eats for restaurants and place food orders from an AI agent.

Travel by Eric Zakariasson (community) API Key active
Overview

Uber Eats MCP Server is a community-built, proof-of-concept Model Context Protocol server created by Eric Zakariasson. It is not an official Uber product. The server lets an LLM client search restaurants and menus on Uber Eats and place orders by driving the Uber Eats web app through Playwright browser automation rather than calling a public API.

The implementation is intentionally minimal. It exposes two tools, find_menu_options for searching the catalog and order_food for placing an order from a restaurant URL, plus a resource endpoint that returns asynchronously generated search results. Because it relies on a headless browser session, the server effectively acts on behalf of a real signed-in user.

The repo is Python only (Python 3.12+), uses uv for dependency management, and requires an Anthropic API key to drive the underlying browser-use agent. The author explicitly labels this as a POC, so it is best treated as a reference implementation for building browser-driven MCP servers on top of consumer apps, not as production infrastructure.

Tools

Tool Description
find_menu_options Search Uber Eats for restaurants or food items.
order_food Order food from a restaurant.
Setup Guide

Prerequisites

  • Python 3.12 or higher
  • uv package manager
  • An Anthropic API key (used by the browser-use agent that drives Playwright)

Install

git clone https://github.com/ericzakariasson/uber-eats-mcp-server.git
cd uber-eats-mcp-server
uv venv
source .venv/bin/activate
uv pip install -r requirements.txt
playwright install

Configure environment

Create a .env file in the project root:

ANTHROPIC_API_KEY=your_anthropic_api_key_here

Run in dev / inspector

uv run mcp dev server.py

Claude Desktop config

The README does not ship a Claude Desktop config block. A working config using uv looks like:

{
  "mcpServers": {
    "uber-eats": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/uber-eats-mcp-server",
        "run",
        "server.py"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "your_anthropic_api_key_here"
      }
    }
  }
}

Note: Because stdio is used as the MCP transport, browser output is intentionally suppressed. The agent will open a real browser session via Playwright to interact with Uber Eats.

Use Cases
  • Let an AI assistant search Uber Eats for nearby restaurants or specific dishes from a natural-language prompt
  • Automate placing a recurring lunch order from a known restaurant URL without opening the Uber Eats app
  • Prototype browser-automation-based MCP servers for consumer apps that lack public APIs
  • Build a personal food-ordering agent that combines search results with the resource endpoint for async retrieval
  • Demo how MCP tools can wrap Playwright-driven workflows for end-to-end task execution
Example Prompts
  • "Find me vegetarian ramen options on Uber Eats near my address."
  • "Search Uber Eats for late-night pizza places open right now."
  • "Order a large pepperoni pizza from this restaurant: https://www.ubereats.com/store/..."
  • "Look up sushi restaurants on Uber Eats and show me the top options."
  • "From the search results in resource://search_results/{id}, pick the highest-rated taco place and order two carne asada tacos."
Pros
  • Concrete working example of an MCP server that drives a consumer web app via Playwright
  • Minimal surface area, just two tools, so the code is easy to read and adapt
  • Uses standard tooling (uv, Playwright, Anthropic) that fits typical MCP development setups
Limitations
  • Explicitly a proof-of-concept, not maintained as production software
  • Unofficial, not affiliated with or endorsed by Uber, so account terms of service and CAPTCHAs/login flows may break it at any time
  • Requires an Anthropic API key in addition to MCP client costs, and depends on a real signed-in browser session
Alternatives