把今天的小快乐,放在桌面上。
麦麦日历是基于麦当劳 MCP 的 iOS Scriptable 桌面小组件。奶白纸感的日历上,用一个小图标标记活动资讯,并用一行文字告诉你今天有什么。它不是网页伪装的小组件,也不是独立上架 App。
| 中秋 · 月圆麦满 | 春节 · 快乐开年 |
|---|---|
![]() |
![]() |
以上为设计原型,日期与活动内容仅作示例,安装后的效果以当前版本为准。生日布局已迭代,可查看新版开发预览。点击节日图片可查看大图。
独立参赛作品,非麦当劳官方产品。当前为 0.1.0 参赛候选版:第一版小、中、大尺寸已由用户安装并提供 iPhone 桌面截图确认;生日新版通过电脑预览与自动检查。iOS 后台刷新与跨日换肤尚未进行持续真机验证。
面向喜欢简约桌面、希望轻松了解麦当劳活动并记录特别日子的 iPhone 用户。无需 Mac,使用 Scriptable 即可安装。
- 小、中、大三个桌面尺寸;三套日常皮肤:奶油纸笺、野餐格纹、奶黄晴天。
- 真实调用
campaign-calendar,按官方返回顺序,每天只显示第一个可识别产品;同一产品不展开其他活动或数量。 - 日期小图标和一行摘要,没有领券、购物、抽奖或营销跳转入口。
- 主动设置公历生日,生日当天显示不带蜡烛的小蛋糕和“祝你生日快乐!”。
- 生日使用独立贺卡布局:奶油白与淡粉底色、醒目祝福、笑脸餐盒和小蛋糕;大尺寸保留月历,当天不展示活动摘要。
- 春节、中秋限定插画;除夕、端午、重阳、国庆使用节日文字和标记。离线节日日期覆盖 2026—2028 年,不包含法定放假/调休信息。
- 生日优先于节日;可关闭自动换肤;三套日常皮肤可分别绑定不同桌面组件。
- Token 只存 iPhone 钥匙串,手机直连麦当劳官方 MCP;不读取订单、地址或定位,不建立共享账号后台。
- 从 App Store 安装 Scriptable。
- 下载 iPhone 安装包,在“文件”App 解压。
- 将
Scriptable文件夹内的 5 个.js文件及MaiCalendarAssets文件夹放入iCloud Drive/Scriptable/(放文件,不要再嵌套一层Scriptable)。 - 在 Scriptable 中运行“麦麦日历”,设置 MCP Token、皮肤和生日,预览三个尺寸。
- 长按桌面添加 Scriptable 小组件,选择“麦麦日历”脚本。详细步骤见 iPhone 安装说明。
脚本没有绑定自动领券、下单或扣积分动作。点按组件的系统行为由 Scriptable/iOS 决定;组件内不设置业务跳转链接。
需要 Node.js 18+、Python 3.10+,无需安装第三方包。
npm test
npm run build
python scripts/package.py
npm run preview打开 http://127.0.0.1:8766,可查看三尺寸、切换皮肤、预览生日/中秋/春节。未配置 Token 时显示日历和特别日子,不伪造真实活动。
设置环境变量 MCD_MCP_TOKEN 后运行:
node scripts/sync-live.js本地开发也可指定被 Git 忽略的 Token 文件:
node scripts/sync-live.js --token-file /absolute/path/to/.env.local预览服务刷新按钮默认读取环境变量;也可设置 MAI_LOCAL_TOKEN_FILE 指向上述文件。规范化结果仅保存到忽略的 .private/live.json,不上传 GitHub。参赛配置示例见 mcp-config.example.json。
“韩式风味蘸酱”在某日的官方资讯中首先被识别时:该日出现一个鸡腿小标记,摘要为“今日 · 韩式风味蘸酱”。它表示活动资讯主题,不是当天首发、门店可售或优惠资格保证。
同一天还有麦旋风或咖啡时,不继续展示;标题和正文中没有可识别产品时跳过该条,不凭空编造产品。识别词表可在 src/core.js 中扩展。
麦当劳 MCP campaign-calendar
↓ 初始化 / Bearer 身份验证 / JSON 或 SSE
src/mcp.js → src/core.js → 本机脱敏缓存
↓
生日设置 + 离线节日表
↓
src/layout.js
↙ ↘
Scriptable DrawContext 浏览器 Canvas
真实桌面小组件 开发预览
浏览器与手机共用数据、日期和绘图规则,不能替代 iPhone 真机验收。
- MCP 活动日历是营销资讯排期,不能从中推断附近 3 公里每家门店都参与活动。当前版本没有附近门店功能。
- MCP 返回的日期范围可能不完整,未返回日期保持无标记,不推断“没有活动”。
- 每日识别依赖有序的规则词表,不使用 LLM 生成未经核实的内容。
- 手机缓存 6 小时且跨北京时间日期失效;查询失败保留旧数据文件,过期活动不作为今日资讯显示。
refreshAfterDate是建议刷新时间,实际由 iOS 决定,不能保证午夜准点换肤。可手动运行脚本刷新。- 生日为用户主动填写的公历月日;2 月 29 日只在闰年当天展示。
- 麦当劳历史纪念日尚未加入,需先核实官方来源。
代码按 MIT 许可发布;麦当劳商标和相关品牌权利仍归各权利人。本项目的插画由 AI 辅助生成,未复制官方媒体库图片。请勿暗示官方授权或背书。



