ascript-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_platform_overviewA | 获取指定平台(android/ios/windows)的 API 模块概览,包含模块名、描述、类和函数列表。 |
| get_module_apisA | 获取指定模块的完整 API 文档,支持模糊匹配。例如 'screen' 可匹配 'ascript.windows.screen'。返回函数签名、参数说明和文档。 |
| search_apiA | 按关键词搜索 API,覆盖函数名、类名和文档说明。当不确定功能在哪个模块时使用。 |
| get_code_exampleB | 获取常见自动化任务的可运行代码示例。 |
| get_setup_guideC | 获取指定平台的环境搭建和安装指南。 |
| auto_connectA | 从当前 AScript 工程目录自动连接设备。 读取 .vscode/settings.json 中的 ascript.deviceId 和 ascript.platform,自动连接对应设备。 VSCode 插件创建工程时会保存这些信息,无需用户手动输入 IP。 传入当前工程的根目录路径即可。 |
| scan_devicesA | 扫描发现所有 AirScript 设备。 同时执行:1) 局域网扫描(WiFi 连接的 Android/iOS 设备)2) ADB 扫描(USB 连接的 Android 设备)。 返回所有发现的设备列表。 |
| connect_deviceA | 连接 Android/iOS 设备。连接后才能使用截图、控件树等设备工具。 局域网设备传 IP,ADB 设备传序列号并设 connection_mode='ADB'。 |
| observe_deviceA | 一次性获取设备当前状态:截图 + 控件树,比分开调用更快。 返回截图(PNG 图片)和控件树(Android JSON / iOS XML)。 【重要】拿到控件树后,编写代码必须优先使用控件选择器(通过 text/id/className 等属性定位并操作控件),只有控件树中确实找不到目标元素时才用坐标点击。 |
| deploy_and_runA | 一步完成开发验证循环:上传代码 → 运行 → 收集日志 → 截图验证。 代码会上传为 init.py(入口文件),工程不存在时自动创建。 返回上传结果、运行结果、日志内容和运行后截图。 |
| screen_captureA | 截取设备当前屏幕。返回 PNG 图片。用于查看设备当前界面状态。 |
| dump_ui_treeA | 获取设备当前界面的控件树(UI 层级结构)。返回所有控件的 id、text、desc、className、rect、clickable 等属性。 【Android】调用前必须先调 get_device_status 确认 run_mode,再选对应 mode,否则拿空树:
【iOS】只有 WebDriverAgent 一套引擎,不接 mode 参数(传了被忽略),返回 WDA XML。iOS Selector() 也不接 engine mode;它的 MODE_EQUAL/CONTAINS/MATCHES 是给单个条件的匹配运算符(如 selector.text("x", mode=MODE_CONTAINS)),别和 Android 混。 【写 selector 必看】控件树里有 text/id/desc/className 等属性的元素,必须用 node.Selector() 通过属性定位操作,不要用坐标点击。坐标只用于控件树中确实没有任何可识别属性的元素。 Selector 实例化时也要传相同的 mode:node.Selector(mode=<dump 的同一个 mode>)。 |
| test_selectorA | 在设备上实时测试 Selector 选择器,验证是否能精准匹配到目标控件。 传入过滤条件(text/id/type/desc/clickable),返回匹配到的控件及其完整属性。 用于编写代码前验证 node.Selector().text('xxx').find() 等语句是否能定位到正确控件。 条件可组合使用,如同时指定 text 和 clickable。 |
| ocrA | 在设备屏幕上执行 OCR 文字识别。返回识别到的文字、位置坐标和置信度。 |
| find_colorsB | 多点找色:在屏幕上查找符合颜色条件的坐标。 colors 格式:'x,y,#RRGGBB|x,y,#RRGGBB|...',第一个点为锚点,后续为偏移点。 可选带偏差色:'x,y,#RRGGBB-#偏差|...' |
| compare_colorsB | 多点比色:检查屏幕指定位置的颜色是否匹配。 返回布尔值。用于判断界面状态。 |
| create_projectA | 在设备上创建新工程。上传文件前需要先创建工程。 |
| list_python_packagesA | 列出设备 AScript App 内已安装的 Python 第三方库(Android + iOS)。 AI 在写脚本(尤其是 eval_python 片段)前强烈建议先调用,确认要 import 的 lib 在该设备上可用。 Android: 走 /api/status 的 python.packages(importlib.metadata 实时查询)。 iOS: 借 eval_python 跑 importlib.metadata 实时列出。 常见自带库:opencv-python-headless / numpy / pillow / requests / pandas / openpyxl / pymysql / websockets / cryptography 等,具体清单随 App 版本和用户安装的插件而变化,以本工具实时返回为准。 |
| get_device_statusA | 获取设备完整运行状态(仅 Android)。一次性返回:
强烈建议生成脚本前先调用:根据 run_mode 选择 API(如 node.find 仅在 accessibility 模式可用),根据 permissions 决定是否需要先申请权限,根据 runtime.is_script_running 避免互踩。 |
| list_projectsA | 列出设备上的所有工程。 |
| run_projectC | 在设备上运行指定工程。 |
| stop_projectA | 停止设备上正在运行的工程。 |
| eval_pythonA | 在设备主进程的 Python 上下文中直接 exec 任意代码,立即返回结果(Android + iOS)。 几百毫秒一轮,不需要 upload_file/run_project,适合:
Android 主进程 client 已本地 stub 化(App.java onCreate 时 bindClient),所有原本走 :py 进程 IPC 的 API 现在 eval 里也能直接调。 ⛔ 红线:eval 代码无法外部中断!HTTP 60s 超时只断客户端连接,服务端 Python 仍在跑直到自然返回;卡住 = 整个 App UI 冻住。所有循环必须 range/deadline 限定, sleep ≤ 5s,try/except 整段。超过 30s 的逻辑改用 upload + run_project(可被 stop_project kill)。 ⚠ 仍需谨慎的场景:
完整指南见 docs/AGENT_EVAL_GUIDE.md。 代码必须把结果赋给 _result 全局变量。返回值约定:
image_path 非空时 App 会注入 _im_source 全局变量指向该图片路径; iOS 上若代码中引用 img 变量,会被预读为 cv2 ndarray。 跨平台:iOS 端会自动把 |
| run_project_debugA | 以调试模式启动 Android 工程,让脚本可被 VS Code / Cursor 通过 debugpy attach 调试。 前提:1) 平台为 Android(iOS 不支持);2) 设备必须通过 ADB 连接(USB / adb tcpip)。 行为:自动 adb forward tcp:5678 → 设备 127.0.0.1:5678 + 调用设备 /api/model/run?debug=1,设备端 :py 进程进入 listen+wait_for_client 阻塞,等待 IDE attach。 返回:本地端口、可直接粘贴到 .vscode/launch.json 的 attach 配置片段、操作提示。 用户在 VS Code 按 F5 attach 后,业务从 main 开始运行,断点会被命中。 停止调试请调用 stop_project(同时停止业务和调试器)。 |
| get_run_logA | 获取设备运行日志(实时收集指定秒数)。 用于查看脚本运行输出、错误信息和 print 内容。 建议在 run_project 后调用,查看脚本是否正常运行或有报错。 |
| list_pluginsA | 查询 AScript 在线插件库,返回所有可用插件列表。 插件提供额外能力:OCR(TomatoOcr)、YOLO 目标检测、HID 硬件控制、AI 大模型、蓝牙通信等。 按下载量排序,包含插件名、作者、描述。 |
| get_plugin_detailA | 获取指定插件的详细文档,包括 API 说明、参数、代码示例和版本历史。 需要先用 list_plugins 查到插件 id。 |
| get_project_filesB | 获取设备上指定工程的文件树结构。 |
| upload_fileC | 上传文件到设备上的指定工程。content 为文件内容的 base64 编码。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| write_automation | 开始编写设备自动化脚本。AI 会连接设备、观察界面、编写并调试代码。 |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ascript-cn/ascript-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server