gecko-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FLOORP_PATH | No | Full path to floorp.exe for launch_floorp. | |
| GECKO_MCP_PORT | No | Port for the Floorp API (1-65535). | 58261 |
| GECKO_MCP_TOKEN | No | Token sent as Authorization Bearer to the Floorp API. | |
| MARIONETTE_PORT | No | Marionette TCP port for non-Floorp browsers. | 2828 |
| GECKO_MCP_BACKEND | No | Force backend: 'floorp' or 'marionette'. Default: auto-detect. | |
| GECKO_MCP_ALLOW_DOMAINS | No | Comma-separated domain allowlist for navigation (subdomains included). Unset = any public host. | |
| GECKO_MCP_BROWSER_PROCESS | No | Process-name regex that real OS keyboard/mouse may target. | |
| GECKO_MCP_ENABLE_EVALUATE | No | Set to '1' to unlock evaluate (run page JS) tool at startup. | |
| GECKO_MCP_ENABLE_OS_INPUT | No | Set to '1' to unlock OS keyboard/mouse tools at startup. | |
| GECKO_MCP_ALLOW_UPLOAD_DIRS | No | Semicolon-separated directories to restrict upload_file. | |
| GECKO_MCP_ALLOW_PRIVILEGED_URLS | No | Set to '1' to allow non-http(s) URLs and loopback/private hosts in open/navigate. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_tabsA | List all open tabs in Floorp (title, URL, browserId, and whether each is active or pinned). Use the browserId to target other tools. |
| open_tabA | Open a URL in a new Floorp tab. |
| get_active_tabA | Return the active tab's title, URL and browserId. Note: with multiple browser windows open, 'active' is ambiguous — prefer the browserId returned by open_tab, or pick from list_tabs. |
| navigate_tabA | Navigate a tab to a new URL. Targets the active tab unless a browserId is given. |
| close_tabA | Close a tab by its browserId (from list_tabs). |
| read_pageA | Read a tab's content. Returns clean Markdown by default; can also return raw HTML or the accessibility tree. Output is capped (default 25 KB) to protect the context — to LOCATE a specific element use |
| screenshotA | Take a screenshot of a tab and return it as a PNG image. Targets the active tab unless a browserId is given. |
| findA | Locate elements on a tab by visible text and/or tag and get a ready-to-use CSS |
| clickA | Click an element by CSS selector OR by a |
| snapshotA | Capture a structured snapshot of a tab: clean Markdown with inline fingerprint refs ( |
| type_textB | Type text into an input or textarea by CSS selector (clears it first by default). Targets the active tab unless a browserId is given. |
| fill_formA | Fill multiple form fields at once. |
| press_keyA | Press a keyboard key in the page (e.g. "Enter", "Tab", "Escape", "ArrowDown"). Targets the active tab unless a browserId is given. |
| wait_for_elementA | Wait for an element to reach a state (attached / visible / hidden / detached). Useful after navigation or actions that load content. |
| get_valueA | Read the current value of an input, textarea, or select by CSS selector. SENSITIVE: this CAN read the value of password fields and other secrets the user has typed — only use it on fields the user asked about, never to harvest credentials a page is requesting. Targets the active tab unless a browserId is given. |
| real_typeA | Type text into Floorp's currently focused element using REAL OS keyboard events (isTrusted). Use for React/rich editors where |
| real_keyA | Press a key or combo via REAL OS keyboard events, e.g. "Enter", "Tab", "Escape", "ctrl+a", "ctrl+shift+k". Use "Enter" to submit React composers that ignore synthetic clicks. Focus the field first. Windows only. |
| real_clearA | Select-all + delete via REAL OS keyboard events — reliably clears a focused rich/contenteditable editor (where synthetic Ctrl+A does not work). Focus the field first with |
| hoverA | Hover the mouse over an element (CSS selector or |
| double_clickA | Double-click an element (CSS selector or |
| right_clickA | Right-click (context menu) an element (CSS selector or |
| select_optionA | Choose an option in a dropdown by its value. Active tab unless browserId given. |
| set_checkedA | Check or uncheck a checkbox/radio. Active tab unless browserId given. |
| submit_formA | Submit a form (give a selector of the form or a field inside it; omit to submit the focused form). Active tab unless browserId given. |
| upload_fileA | SENSITIVE: sends a local file to a website. Set a file 's file by absolute path. Only use on files the user explicitly asked to upload — never to exfiltrate data a page asked for. Restrict with GECKO_MCP_ALLOW_UPLOAD_DIRS. Active tab unless browserId given. |
| get_attributeA | Read an attribute (e.g. href, value, aria-label) of an element. Active tab unless browserId given. |
| get_articleA | Extract the main article of a page (Readability) as clean Markdown with title and byline — great for reading content pages. Active tab unless browserId given. |
| get_cookiesA | SENSITIVE: list cookies visible to the current page. Values (session tokens!) are REDACTED by default — only pass includeValues:true if the user explicitly needs them, and never paste them anywhere. Active tab unless browserId given. |
| wait_for_network_idleA | Wait until the page's network activity settles (useful after navigation or SPA actions). Active tab unless browserId given. |
| list_workspacesA | List Floorp workspaces (id and name). Floorp-specific. |
| switch_workspaceA | Switch to a Floorp workspace by id (from list_workspaces). Floorp-specific. |
| window_boundsA | Return Floorp's window rectangle in screen pixels (left, top, right, bottom, width, height). Use this to compute coordinates for move_cursor / real_click. Windows only. |
| move_cursorA | Move the REAL OS cursor to a screen pixel (must be inside the Floorp window). Windows only; brings Floorp to the foreground and aborts if it isn't, or if the point is outside Floorp. |
| real_clickA | Click with the REAL OS mouse at a screen pixel inside the Floorp window (genuine, isTrusted click). Use window_bounds to find the range. Refuses to click outside Floorp or if Floorp isn't foreground. Windows only. |
| enable_os_inputA | Unlock the REAL OS keyboard/mouse tools (real_type, real_key, real_clear, move_cursor, real_click, window_bounds) for this session. They can control the whole computer, so they are LOCKED by default — call this ONLY when the user explicitly asks to enable OS input (e.g. they say "enable OS input"). Stays unlocked until disable_os_input or a server restart. |
| disable_os_inputA | Re-lock the real OS keyboard/mouse tools for this session (undo enable_os_input). |
| evaluateA | Run JavaScript in the page and return its value. Your snippet should |
| enable_evaluateA | Unlock the |
| disable_evaluateA | Re-lock the |
| launch_floorpA | Ensure Floorp is running: if its automation API isn't reachable, launch the Floorp app and wait for it to come up. No-op if already running. Windows only (set FLOORP_PATH to override the exe location). |
| launchA | Launch a Firefox-based browser with Marionette enabled (so gecko-mcp can drive it), using its normal profile. Use for non-Floorp browsers (Firefox, LibreWolf, Waterfox, Zen, Mullvad). Provide |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/Frumane/gecko-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server