当你对AI说“我饿了,帮我订个披萨”,它不再只是罗列餐厅名单,而是能真正打开外卖平台,完成搜索、下单、支付的全过程。这听上去像是科幻电影的情节,但Uber Eats MCP Server项目让这个场景变成了可运行的原型。本文将带你深度剖析这个连接AI与真实世界的“桥梁”,探索其技术内幕、手把手教你部署,并展望其背后的无限可能。
1. 模型概述:当AI学会“动手”
1.1 能力评估:你的AI外卖专员
Uber Eats MCP Server本质上是一个“翻译官”,它将AI助手的自然语言指令,转化为能在Uber Eats网站上执行的具体操作。它的核心能力非常聚焦:
-
两大核心工具:
-
find_menu_options(搜索餐厅/菜品):输入一个搜索词(如“披萨”、“寿司”),它会在Uber Eats上进行搜索,并返回一个包含餐厅和菜品信息的结构化结果列表。 -
order_food(下单食物):提供具体菜品的URL和名称,它可以模拟用户操作,完成将商品加入购物车、进入结算流程等一系列步骤。需要注意的是,作为一个概念验证(POC)项目,当前的订单操作主要是模拟流程,不会产生真实的消费。
-
-
一项关键资源:
-
get_search_results(获取搜索结果):由于搜索需要时间,工具会先返回一个请求ID。通过此资源接口,客户端可以稍后凭ID查询完整的搜索结果。
-
1.2 技术特点:现代AI工程的精巧实践
该项目不是一个简单的脚本,它体现了现代AI应用架构的多个关键思想:
-
基于Model Context Protocol (MCP):MCP是Anthropic等公司推动的一个开放协议,旨在为AI应用与外部工具/数据源之间建立标准化、安全的连接通道。你可以把它理解为AI世界的“USB-C接口”,让不同的AI客户端(如Claude Desktop, Cursor)都能以统一方式调用这个服务器的能力。
-
浏览器自动化驱动:项目没有使用(也可能不存在)官方的Uber Eats API,而是选择了更灵活但更具挑战性的方式:使用Playwright库控制浏览器,像真人一样操作网页。这使其能适应复杂的现代Web应用,但也意味着网站结构的改动可能导致脚本失效。
-
异步任务处理:搜索和下单都是耗时操作。服务器采用异步(asyncio)后台任务来处理这些请求,确保主线程不被阻塞,能够及时响应客户端的其他请求。
-
清晰的架构分层:项目结构分为MCP协议处理层、工具/资源定义层和浏览器自动化层,代码组织清晰,易于理解和扩展。
1.3 应用场景:从个人效率到商业智能
这个POC项目为我们打开了想象空间,其模式可应用于多个场景:
-
终极个人AI助理:集成到日常使用的AI助手(如Claude)中,通过自然语言实现一站式订餐,尤其适合多任务处理或行动不便时。
-
自动化测试与QA:开发者可以借鉴其模式,构建用于测试电商网站、SaaS应用复杂流程(登录、浏览、下单)的自动化智能体,用自然语言指令替代编写大量脆弱的前端测试脚本。
-
市场研究与竞品分析:通过自动化脚本,定期抓取特定区域、特定品类(如咖啡)的餐厅菜单、价格、评分数据,用于商业分析。
-
AI代理工作流的组成部分:它可以成为一个更复杂AI代理的“技能模块”。例如,一个安排完整晚宴的代理,可以调用它来处理“订餐”这个子任务。
2. 安装与部署:一步步激活你的AI外卖官
以下是跨平台(Windows/macOS/Linux)的详细部署指南。我们将使用 uv —— 一个更快的现代Python包管理工具,它能简化流程。
环境准备
-
安装 Python 3.12+:前往 Python官网 下载并安装对应版本。安装后,在终端输入
python --version确认。 -
安装 Git:前往 Git官网 下载安装。后续需要用它来获取项目代码。
-
申请 Anthropic API Key:项目主要依赖Claude模型来理解网页内容并决策。前往 Anthropic Console 注册并创建一个API Key,妥善保存。
通用安装步骤
以下步骤在三大操作系统上基本相同,仅有细微差别。
# 1. 克隆项目代码到本地 git clone https://github.com/ericzakariasson/uber-eats-mcp-server.git cd uber-eats-mcp-server # 2. 安装 uv 包管理器(如果未安装) pip install uv # 3. 创建并激活Python虚拟环境(隔离依赖) uv venv # 激活环境: # macOS/Linux: source .venv/bin/activate # Windows: .venv\Scripts\activate # 4. 安装项目依赖和Playwright浏览器 uv pip install -r requirements.txt playwright install # 这会下载Chromium等浏览器内核
提示:
requirements.txt包含了browser-use、fastmcp、langchain-anthropic等关键包。
系统特定配置与问题解决
| 操作系统 | 可能遇到的问题与解决方案 |
|---|---|
| Windows | 1. 终端权限:建议在管理员模式的PowerShell或终端中运行Playwright安装命令。 2. 路径问题:确保在项目根目录(有 server.py的目录)执行所有命令。3. 防火墙警告:首次运行可能会触发防火墙提示,允许即可。 |
| macOS | 1. 开发者工具:首次运行Playwright可能需要安装额外的Xcode命令行工具,按提示操作即可。 2. 权限设置:在“系统设置-隐私与安全性”中,可能需要允许终端或Python控制自动化。 |
| Linux | 1. 依赖库:Playwright需要一些系统库。如果安装失败,请根据Playwright官方文档或错误提示,安装如libwoff1、libopus0等缺失的依赖。 |
配置与运行
-
配置API密钥:
# 复制环境变量示例文件 cp .env.example .env
然后用文本编辑器打开项目根目录下的
.env文件,将你的Anthropic API Key填入:ANTHROPIC_API_KEY=sk-ant-api-xxxx...your_key_here
其他变量(如日志级别)可暂时保持默认。
-
运行服务器进行测试:
# 在已激活的虚拟环境中运行 uv run mcp dev server.py如果看到类似“Server running…”或监听端口的日志,说明基础服务启动成功。
3. 配套客户端:为AI装上“方向盘”
MCP服务器需要配合支持MCP协议的客户端才能发挥作用。以下是主流客户端的配置方法。
| 客户端 | 是否付费 | 核心配置步骤 | 参考/下载 |
|---|---|---|---|
| Claude Desktop | 免费 | 1. 找到配置文件 (claude_desktop_config.json)。2. 在 mcpServers 对象内添加配置。3. 重启Claude Desktop。 |
下载地址 |
| Cursor IDE | 免费/高级版 | 1. 在设置中搜索“MCP”,或直接编辑全局(~/.cursor/mcp.json)或项目内的 .cursor/mcp.json 文件。2. 添加服务器配置。 |
下载地址 |
| 其他MCP客户端 (如Tester MCP Client) | 通常免费 | 参考各客户端的文档,原理均为在配置中指定服务器启动命令。 | MCP官方列表 |
通用配置代码片段(添加到客户端的MCP配置文件中):
{ "mcpServers": { "uber-eats-automation": { "command": "python", "args": ["/你的/绝对/路径/uber-eats-mcp-server/server.py"], "env": { "ANTHROPIC_API_KEY": "你的API密钥" } } } }
关键提示:配置中的
command和路径必须准确。如果已经在.env文件中配置了API密钥,env部分有时可省略。配置后务必重启客户端。
4. 案例讲解:AI订披萨全流程
场景:晚上加班,你想让AI助手帮忙订一个芝士披萨,并选择评分较高的餐厅。
交互流程:
# 注:以下为模拟的客户端调用逻辑,实际交互由你的AI客户端(如Claude)自动完成。 # 1. 用户对AI说:“帮我找一下附近的芝士披萨。” # 2. AI客户端自动调用MCP服务器的工具: search_request = await client.call_tool({ "server": "uber-eats-automation", "tool_name": "find_menu_options", "arguments": {"search_term": "cheese pizza"} }) # 返回示例:{“request_id”: “abc123”, “message”: “Search started…”} # 3. AI等待约2分钟后,通过资源接口获取结果[citation:2]: search_results = await client.read_resource({ "uri": "resource://search_results/abc123" }) # 返回结构化数据,包含餐厅列表、菜品、价格、评分等。 # 4. AI分析结果,并推荐:“‘托尼披萨店’的经典芝士披萨评分4.8,距离2公里,需要帮你下单吗?” # 用户确认后,AI调用下单工具: order_confirmation = await client.call_tool({ "server": "uber-eats-automation", "tool_name": "order_food", "arguments": { "item_url": "https://www.ubereats.com/.../tony-pizza", // 来自搜索结果 "item_name": "Classic Cheese Pizza" } }) # 返回示例:{“message”: “Order process for ‘Classic Cheese Pizza’ has been initiated.”}
流程图示:
用户语音/输入
↓
AI客户端(Claude/Cursor)理解意图
↓
调用 MCP 服务器工具
├─ find_menu_options (搜索)
└─ order_food (下单)
↓
MCP服务器翻译指令,驱动Playwright浏览器
↓
模拟真人操作 Uber Eats 网站
↓
将结果(列表/状态)返回给AI客户端
↓
AI客户端用自然语言向用户汇报
5. 使用成本与商业价值评估
使用成本分析
-
开发与学习成本:低到中等。作为开源POC,代码免费。但需要一定的Python和现代AI栈知识来部署和调试。对于开发者而言,这是一个绝佳的学习MCP和AI代理实践的低成本样本。
-
运行成本:
-
计算资源:主要在本地运行,消耗个人电脑资源。
-
API成本:主要来自Anthropic API的调用费用。每次搜索和下单都需要Claude模型来“理解”网页并做出下一步决策,会产生token消耗。成本取决于使用频率。
-
潜在风险成本:依赖浏览器自动化,Uber Eats前端页面改版可能导致脚本失效,需要维护。
-
商业价值与前景
-
原型验证价值:极高。它成功验证了“AI代理通过标准化协议操作复杂Web服务”的可行性,为产品经理、创业者和开发者提供了具象化的参考。
-
技术示范价值:高。展示了如何将MCP、Playwright、LLM智能体技术栈组合解决实际问题,代码可作为企业构建内部自动化工具的高质量起点。
-
直接商用差距:目前不适合直接商用。内存存储(重启数据丢失)、缺乏错误恢复机制、模拟下单等限制,使其定位为概念验证。但其设计模式可被吸收进更健壮的商业产品中。
-
未来延伸潜力:
-
垂直领域自动化:将其模式复制到机票预订、酒店预约、行政缴费等任何基于Web的流程。
-
企业级集成:结合RPA(机器人流程自动化)理念,为大型企业构建内部系统的智能操作助手。
-
结论:Uber Eats MCP Server不是一个成熟的产品,而是一把打开新世界大门的钥匙。它以一种简洁有力的方式向我们证明,AI代理与真实世界交互的技术路径是畅通的。对于开发者和技术爱好者,投入时间部署和把玩这个项目,收获的将不仅是一个能订披萨的玩具,更是对下一代AI应用范式的深刻理解。未来,当AI助手能无缝操作为我们处理各类生活事务时,我们或许会想起,这一切始于某个让AI学会点外卖的开源实验。

关注 “悠AI” 更多干货技巧行业动态