From 5c68760cca8193bcfedd76a8014367093e045bca Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Wed, 21 May 2025 16:51:39 +0800 Subject: [PATCH] feat: add uixt tool get_screen_size --- internal/version/VERSION | 2 +- mcphost/mcp_server.go | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/internal/version/VERSION b/internal/version/VERSION index f6878114..0fb5fd3b 100644 --- a/internal/version/VERSION +++ b/internal/version/VERSION @@ -1 +1 @@ -v5.0.0-beta-2505211642 +v5.0.0-beta-2505211651 diff --git a/mcphost/mcp_server.go b/mcphost/mcp_server.go index 7f0fa407..1e4fb3a7 100644 --- a/mcphost/mcp_server.go +++ b/mcphost/mcp_server.go @@ -133,6 +133,16 @@ func (ums *MCPServer4XTDriver) addTools() { ums.tools = append(ums.tools, terminateAppTool) ums.handlerMap[terminateAppTool.Name] = ums.handleTerminateApp + // GetScreenSize Tool + getScreenSizeParams := append( + []mcp.ToolOption{mcp.WithDescription("Get the screen size of the mobile device in pixels")}, + commonToolOptions..., + ) + getScreenSizeTool := mcp.NewTool("get_screen_size", getScreenSizeParams...) + ums.mcpServer.AddTool(getScreenSizeTool, ums.handleGetScreenSize) + ums.tools = append(ums.tools, getScreenSizeTool) + ums.handlerMap[getScreenSizeTool.Name] = ums.handleGetScreenSize + // TapXY Tool tapParams := append( []mcp.ToolOption{mcp.WithDescription("Taps on the device screen at the given coordinates.")}, @@ -269,6 +279,21 @@ func (ums *MCPServer4XTDriver) handleTerminateApp(ctx context.Context, request m return mcp.NewToolResultText(fmt.Sprintf("Terminated app success: %s", packageName)), nil } +// handleGetScreenSize handles the get_screen_size tool call. +func (ums *MCPServer4XTDriver) handleGetScreenSize(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { + driverExt, err := ums.setupXTDriver(ctx, request.Params.Arguments) + if err != nil { + return nil, err + } + screenSize, err := driverExt.IDriver.WindowSize() + if err != nil { + return mcp.NewToolResultError("Get screen size failed: " + err.Error()), nil + } + return mcp.NewToolResultText( + fmt.Sprintf("Screen size: %d x %d pixels", screenSize.Width, screenSize.Height), + ), nil +} + // handleTapXY handles the tap_xy tool call. func (ums *MCPServer4XTDriver) handleTapXY(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { driverExt, err := ums.setupXTDriver(ctx, request.Params.Arguments)