MaiMai电报机器人
麦当劳中国MCP工具的Telegram机器人通过Streamable HTTP。
当前接口支持
本项目与当前MCP官方文件一致 https://open.mcd.cn/mcp/doc,包括 2026-04-02 v1.0.3 工具集。
它现在处理当前的界面更改:
- 使用当前规范的MCP URL
https://mcp.mcd.cn - 通过验证令牌
tools/list而不是硬编码单个工具调用 - 适应重命名的工具:
- campaign-calender -> campaign-calendar - my-coupons -> query-my-coupons
- 尽可能保持与旧工具名称的兼容性
- 按令牌隔离缓存条目,以避免跨帐户结果重用
特性
- 通过带有图片的《每日电讯报》文章查询活动日历
- 可用优惠券列表
- 一键领取所有可用优惠券
- 我的优惠券列表
- 我的积分查询
- 带关键字过滤的营养列表查询
- 积分商城产品列表、详细信息和兑换
- 送货地址列表并创建
- 附近商店搜索和收藏夹商店查询
- 店铺优惠券、用餐清单、用餐详情、价格计算、订单创建/查询
- 原始
/tool适用于任何当前公开的MCP工具 - 所选工具的可选缓存
- 当新优惠券出现时,每天自动索赔,并进行突发调度
- 每个Telegram用户有多个MCP帐户
需求
- Node.js 18+(建议使用Node.js 20+)
- BotFather的Telegram机器人令牌
- MCP令牌来自https://open.mcd.cn/mcp
快速开始
- 复制
.env.example到.env并填写TELEGRAM_BOT_TOKEN. - 安装依赖项:
npm install- 启动机器人:
npm start机器人命令
/help-完整命令列表/tools-列出活动帐户可用的MCP工具
帐户和令牌:
/token YOUR_MCP_TOKEN-将MCP令牌保存到活动/默认帐户/account add-添加/更新帐户/account use-切换活动帐户/account list-列出帐户/account del-删除帐户/cleartoken-清除所有帐户/status-显示帐户状态/stats-我的索赔统计
优惠券和日历:
/calendar [YYYY-MM-DD]-活动日历/coupons-可用优惠券/claim-一键领取所有可用优惠券/mycoupons-我的优惠券列表/autoclaim on|off [name]-启用/禁用每个帐户的每日自动索赔/autoclaimreport success|fail on|off [name]-启用/禁用每个帐户的自动索赔报告
积分、商场、时间、营养:
/points-我的积分账户/mall list-积分商城产品列表/mall detail-积分商城产品详情/mall redeem [count]-兑换积分商城商品/nutrition [keyword]-营养列表(可选本地关键字过滤器)/now-MCP服务器当前时间信息
储存和交付:
/deliveryaddrs mls|group-列出送货地址/deliveryadd mls|group 城市|联系人|电话|地址|门牌|性别(可选)-创建收货地址/stores fav-查询最喜欢的店内取货店/stores search-搜索附近的商店- `/storecoupons
[beCode]` -列出商店/订单类型的可用优惠券
- `/meals
[beCode]` -列出商店/订单类型的餐食
- `/mealdetail
[beCode]` -用餐细节
高级订购工具:
/price-呼叫calculate-price/order create-呼叫create-order/order query-呼叫query-order/tool [json]-任何当前MCP工具的原始传递
管理员:
/admin-管理员摘要(用户/帐户/自动索赔状态/索赔总额/config/sweek状态)/admin notify on|off-管理员错误推送切换/admin sweep-立即运行扫描(管理员)
JSON命令示例
/price {"storeCode":"12345","orderType":"pickup","items":[{"productCode":"9900008139","quantity":1}]}
/order create {"storeCode":"12345","orderType":"pickup","takeWayCode":"locker-in","items":[{"productCode":"9900008139","quantity":1}]}
/tool now-time-info环境变量
看 .env.example 对于所有选项。关键变量:
MCD_MCP_URL(默认值:https://mcp.mcd.cn)MCP_REQUEST_TIMEOUT_MS(默认值:30000)MCP_CLIENT_CACHE_TTL_SECONDS(默认值:1800)MCP_RETRY_MAX(默认值:2)MCP_RETRY_BASE_DELAY_MS(默认值:500)MCP_RETRY_MAX_DELAY_MS(默认值:5000)MCP_RETRY_JITTER_MS(默认值:200)MCP_RETRY_STATUS_CODES(默认值:502,503,504)MCP_RETRY_ON_TIMEOUT(默认值:true)MCP_RETRY_ON_NETWORK_ERROR(默认值:true)MCP_HEALTH_CHECK_INTERVAL_MS(默认值:60000)MCP_HEALTH_CHECK_TIMEOUT_MS(默认值:5000)MCP_HEALTH_FAILURE_THRESHOLD(默认值:2)MCP_UPSTREAM_ERROR_MESSAGE(默认:中文“上游错误”)ACCOUNT_ID_MIN_LENGTH(默认值:1)ACCOUNT_ID_MAX_LENGTH(默认值:32)TOKEN_MIN_LENGTH(默认值:16)TOKEN_MAX_LENGTH(默认值:256)TOKEN_SET_RATE_LIMIT_MS(默认值:30000)ACCOUNT_SET_RATE_LIMIT_MS(默认值:30000)CACHE_TTL_SECONDS(默认值:300)CACHEABLE_TOOLS(默认值:campaign-calendar,list-nutrition-foods)AUTO_CLAIM_CHECK_MINUTES(默认值:10)AUTO_CLAIM_HOUR(默认值:9)AUTO_CLAIM_TIMEZONE(默认值:Asia/Shanghai)AUTO_CLAIM_SPREAD_MINUTES(默认值:600)AUTO_CLAIM_MAX_PER_SWEEP(默认值:10)AUTO_CLAIM_REQUEST_GAP_MS(默认值:1500)AUTO_CLAIM_SPREAD_RERUN_MINUTES(默认值:120)GLOBAL_BURST_WINDOW_MINUTES(默认值:30)GLOBAL_BURST_CHECK_SECONDS(默认值:30)ADMIN_TELEGRAM_IDS(以逗号分隔的Telegram用户ID)SWEEP_WATCHDOG_SECONDS(默认值:60)SWEEP_STALE_MULTIPLIER(默认值:2)AUTO_CLAIM_DEBUG(默认值:false,设置为true/1启用详细的自动索赔日志)
备注
- 该机器人使用MCP流式HTTP(协议2025-06-18)。
- 所有工具调用都需要MCP令牌。
- 官方文件: https://open.mcd.cn/mcp/doc
- 电报接入令牌自动创建并存储在
data/telegraph.json. - 自动索赔每天每个账户运行一次,在点差窗口内安排,以避免爆发。
- 当任何帐户申领以前看不到的优惠券时,机器人会触发一个短暂的爆发窗口,以便所有帐户都尝试在该时间内申领。
部署
1) 安装Node.js
sudo apt update
sudo apt install -y git curl
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs验证:
node -v
npm -v2) 安装机器人
git clone https://github.com/ButaiKirin/MaiMaiBot.git
cd MaiMaiBot
cp .env.example .env编辑 .env 并设置:
TELEGRAM_BOT_TOKENMCD_MCP_URL(可选)
安装依赖项:
npm install运行一次以验证:
npm start3) 作为systemd服务运行
创建服务文件:
sudo tee /etc/systemd/system/maimai-bot.service > /dev/null <<'SERVICE'
[Unit]
Description=MaiMai Telegram Bot
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/MaiMaiBot
EnvironmentFile=/opt/MaiMaiBot/.env
ExecStart=/usr/bin/node /opt/MaiMaiBot/src/index.js
Restart=always
RestartSec=5
User=ubuntu
Group=ubuntu
[Install]
WantedBy=multi-user.target
SERVICE调整路径和用户:
sudo mkdir -p /opt
sudo mv ~/MaiMaiBot /opt/MaiMaiBot
sudo chown -R ubuntu:ubuntu /opt/MaiMaiBot启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable --now maimai-bot查看日志:
journalctl -u maimai-bot -f4) 更新
cd /opt/MaiMaiBot
git pull
npm install
sudo systemctl restart maimai-bot