Skip to main content
Glama

browser_press_key

Simulate keyboard key presses in web browsers for automated testing or interaction tasks using Playwright MCP server.

Instructions

Press a key on the keyboard

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyYesName of the key to press or a character to generate, such as `ArrowLeft` or `a`

Implementation Reference

  • Handler function that executes the browser_press_key tool by pressing the specified key on the page using Playwright's keyboard.press method.
      handle: async (tab, params, response) => {
        response.setIncludeSnapshot();
        response.addCode(`// Press ${params.key}`);
        response.addCode(`await page.keyboard.press('${params.key}');`);
    
        await tab.waitForCompletion(async () => {
          await tab.page.keyboard.press(params.key);
        });
      },
    });
  • Zod schema definition for the input of the browser_press_key tool, requiring a 'key' string parameter.
    schema: {
      name: 'browser_press_key',
      title: 'Press a key',
      description: 'Press a key on the keyboard',
      inputSchema: z.object({
        key: z.string().describe('Name of the key to press or a character to generate, such as `ArrowLeft` or `a`'),
      }),
      type: 'destructive',
    },
  • src/tools.ts:36-52 (registration)
    Top-level registration of all tools, including those exported from keyboard.ts (which includes browser_press_key).
    export const allTools: Tool<any>[] = [
      ...common,
      ...console,
      ...dialogs,
      ...evaluate,
      ...files,
      ...install,
      ...keyboard,
      ...navigate,
      ...network,
      ...mouse,
      ...pdf,
      ...screenshot,
      ...snapshot,
      ...tabs,
      ...wait,
    ];
  • Definition and local registration of the browser_press_key tool using defineTabTool.
    const pressKey = defineTabTool({
      capability: 'core',
    
      schema: {
        name: 'browser_press_key',
        title: 'Press a key',
        description: 'Press a key on the keyboard',
        inputSchema: z.object({
          key: z.string().describe('Name of the key to press or a character to generate, such as `ArrowLeft` or `a`'),
        }),
        type: 'destructive',
      },
    
      handle: async (tab, params, response) => {
        response.setIncludeSnapshot();
        response.addCode(`// Press ${params.key}`);
        response.addCode(`await page.keyboard.press('${params.key}');`);
    
        await tab.waitForCompletion(async () => {
          await tab.page.keyboard.press(params.key);
        });
      },
    });

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/maywzh/playwright-mcp'

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