damai-mcp

damai-mcp

MCP server enabling AI to control Android devices via ADB for automated ticket grabbing from Damai, Maoyan, and Fliggy.

Category
访问服务器

README

🎫 damai-mcp

PyPI Python License MCP

Android 设备自动化 MCP — 让你的 AI 直接操控手机/模拟器抢大麦 / 猫眼 / 飞猪门票。

大热门场次(¥921 + 0.5 秒开抢)下,手动抢等于送人头。本项目用 Model Context Protocol 把 ADB 操作封装成 30+ 个工具,让 Claude Code / Cursor / 自定义 Agent 都能像人一样操作大麦 APP,关键路径比手快 200~500 ms。


✨ 核心特性

🪜 4 层架构 L1 设备管理 / L2 原子操作 / L3 语义查询 / L4 业务编排
🚀 零依赖额外二进制 复用本地 adb(雷电 / MuMu / SDK 都自带)
🔌 标准 MCP 协议 直接接入 Claude Code / Cursor / Cline / Continue
🧠 大麦专属 damai_grab() 一行调用完成"等开票 → 抢档 → 选人 → 提交"
📸 自动截图归档 失败时自动存 damai_shots/ 便于复盘
⏱️ 毫秒级等待 内部用 asyncio 高精度 sleep,不浪费开票瞬间

🚀 30 秒上手

1. 安装

pip install damai-mcp

2. 准备设备(任选其一)

设备类型 ADB 端口 优点
雷电模拟器 9 127.0.0.1:5555 稳定、可多开、免费
MuMu 模拟器 127.0.0.1:7555 性能好
真机(USB) 自动检测 最真实

启动后确保大麦 APP 已装好并扫码登录。

3. 验证连接

damai-mcp list-devices
# adb: C:\Program Files\LDPlayer\adb.exe
#   127.0.0.1:5555  device  HUAWEI Pura 70 Pro  1080x2400  EMU

4. 启动 MCP server(给 Claude Code / Cursor 用)

damai-mcp serve

然后在 Claude Code 的 ~/.claude/settings.json 加入:

{
  "mcpServers": {
    "damai": {
      "command": "damai-mcp",
      "args": ["serve"]
    }
  }
}

重启 Claude Code,对话框就能看到 30+ 个 damai__* 工具。

5. 一句话让 AI 帮你抢

"用 127.0.0.1:5555 这台设备帮我抢 item 1063631004645,第二档,杨安琪的票,17:21 开票"

AI 会自动串联:

list_devices  →  damai_check_login  →  damai_open_concert
   ↓ 等待开票
damai_grab    →  失败截图存到 damai_shots/grab_fail_xxx.png

📐 架构(4 层工具)

┌─────────────────────────────────────────────────────────┐
│  L4 业务编排  damai_grab, damai_grab_multi, damai_pay   │  ← AI 直接用
├─────────────────────────────────────────────────────────┤
│  L3 语义查询  find_text, find_resource_id, find_xpath,  │  ← 用语义操作
│              wait_for_element, dump_ui                  │     UI 而不是坐标
├─────────────────────────────────────────────────────────┤
│  L2 原子操作  tap, swipe, input_text, press_key,         │  ← 调试时用
│              screenshot, scroll, long_press             │
├─────────────────────────────────────────────────────────┤
│  L1 设备管理  list_devices, connect_device,             │  ← 一切的开端
│              device_info, disconnect_device             │
└─────────────────────────────────────────────────────────┘

核心原则:AI 应该用 L3 语义工具,而不是 L2 坐标工具。大麦改版时坐标会失效,但"立即购买"这 4 个字永远在那里。


🛠️ 直接调用(不用 MCP)

import asyncio
from damai_mcp.damai.actions import damai_grab

async def main():
    result = await damai_grab(
        device_id="127.0.0.1:5555",
        item_id="1063631004645",
        price_index=2,
        viewer_names=["杨安琪"],
        open_time="2026-07-09 17:21:00",
        preheat_seconds=30,
    )
    print(result)

asyncio.run(main())

或者命令行:

python examples/grab_one_ticket.py \
    --device 127.0.0.1:5555 \
    --item 1063631004645 \
    --price 2 \
    --viewer "杨安琪" \
    --open "2026-07-09 17:21:00"

🧰 实战示例

抢一张票(单设备)

参见 examples/grab_one_ticket.py。

多账号并发(5 个模拟器)

python examples/multi_devices.py \
    --item 1063631004645 \
    --price 2 \
    --devices 127.0.0.1:5555 127.0.0.1:5557 127.0.0.1:5559 \
    --viewers 杨安琪 张三 李四 \
    --open "2026-07-09 17:21:00"

当大麦改版时更新选择器

python examples/probe_selectors.py --device 127.0.0.1:5555
# 输出所有可点击元素,更新 damai_mcp/damai/selectors.py

🧪 开发

git clone https://github.com/your-org/damai-mcp
cd damai-mcp
pip install -e ".[dev]"

# 测试(不需要真机/模拟器)
pytest

# Lint + 类型检查
ruff check src tests
mypy src

# 跑 example
python examples/grab_one_ticket.py --device 127.0.0.1:5555 --item TEST

⚠️ 合规与免责

本项目仅供学习与研究自动化测试技术。请遵守:

  1. 大麦 / 猫眼 / 飞猪的用户协议
  2. 中国《反不正当竞争法》《消费者权益保护法》等法规
  3. 抢到的票请在订单生成后 15 分钟内手动完成支付

作者不对因使用本项目造成的任何账号封禁、法律纠纷或经济损失负责。


🤝 贡献

欢迎 PR!特别是:

  • 猫眼 / 飞猪的 L4 业务封装(目前只实现了大麦)
  • 滑块验证码自动识别(OpenCV / ddddocr / 打码平台)
  • 录制-回放工作流(让你能"录一遍下次自动跑")
  • 新模拟器适配(夜神 / 逍遥 / BlueStacks)

📜 License

MIT — see LICENSE.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选