mcd-order
Provides a complete McDonald's ordering interface and tools for selecting stores, browsing menus, managing a cart, applying coupons, calculating prices, creating orders, and tracking order status through McDonald's official MCP service.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcd-order帮我点个麦当劳"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
麦当劳点餐 MCP App
一个 MCP App:它不只是一组工具,而是随服务下发一个完整的点餐界面,在宿主的沙箱 iframe 里渲染,选门店、加购物车、选券、下单、看订单全部在界面里点,不消耗对话轮次。
底层调用 麦当劳官方 MCP 服务(https://mcp.mcd.cn)。
声明:本项目为非官方的第三方客户端,与麦当劳公司无任何关联,未获其授权或认可。 「麦当劳」「McDonald's」及金拱门标识均为麦当劳公司的注册商标,归其所有。 本项目仅通过麦当劳对外开放的 MCP 接口访问服务,使用者需自行申请并遵守官方条款。
快速开始
需要 Node 20+,以及一个麦当劳 MCP Token(https://open.mcd.cn/mcp → 手机号登录 → 控制台 → 激活 → 复制,每分钟限 600 次请求)。
在支持 MCP Apps 的宿主里加入配置即可,不用克隆仓库:
{
"mcpServers": {
"mcd-order": {
"command": "npx",
"args": ["-y", "@dumbo-ai/mcd-mcp", "--stdio"],
"env": { "MCD_MCP_TOKEN": "你的Token" }
}
}
}然后在对话里说「帮我点个麦当劳」「看看北京中关村的麦当劳菜单」即可。
没有 Token 时,把 MCD_MCP_TOKEN 换成 MCD_MOCK = 1,会使用内置模拟数据,不访问官方接口,适合先看界面。
宿主必须支持 MCP Apps 的界面渲染才能看到界面。若宿主只渲染文本,则退化为纯工具调用,建议改用下面的远程连接器方式。
Related MCP server: agent-storefront
这个 App 做了什么
环节 | 用户看到、操作什么 | 用到的工具 |
选择门店 | 选自取 / 外送 / 得来速,确认门店或配送地址 |
|
浏览菜单 | 分类、餐品名称、价格、划线价、促销标签、套餐详情 |
|
点餐 | 加入购物车、增减数量、删除商品、套餐换品与加减配料 | 界面维护购物车,结算时转成官方 |
结算 | 选优惠券、取餐方式、餐具、备注;核对餐品、配送费、优惠、应付金额 |
|
付款 | 点击「确认下单并付款」,界面内生成支付二维码。麦当劳只支持在其 App 内付款,不提供微信或支付宝收款码,扫码后会拉起麦当劳 App |
|
查看结果 | 订单状态、取餐码 / 取餐柜 / 配送信息,自动刷新,可取消待支付订单 |
|
它是怎么作为 MCP App 工作的
宿主(Claude 等) ──MCP──▶ 本服务(server/) ──JSON-RPC + Bearer Token──▶ https://mcp.mcd.cn
▲ │
│ ui://mcd-order/index.html(React 打包成的单文件页面)
└── 在沙箱 iframe 中渲染,界面通过 app.callServerTool 回调本服务的工具界面随服务下发。服务注册了
ui://mcd-order/index.html这个 UI 资源,入口工具mcd-order带_meta.ui指向它;宿主拿到后在沙箱 iframe 里渲染。交互不占对话轮次。界面直接用
app.callServerTool调用本服务的工具,查门店、翻菜单、算价这些都不用经过模型。下单必须由人点击。
delivery-create-address、create-order、cancel-order声明为visibility: ["app"],只有界面能调用,模型无法替用户下单。模型仍然看得见状态。界面通过
updateModelContext把当前门店、购物车、订单状态同步回模型,方便继续对话。跟随宿主外观与尺寸。主题、语言、容器尺寸都来自宿主的 host context;容器宽度达到 860px 时,菜单切换为「分类 + 卡片网格 + 右侧购物车栏」的宽屏布局。
对不支持界面的宿主也可用。工具的
content里同时给出文本摘要和 JSON,structuredContent里是归一化后的结构。
工具清单
工具 | 可见性 | 说明 |
| 模型 + 界面 | 打开点餐界面。可选参数 |
| 模型 + 界面 | 到店 / 得来速门店查询(收藏、城市+关键词、经纬度) |
| 模型 + 界面 | 配送地址列表 |
| 模型 + 界面 | 按地址查询可配送门店 |
| 模型 + 界面 | 门店实时菜单 |
| 模型 + 界面(无界面渲染) | 套餐组成、默认配料 |
| 模型 + 界面(无界面渲染) | 当前门店可用优惠券 |
| 模型 + 界面(无界面渲染) | 官方报价(返回单位为分) |
| 模型 + 界面 | 订单状态 / 取餐 / 配送信息 |
| 仅界面 | 新增配送地址 |
| 仅界面 | 创建订单,返回 |
| 仅界面 | 取消待支付订单 |
Token 只在服务端使用,不会出现在界面或模型上下文里。
其他接入方式
Claude Desktop 本地 stdio,指向已构建的文件:
{
"mcpServers": {
"mcd-order": {
"command": "node",
"args": ["/绝对路径/mcp-mcd-apps/dist/server/main.js", "--stdio"],
"env": { "MCD_MCP_TOKEN": "你的Token" }
}
}
}远程 HTTP 连接器,先把服务暴露到公网,再在 设置 → Connectors → Add custom connector 填入地址:
MCD_MCP_TOKEN=你的Token npm start
npx cloudflared tunnel --url http://localhost:3001 # 连接器地址填 https://xxx.trycloudflare.com/mcpHTTP 模式下 Token 的解析顺序是:请求头 x-mcd-token → 查询参数 ?token= → Authorization: Bearer(仅当未设置环境变量时)→ 环境变量 MCD_MCP_TOKEN。部署给多人使用时,建议每人通过 x-mcd-token 请求头携带自己的 Token。
从源码运行
npm install
npm run build # 打包界面 + 编译服务端
MCD_MCP_TOKEN=你的Token npm start # Streamable HTTP,默认 http://localhost:3001/mcp
MCD_MCP_TOKEN=你的Token npm run start:stdio
MCD_MOCK=1 npm start # 模拟数据
npm run dev # 界面监听打包 + 服务端热重启环境变量见 .env.example:MCD_MCP_TOKEN、PORT、MCD_MOCK、MCD_MCP_URL(可选,默认 https://mcp.mcd.cn)。
不经过宿主调试时,MCP Apps 官方仓库自带一个测试宿主:
git clone --depth 1 https://github.com/modelcontextprotocol/ext-apps.git
cd ext-apps/examples/basic-host && npm install
SERVERS='["http://localhost:3001/mcp"]' npm start # 打开 http://localhost:8080,选 mcd-order 点 Call Tool想核对官方接口的原始返回:
MCD_MCP_TOKEN=你的Token npm run probe -- query-nearby-stores '{"searchType":1,"beType":1}'许可证
MIT。本项目的代码以 MIT 授权;麦当劳的商标与品牌资产不在此授权范围内。
This server cannot be deployed
Maintenance
Related MCP Connectors
Order food from Cordering white-label restaurants: browse menus, confirm, then place an order.
Pickup orders at Japanese restaurants for AI agents: find stores, read menus, place orders. No auth.
- OpenAjanOAuthcom.openajan
Find local shops, read live menus and free times, and order or book on the user's behalf.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with Uber Eats for food ordering and delivery management through natural language, acting as a proof-of-concept MCP integration.-
- FlicenseNot gradedqualityDmaintenanceEnables any AI agent to discover, query, and order from a restaurant's storefront via MCP tools. It handles menu lookup, modifier validation, and enforces a mandatory confirmation gate before payment, replacing the human-operated phone line.-
- FlicenseAqualityDmaintenanceAllows AI assistants to browse menus, manage carts, and place orders on Uber Eats through natural language commands.342-
- FlicenseNot gradedqualityBmaintenanceEnables voice-driven food ordering by providing tools to search restaurants, browse menus, check item availability, manage carts, calculate optimal coupon discounts, confirm and place orders, and track deliveries. It also supports long-term preference memory and order history for natural, multi-turn conversational commerce.-