mcpserver.lol
registry/safari-mcp
Connection check local install

safari-mcp

Native Safari browser automation for AI agents — 97 tools, zero Chrome overhead.

Tools 97
GitHub stars 181
Installs / wk 1.8k
Licence MIT
Transport stdio
Last checked never

Tools & capabilities

97 tools

Read from the published package source — this server runs locally, so there is no endpoint to query. Names are taken from the code, not observed at runtime, and descriptions are often absent.

safari_accessibility_snapshot from source
Get the accessibility tree of the page (roles, ARIA labels, focusable elements, form states). Essential for a11y auditing.
safari_analyze_page from source
Full page analysis in ONE call: title, URL, meta tags, OG, headings, link stats, image stats, forms, and text preview. Perfect for SEO/audit.
safari_check_pwa from source
Audit the page for iOS
safari_clear_console from source
Clear all captured console messages
safari_clear_field from source
Clear an input field
safari_clear_mocks from source
Remove all network route mocks (restore real network behavior)
safari_clear_network from source
Clear all captured network requests
safari_click from source
Click element. Use ref (from snapshot), selector, text, or x/y. Works on React/Airtable/virtual DOM apps via full PointerEvent+MouseEvent sequence + React Fiber fallback. Pure JS —…
safari_click_and_read from source
Click an element then return the updated page — saves 1 full round-trip vs separate click+read_page. Handles both React Router navigation and full page loads.
safari_click_and_wait from source
Click an element AND wait for the result (page load or element). Use instead of click + wait_for separately.
safari_clipboard_read from source
Read the current clipboard content (text)
safari_clipboard_write from source
Write text to the system clipboard
safari_close_tab from source
Close the current tab. After a daemon/session restart, pass the opaque receipt returned by safari_new_tab or safari_list_tabs.
safari_console_filter from source
Get console messages filtered by level (must call safari_start_console first)
safari_css_coverage from source
Analyze CSS coverage: find unused CSS rules across all stylesheets. Shows coverage percentage per stylesheet.
safari_delete_cookies from source
Delete a specific cookie or all cookies for the current page
safari_delete_local_storage from source
Delete a localStorage key, or clear all localStorage (omit key to clear all)
safari_delete_session_storage from source
Delete a sessionStorage key, or clear all sessionStorage (omit key to clear all)
safari_detect_forms from source
Auto-detect all forms on the page with their fields, types, selectors, and submit buttons. Great for automated form filling.
safari_doctor from source
Diagnose the macOS permission + daemon chain in one shot: Safari running, Apple Events/Automation, native helper daemon, Accessibility (native clicks), Screen Recording, and the he…
safari_double_click from source
Double-click an element by CSS selector or x/y coordinates (e.g. to select a word in text)
safari_drag from source
Drag an element to another element or position. Use CSS selectors or x/y coordinates.
safari_emulate from source
Emulate a mobile device by resizing window and setting user agent. Devices: iphone-14, iphone-14-pro-max, ipad, ipad-pro, pixel-7, galaxy-s24. Or use custom width/height.
safari_eval_file from source
Execute JavaScript read from a FILE path (avoids passing huge scripts inline / manual copy). Same engine as safari_evaluate: extension-first (no focus steal), AppleScript fallback.…
safari_evaluate from source
Execute JavaScript in the current page (a returned Promise is awaited — fetch/timers work in background tabs; requestAnimationFrame never fires there). Automatically falls back to…
safari_export_storage from source
Export all storage state (cookies + localStorage + sessionStorage) as JSON — useful for saving and restoring login sessions
safari_extract_images from source
Extract all images with src, alt, dimensions, loading strategy, viewport visibility
safari_extract_links from source
Extract all links with href, text, rel, target, external/nofollow detection
safari_extract_meta from source
Extract all meta tags: title, description, canonical, OG tags, Twitter cards, JSON-LD, alternate languages, RSS feeds
safari_extract_tables from source
Extract HTML tables as structured JSON (headers + rows). Perfect for scraping data tables.
safari_fill from source
safari_fill_and_submit from source
Fill a form AND submit it in one operation. Finds submit button automatically if not specified.
safari_fill_form from source
Fill multiple form fields at once
safari_get_computed_style from source
Get computed CSS styles for an element. Optionally filter specific properties.
safari_get_console from source
Get captured console messages (must call safari_start_console first)
safari_get_cookies from source
Get cookies for the current page
safari_get_element from source
Get detailed info about an element (tag, text, rect, attributes, visibility)
safari_get_indexed_db from source
Read records from an IndexedDB database store
safari_get_source from source
Get HTML source of current page
safari_go_back from source
Go back in browser history
safari_go_forward from source
Go forward in browser history
safari_handle_dialog from source
Set up handler for the next alert/confirm/prompt dialog
safari_hover from source
Hover over element. Use ref, selector, or x/y
safari_import_storage from source
Import storage state from JSON (as exported by safari_export_storage) — restores cookies, localStorage, sessionStorage
safari_inspect_viewport from source
Validate the page
safari_list_indexed_dbs from source
List all IndexedDB databases on the current page
safari_list_tabs from source
List every tab in this session
safari_local_storage from source
Get localStorage data for the current page
safari_mock_route from source
Intercept network requests matching a URL pattern and return a mock response. Works with both fetch and XHR. Useful for testing API error states, offline behavior, or replacing API…
safari_native_click from source
safari_native_hover from source
OS-level mouse hover via macOS CGEvent — moves the real cursor to an element to trigger native :hover / mouseenter handlers. Use for obfuscated UIs where JS-dispatched mouseenter i…
safari_native_keyboard from source
OS-level keyboard event via macOS CGEvent — sends a real keypress (with optional modifiers) to the Safari window WITHOUT activating Safari or stealing focus. Use when safari_press_…
safari_native_type from source
safari_navigate from source
Navigate this session
safari_navigate_and_read from source
Navigate to a URL and return the page content in one step — saves 1 full round-trip vs navigate+read_page. Use instead of safari_navigate + safari_read_page.
safari_network from source
Quick network overview via Performance API (no setup needed). Shows URLs and timing for resources loaded by the page. For detailed request/response info (headers, status codes, POS…
safari_network_details from source
Get captured network requests with full details (must call safari_start_network_capture first)
safari_new_tab from source
Open a new background tab (never steals focus), optionally with a URL. Returns {tabIndex, safeUrl, receipt}. KEEP THE RECEIPT and pass it as
safari_override_geolocation from source
Override the browser
safari_paste_image from source
Paste an image from a local file into the focused element via JS DataTransfer (no clipboard, no focus steal). Works on Medium, dev.to, HackerNoon, TOI, etc.
safari_performance_metrics from source
Get detailed performance metrics: navigation timing, Web Vitals (FCP, LCP, CLS), resource breakdown, memory usage
safari_press_key from source
Press a keyboard key (enter, tab, escape, arrows, etc). Supports modifiers (cmd, shift, alt, ctrl).
safari_query_all from source
Find all elements matching a CSS selector (returns tag, text, href, value)
safari_react_select_list_options from source
List available options of a react-select v5 dropdown without opening the menu. Returns JSON {ok, total, options:[{label,value}…]}. Useful when safari_react_select_set returns
safari_react_select_set from source
safari_read_page from source
Read page text content (title, URL, body text). Use for reading article text or page content. For interacting with elements, prefer safari_snapshot (gives ref IDs). Use selector to…
safari_reload from source
Reload the current page
safari_reload_extension from source
safari_replace_editor from source
Replace ALL content in a code editor (Monaco, CodeMirror, Ace, ProseMirror). Use ONLY for code editors — Airtable automations, GitHub gists, CodePen, n8n code nodes, etc. NOT for r…
safari_reset_emulation from source
Reset device emulation back to desktop mode
safari_resize from source
Resize the Safari window
safari_right_click from source
Right-click (context menu) an element by CSS selector or x/y coordinates
safari_run_script from source
safari_safe_area_insets from source
Read the live CSS safe-area-inset values (top/right/bottom/left) as the page sees them, whether viewport-fit=cover is set, and whether env(safe-area-inset-*) is used in any stylesh…
safari_save_pdf from source
Save the current page as a PDF file. Uses screencapture + PDF rendering (no Safari UI interaction needed).
safari_screenshot from source
Take a visual screenshot (base64 JPEG). EXPENSIVE — use safari_snapshot instead for most tasks. Only use screenshot when you need to verify visual layout, styling, images, or color…
safari_screenshot_element from source
Take a screenshot of a specific element (by CSS selector). Returns base64 PNG image.
safari_scroll from source
Scroll the page up or down by a specified amount
safari_scroll_to from source
Scroll to a specific position on the page
safari_scroll_to_element from source
Scroll to element by CSS selector OR text. For virtual DOM (Airtable) use text — scrolls down until text appears in DOM.
safari_select_option from source
Select an option in a native <select> dropdown. Sets .value and dispatches change event. Pass
safari_session_storage from source
Get sessionStorage data for the current page
safari_set_cookie from source
Set a cookie on the current page
safari_set_local_storage from source
Set a value in localStorage
safari_set_session_storage from source
Set a value in sessionStorage
safari_snapshot from source
PREFERRED way to see page state. Returns accessibility tree with ref IDs for every interactive element. Use refs with click/fill/type instead of CSS selectors. Workflow: snapshot →…
safari_start_console from source
Start capturing console messages (log, warn, error, info). Call once per page.
safari_start_network_capture from source
Start capturing detailed network requests (fetch + XHR) with headers, status, timing. Call once per page. Intercepts fetch/XHR — captures requests AFTER this call only. For quick o…
safari_switch_tab from source
Switch the MCP session
safari_throttle_network from source
Simulate slow network conditions. Profiles: slow-3g, fast-3g, 4g, offline. Or custom latency/speed. Call with no args to reset.
safari_type_text from source
safari_upload_file from source
Upload a file to a <input type=
safari_verify_state from source
Verify the framework-level state of an editor/input matches the expected value. Returns JSON {match, mode, actual, expected, hint?}. Modern editors (ProseMirror, Lexical, Closure,…
safari_wait from source
Wait for a fixed time in milliseconds. Use only when you need a brief pause between actions. PREFER safari_wait_for (waits for element/text to appear) — it
safari_wait_for from source
Wait for an element or text to appear on the page
safari_wait_for_new_tab from source
Wait for a new tab to appear (e.g. after OAuth login click opens popup). Automatically switches to the new tab.
safari_webkit_compat from source
Check every CSS property used on the page against THIS Safari via CSS.supports() — reports unsupported properties, properties that need a -webkit- prefix, and known Safari renderin…