browser_press_key
Press specified keys in a Chrome browser controlled by MCP-Undetected-Chromedriver, with optional focus on elements via CSS selector.
Instructions
Press a key on the keyboard
Args:
key: The key to press - required, (e.g. 'Enter', 'ArrowDown', 'a')
selector: Optional CSS selector to focus on before pressing the key - optional
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| selector | No |
Implementation Reference
- Implements the browser_press_key tool handler using Selenium's ActionChains to press keys, supporting special keys mapping and optional selector focus. Registered via @mcp.tool() decorator.@mcp.tool() async def browser_press_key( key: str, selector: str = None, ): """Press a key on the keyboard Args: key: The key to press - required, (e.g. 'Enter', 'ArrowDown', 'a') selector: Optional CSS selector to focus on before pressing the key - optional """ assert key, "Key is required" async def press_key_handler(driver: uc.Chrome): # 如果提供了选择器,先找到元素并聚焦 if selector: element = driver.find_element(By.CSS_SELECTOR, selector) element.click() # 点击元素以确保聚焦 # 处理特殊键 special_keys = { 'Enter': '\ue007', 'Tab': '\ue004', 'Escape': '\ue00c', 'Space': '\ue00d', 'Backspace': '\ue003', 'Delete': '\ue017', 'ArrowUp': '\ue013', 'ArrowDown': '\ue015', 'ArrowLeft': '\ue012', 'ArrowRight': '\ue014', 'PageUp': '\ue00e', 'PageDown': '\ue00f', 'Home': '\ue011', 'End': '\ue010', 'F1': '\ue031', 'F2': '\ue032', 'F3': '\ue033', 'F4': '\ue034', 'F5': '\ue035', 'F6': '\ue036', 'F7': '\ue037', 'F8': '\ue038', 'F9': '\ue039', 'F10': '\ue03a', 'F11': '\ue03b', 'F12': '\ue03c', } # 映射按键 key_to_send = special_keys.get(key, key) # 创建ActionChains对象 actions = ActionChains(driver) # 发送按键 if selector: element = driver.find_element(By.CSS_SELECTOR, selector) actions.send_keys_to_element(element, key_to_send) else: actions.send_keys(key_to_send) # 执行操作 actions.perform() if selector: return await create_success_response(f"Pressed key '{key}' on element '{selector}'") else: return await create_success_response(f"Pressed key '{key}'") return await tool.safe_execute( ToolContext(webdriver=await ensure_browser()), press_key_handler )
- src/mcp_server_undetected_chromedriver/server.py:392-392 (registration)The @mcp.tool() decorator registers the browser_press_key function as an MCP tool.@mcp.tool()