{"name":"io.github.LinVireo/browsertap-mcp","slug":"linvireo-browsertap-mcp","title":"BrowserTap MCP","description":"MCP server that drives the real Chrome you already use, through an extension and CDP.","url":"https://mcp.market/server/linvireo-browsertap-mcp","rating":null,"grade":"B","score":82,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":25,"stars":0,"forks":0,"downloads_week":21,"last_push_at":"2026-10-08T15:52:25.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/LinVireo/browsertap-mcp","website":"https://github.com/LinVireo/browsertap-mcp","version":"0.4.12","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"browsertap-mcp","version":"0.4.12","transport":{"type":"stdio"},"environmentVariables":[{"description":"Which connected browser an unqualified call targets: chrome, edge or opera. Defaults to whichever registered first.","name":"BROWSERTAP_PREFERRED_BROWSER"},{"description":"Approval profile: lab or safe. Defaults to lab, which skips approval prompts and still enforces the cross-process lock, the quiet-input gate, target activation and on-screen confirmation; safe asks before every physical input.","name":"BROWSERTAP_MODE"},{"description":"Base loopback port for the bridge daemon. Defaults to 18765.","name":"BROWSERTAP_BRIDGE_PORT"},{"description":"Directory holding the bridge token and runtime state. Defaults to ~/.browsertap.","name":"BROWSERTAP_STATE_DIR"}]}],"tools":[{"name":"activate_tab","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"call_extension","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"capture_desktop_screenshot","description":"Capture the complete visible virtual desktop across all displays and return text metadata plus MCP image content; this is not a background-tab screenshot, save_path only adds a disk copy, and return_base64 is opt-in. width/height/left/top are PHYSICAL screen pixels and are exactly the range mouse_click accepts, unscaled.","write_action":false,"price_micros":0,"input_schema":null},{"name":"capture_page_screenshot","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"cdp_batch","description":"Run a CDP bridge batch command; pass the full JSON command object as text.","write_action":true,"price_micros":0,"input_schema":null},{"name":"cdp_command","description":"Call one Chrome DevTools Protocol command. session_id accepts client:tabId; tab_id accepts either a native number or the same composite session string.","write_action":false,"price_micros":0,"input_schema":null},{"name":"close_tabs","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"console_capture_start","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"console_capture_stop","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_bookmark","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"debugger_targets","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"delete_cookies","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"download_file","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"execute_js","description":"Execute arbitrary JS in the requested real-browser tab under one total deadline. BTAP pins every monitor/retry/result roundtrip to an explicit session, uses the service-worker/page route first, and falls back to directed Runtime.evaluate on SPA/CSP bridge failures without retargeting. Use wait_for/wait_for_url instead of setTimeout or sleep Promises; BTAP retries only proven-undelivered work, neve","write_action":true,"price_micros":0,"input_schema":null},{"name":"extension_path","description":"Get absolute path to the unpacked Chrome extension directory for manual installation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_automation_profile","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_bookmarks","description":"Return the browser bookmark tree. Works with no tabs open.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_console_messages","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_cookies","description":"Get cookies for the current page or specified tab via the Chrome extension bridge.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_setup_status","description":"Return component versions, stale-build actions, extension path, bridge ports, and connection status for setup/diagnostics.","write_action":false,"price_micros":0,"input_schema":null},{"name":"handle_dialog","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"hotkey","description":"Send a hotkey chord like 'command,l' or 'ctrl,shift,p' via the real keyboard.","write_action":true,"price_micros":0,"input_schema":null},{"name":"list_all_tabs","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_extensions","description":"List installed browser extensions (id, name, enabled, type, version). Works with no tabs open.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_tabs","description":"List connected tabs across all connected browsers; each tab has a browser field (chrome/edge/opera) and a session id to pass verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mouse_click","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"mouse_drag","description":"Drag the real mouse from one point to another, both in absolute virtual-desktop PHYSICAL screen pixels (see mouse_click for how that differs from page_drag's CSS pixels). Either endpoint on no display is refused with coordinates_off_screen.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mouse_move","description":"Move the real mouse cursor to absolute virtual-desktop coordinates in PHYSICAL screen pixels (the space pointer_info and capture_desktop_screenshot report, not the CSS pixels page_click takes). A point on no display is refused with coordinates_off_screen rather than clamped to a screen edge.","write_action":false,"price_micros":0,"input_schema":null},{"name":"network_capture_start","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"network_capture_stop","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"open_new_tab","description":"Open one real-browser tab in the background by default with an operation_id-backed exactly-once create. Pass active=true only when foreground work is genuinely required. If the create ACK is lost, the same operation_id is reconciled within one total deadline; a completed result is registered only with its exact client_id, tab_id, and generation. Before create is dispatched, an unresolved probe ret","write_action":false,"price_micros":0,"input_schema":null},{"name":"open_url","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"page_click","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"page_drag","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"page_press","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"page_type","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"pointer_info","description":"Report the current desktop mouse position and screen geometry in PHYSICAL pixels. screen_width/screen_height are the PRIMARY display only; screen_bounds is the virtual desktop across every display and is the range mouse_click will accept. These are not the CSS pixels the page_* tools take.","write_action":false,"price_micros":0,"input_schema":null},{"name":"remove_bookmark","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"reset_site_permissions","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve_leave_dialog","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"save_pdf","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"scan_page","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"scroll_page","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_automation_profile","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_cookies","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_extension_enabled","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_site_permission","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"storage_get","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"storage_set","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"switch_tab","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"type_text","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"uninstall_extension","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"upload_files","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"wait_for","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"wait_for_url","description":"","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":82,"grade":"B","scanned_at":"2026-11-01T06:16:48.725Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-01T06:16:48.663Z","components":{"code":{"score":20,"max":25,"notes":["19 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 24 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"browsertap_mcp-0.4.12/src/browsertap_mcp/chrome_extension/background.js: …e))(); } else { try { r = eval(jsCode); if (r instanceof Promise) r = a…"}],"inputs":{"packages":[{"registryType":"pypi","identifier":"browsertap-mcp","version":"0.4.12","found":true,"weeklyDownloads":21,"license":"MIT","dependencyCount":19,"publishedAt":"2026-08-23T17:28:54.599658Z","repositoryUrl":"https://github.com/LinVireo/browsertap-mcp"}],"repo":{"found":true,"owner":"LinVireo","repo":"browsertap-mcp","archived":false,"pushedAt":"2026-10-08T15:52:25Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/246496465?v=4","ownerCreatedAt":"2025-11-27T12:58:17Z"},"icon":{"url":"https://avatars.githubusercontent.com/u/246496465?v=4&s=128","source":"registry"},"presence":{"stars":0,"forks":0,"downloadsWeek":21,"license":"MIT","lastPushAt":"2026-10-08T15:52:25.000Z","score":25}}}},"grade_history":[],"reviews":[]}