Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions maa_mcp/vision.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
from maa_mcp.download import check_ocr_files_exist
from maa_mcp.paths import get_screenshots_dir

from fastmcp.utilities.types import Image


@mcp.tool(
name="screencap_and_ocr",
Expand All @@ -35,7 +37,9 @@
def screencap_and_ocr(controller_id: str) -> Optional[Union[list, str]]:
# 先检查 OCR 资源是否存在,不存在则返回提示信息让 AI 主动调用下载
if not check_ocr_files_exist():
return "OCR 模型文件不存在,请先调用 check_and_download_ocr() 下载 OCR 资源后重试"
return (
"OCR 模型文件不存在,请先调用 check_and_download_ocr() 下载 OCR 资源后重试"
)

controller: Controller | None = object_registry.get(controller_id)
tasker = get_or_create_tasker(controller_id)
Expand All @@ -58,11 +62,11 @@ def screencap_and_ocr(controller_id: str) -> Optional[Union[list, str]]:
参数:
- controller_id: 控制器 ID,由 connect_adb_device() 或 connect_window() 返回
返回值:
- 成功:返回截图文件的绝对路径,可通过 read_file 工具读取图片内容
- 成功:返回截图
- 失败:返回 None
""",
)
def screencap_only(controller_id: str) -> Optional[str]:
def screencap_only(controller_id: str) -> Optional[Image]:
controller = object_registry.get(controller_id)
if not controller:
return None
Expand All @@ -79,4 +83,4 @@ def screencap_only(controller_id: str) -> Optional[str]:
return None
# 记录当前会话保存的截图文件路径,用于退出时清理
_saved_screenshots.append(filepath)
return str(filepath.absolute())
return Image(filepath.absolute())