Skip to main content
Glama
devskido

Playwright MCP Server

by devskido

playwright_drag

Drag web page elements to specified targets using CSS selectors for browser automation and testing.

Instructions

Drag an element to a target location

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sourceSelectorYesCSS selector for the element to drag
targetSelectorYesCSS selector for the target location

Implementation Reference

  • DragTool class implements the core logic for 'playwright_drag' tool using Playwright mouse events to drag from source element to target element.
    export class DragTool extends BrowserToolBase {
      /**
       * Execute the drag tool
       */
      async execute(args: any, context: ToolContext): Promise<ToolResponse> {
        return this.safeExecute(context, async (page) => {
          const sourceElement = await page.waitForSelector(args.sourceSelector);
          const targetElement = await page.waitForSelector(args.targetSelector);
          
          const sourceBound = await sourceElement.boundingBox();
          const targetBound = await targetElement.boundingBox();
          
          if (!sourceBound || !targetBound) {
            return createErrorResponse("Could not get element positions for drag operation");
          }
    
          await page.mouse.move(
            sourceBound.x + sourceBound.width / 2,
            sourceBound.y + sourceBound.height / 2
          );
          await page.mouse.down();
          await page.mouse.move(
            targetBound.x + targetBound.width / 2,
            targetBound.y + targetBound.height / 2
          );
          await page.mouse.up();
          
          return createSuccessResponse(`Dragged element from ${args.sourceSelector} to ${args.targetSelector}`);
        });
      }
    }
  • Input schema definition for the 'playwright_drag' tool, specifying sourceSelector and targetSelector as required string parameters.
      name: "playwright_drag",
      description: "Drag an element to a target location",
      inputSchema: {
        type: "object",
        properties: {
          sourceSelector: { type: "string", description: "CSS selector for the element to drag" },
          targetSelector: { type: "string", description: "CSS selector for the target location" }
        },
        required: ["sourceSelector", "targetSelector"],
      },
    },
  • Dispatch in handleToolCall switch statement routes 'playwright_drag' calls to dragTool.execute.
    case "playwright_drag":
      return await dragTool.execute(args, context);
  • Instantiation of DragTool instance during tool initialization.
    if (!dragTool) dragTool = new DragTool(server);
  • src/tools.ts:469-469 (registration)
    Inclusion of 'playwright_drag' in BROWSER_TOOLS array for conditional browser launching.
    "playwright_drag",

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/devskido/customed-playwright'

If you have feedback or need assistance with the MCP directory API, please join our Discord server