Maamcp is an MCP server that exposes MaaFramework's automation capabilities to AI assistants, enabling control of Android devices via ADB and Windows desktop applications through standardized MCP interfaces. The server provides tools for device discovery and connection, screen capture and OCR text recognition, device control operations (clicking, swiping, text input, keyboard shortcuts), and pipeline-based automation with both serial and background streaming modes for managing multiple devices simultaneously. It solves the problem of integrating powerful device automation into AI assistant workflows without requiring direct framework access.
MaaMCP 是一个 MCP 服务器,将 MaaFramework 的强大自动化能力通过标准化的 MCP 接口暴露给 AI 助手(如 Claude)。通过本服务器,AI 助手可以:
Talk is cheap, 请看: 🎞️ Bilibili 视频演示
find_adb_device_list - 扫描可用的 ADB 设备find_window_list - 扫描可用的 Windows 窗口connect_adb_device - 连接到 Android 设备connect_window - 连接到 Windows 窗口ocr - 光学字符识别(高效,推荐优先使用)screencap - 屏幕截图(按需使用,token 开销大)click - 点击指定坐标(支持多触点/鼠标按键选择、长按)
double_click - 双击指定坐标swipe - 滑动手势(Android 设备滚动/翻页优先使用)input_text - 输入文本click_key - 按键操作(支持长按)
keyboard_shortcut - 键盘快捷键
scroll - 鼠标滚轮(仅 Windows)start_pipeline - 启动后台监控流水线,持续截图并缓存图片路径stop_pipeline - 停止流水线get_new_messages - 获取流水线缓存的新截图路径get_pipeline_status - 获取流水线运行状态get_pipeline_protocol - 获取 Pipeline 协议文档save_pipeline - 保存 Pipeline JSON 到文件(支持新建和更新)load_pipeline - 读取已有的 Pipeline 文件run_pipeline - 运行 Pipeline 并返回执行结果(支持单/多文件、Custom action agent 自动启动)stop_pipeline - 原子地停止 Tasker / Agent 子进程 / OCR 循环,杜绝后台孤儿进程需要先安装 uv
uvx maa-mcp
pip install maa-mcp
克隆仓库
git clone https://github.com/MistEO/MaaMCP.git
cd MaaMCP
安装 Python 依赖
pip install -e .
MaaMCP 提供两种运行模式:
传统的同步执行方式,适合简单任务:
# 已安装包的情况
maa-mcp
# 从源码开发运行
python -m maa_mcp
多线程异步执行方式,适合需要高频屏幕监控的实时自动化任务:
# 已安装包的情况
maa-mcp-server
# 从源码开发运行
python -m maa_mcp.pipeline_server
两种服务器的功能完全一致,均支持串行模式和流水线模式的自动化流程。区别在于流水线服务器内部使用独立的后台线程持续采集屏幕截图,可根据任务需求灵活选择。
在 Cursor 等软件中,添加 MCP 服务器:
{
"mcpServers": {
"MaaMCP": {
"command": "maa-mcp"
}
}
}
或
在 Cherry Studio 等软件中,添加 MCP 命令:
uvx maa-mcp
配置完成后,可以这样使用:
Android 自动化示例:
请用 MaaMCP 工具帮我连接 Android 设备,打开美团帮我点一份外卖,我想吃中餐,一人份,20 元左右的
Windows 自动化示例:
请用 MaaMCP 工具,看看我现在这页 PPT 怎么加一个旋转特效,操作给我看下
Pipeline 生成示例:
请用 MaaMCP 工具连接我的设备,帮我打开设置,进入显示设置,调整亮度到 50%。
操作完成后,帮我生成这个流程的 Pipeline JSON,以便后续可以直接运行。
MaaMCP 会自动:
MaaMCP 遵循简洁的操作流程,支持多设备/多窗口协同工作,并提供两种运行模式:
graph LR
A[扫描设备] --> B[建立连接]
B --> C1[串行模式]
B --> C2[流水线模式]
C1 --> D[执行自动化操作]
C2 --> D
find_adb_device_list 或 find_window_listconnect_adb_device 或 connect_window(可连接多个设备/窗口,获得多个控制器 ID)MaaMCP 支持两种运行模式,可根据任务需求灵活选择:
传统的同步执行方式,一个指令完成后再执行下一个:
OCR识别 → 分析结果 → 执行操作 → OCR识别 → ...
适用场景:简单任务、对实时性要求不高的场景
多线程异步执行方式,后台持续采集屏幕信息,主线程专注于决策和操作:
graph LR
subgraph 后台线程
S1[持续截图] --> S2[缓存图片路径]
S2 --> S3[推送到消息队列]
S3 --> S1
end
subgraph 主线程
M1[获取截图路径] --> M2[视觉分析]
M2 --> M3[决定是否OCR]
M3 --> M4[执行操作]
M4 --> M1
end
工作流程:
start_pipeline(controller_id) 启动后台监控get_pipeline_status() 检查状态,get_new_messages() 获取截图路径stop_pipeline() 释放资源优势:
使用示例:
请用 MaaMCP 工具连接我的设备,使用流水线模式监控屏幕,当出现特定弹窗时自动点击确认。
MaaMCP 支持让 AI 将执行过的操作转换为 MaaFramework Pipeline JSON 格式,实现一次操作,无限复用。
graph LR
A[AI 执行操作] --> B[操作完成]
B --> C[AI 阅读 Pipeline 文档]
C --> D[AI 智能生成 Pipeline]
D --> E[保存 JSON 文件]
E --> F[运行验证]
F --> G{是否成功?}
G -->|是| H[完成]
G -->|否| I[分析失败原因]
I --> J[修改 Pipeline]
J --> F
get_pipeline_protocol 获取 Pipeline 协议规范save_pipeline 保存生成的 Pipelinerun_pipeline 验证 Pipeline 是否正常运行与机械录制不同,AI 智能生成具有以下优势:
Pipeline 生成后,AI 会自动进行验证和优化:
如果发现 Pipeline 逻辑本身有问题,AI 还可以重新执行自动化操作,结合新旧经验生成更完善的 Pipeline。
{
"开始任务": {
"recognition": "DirectHit",
"action": "DoNothing",
"next": ["点击设置"]
},
"点击设置": {
"recognition": "OCR",
"expected": "设置",
"action": "Click",
"next": ["进入显示"]
},
"进入显示": {
"recognition": "OCR",
"expected": "显示",
"action": "Click",
"next": ["调整亮度"]
},
"调整亮度": {
"recognition": "OCR",
"expected": "亮度",
"action": "Swipe",
"begin": [200, 500],
"end": [400, 500],
"duration": 200
}
}
run_pipeline 和 load_pipeline 接受 str 或 list[str]:
# 单文件
run_pipeline(controller_id, "main.json")
# 单文件 list(与 str 等价)
run_pipeline(controller_id, ["main.json"])
# 多文件:一个文件中的节点可以引用另一个文件的节点
run_pipeline(
controller_id,
["main.json", "battle.json", "login.json"],
on_conflict="strict", # 默认 strict:节点名冲突立即报错
)
合并语义:
next 引用在合并后的命名空间内解析(支持跨文件引用)strict 模式(不写入 Resource);可设为 overwrite 允许后文件覆盖clear_pipeline_resources() 重置📌 Windows 自动化限制:
| 功能 | Windows | macOS | Linux |
|---|---|---|---|
MCP 服务器(maa-mcp) | 支持 | 支持 | 支持 |
流水线模式(maa-mcp-server) | 支持 | 支持 | 支持 |
find_adb_device_list / connect_adb_device | 支持 | 支持 | 支持 |
find_window_list / connect_window | 支持 | 不支持 | 不支持 |
| 后台截图 / 鼠标 / 键盘 | 支持 | 不支持 | 不支持 |
Linux 说明:
find_window_list() / connect_window() 在非 Windows 平台会返回 None 或抛错。[31m...)混入 MCP stdio 流,是与部分 MCP 客户端的已知交互问题。日志仍然会写入 ~/.local/share/MaaMCP/logs/,不受影响。首次使用时,会自动下载 OCR 模型文件。但可能出现下载失败等情况,请检查数据目录:
C:\Users\<用户名>\AppData\Local\MaaMCP\resource\model\ocr\~/Library/Application Support/MaaMCP/resource/model/ocr/~/.local/share/MaaMCP/resource/model/ocr/det.onnx, rec.onnx, keys.txt)model/download.log 中是否出现资源下载异常python -c "from maa_mcp.download import download_and_extract_ocr; download_and_extract_ocr()" 再次尝试下载'maa-mcp' 不是内部或外部命令在 LM Studio 中配置 MCP 服务器时,需要 maa-mcp 可执行文件在 PATH 上。Windows 下 pip install 默认把脚本装到 <Python 安装目录>\Scripts\(例如 C:\Users\<用户名>\AppData\Local\Programs\Python\Python310\Scripts\),这个目录通常不在 PATH 中。修复:
# 把 Scripts 目录加到用户 PATH(永久)
setx PATH "%PATH%;%LOCALAPPDATA%\Programs\Python\Python310\Scripts"
然后重启 LM Studio。验证:新开一个终端执行 where maa-mcp 应该返回脚本路径。详见 #6。
提交问题时,请提供日志文件,日志文件路径如下:
C:\Users\<用户名>\AppData\Local\MaaMCP\debug\maa.log~/Library/Application Support/MaaMCP/debug/maa.log~/.local/share/MaaMCP/debug/maa.log本项目采用 GNU AGPL v3 许可证。
makafeli/n8n-workflow-builder
danishashko/make-mcp
lukisch/n8n-manager-mcp
io.github.us-all/airflow
io.github.infoinlet-marketplace/mcp-workflow