Skip to main content
Glama
dragons96

MCP-Undetected-Chromedriver

by dragons96

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
NameRequiredDescriptionDefault
keyYes
selectorNo

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
        )
  • The @mcp.tool() decorator registers the browser_press_key function as an MCP tool.
    @mcp.tool()

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/dragons96/mcp-undetected-chromedriver'

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