Safari MCP

The browser for your coding agent. Your real Safari, logged in - no Chrome, no heat, no headless. Its 40 documented tools cover safari, click, and, wait. It runs locally over stdio via the published package.

People connecting browser automation tools to Claude, Cursor, VS Code, or another MCP client. The project is written in JavaScript.

VERIFIED ACTIVE

LAST COMMIT 2026-08-24 · ★ 176 · #12 OF 196 MAINTAINED BROWSER AUTOMATION · VERIFIED 2026-08-25

MIT · JavaScript servers · how we verify → /methodology

01 · Install Safari MCP

before you install - you'll need

Set SAFARI_MCP_HTTP, APP_PATH before connecting.

Claude Code

claude mcp add achiya-automation-safari-mcp -- npx -y safari-mcp

Claude Desktop / Cursor / VS Code - add to config

{
  "mcpServers": {
    "achiya-automation-safari-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "safari-mcp"
      ]
    }
  }
}

Same JSON for Cursor. For VS Code, rename the top-level key from `mcpServers` to `servers`.

Using another client? Same JSON, different key

Claude Desktop · mcpServers

Cursor · mcpServers

VS Code · servers

Windsurf · mcpServers

Zed · context_servers

Cline · mcpServers

Roo Code · mcpServers

Continue · mcpServers

LibreChat · mcpServers

Gemini CLI · mcpServers

Codex CLI · mcp_servers

Full setup guides: every client.

02 · Evidence

Security posture

What to check before giving this server access to your agent - from the registry, GitHub, and our own probes. We don't score safety; we show what's verifiable.

runs as local process (stdio) - runs on your machine with your user's permissions

license MIT - declared in the repository

npm package safari-mcp - unscoped; check the name against the project README before installing

registry namespace io.github.achiya-automation is GitHub-verified and matches the repo owner

03 · What Safari MCP can do

Prose above is summarized from the project's README and registry record - no invented capabilities.

What you can build

With this server connected, an agent can navigate to URL (auto HTTPS, wait for load), get title, URL, and text content, get full HTML source, and navigate + read in one call.

The 40 tools it gives your agent

Extracted from the project's README - what safari-mcp lets an agent do.

safari_navigate
- Navigate to URL (auto HTTPS, wait for load)
safari_go_back
- Go back in history
safari_go_forward
- Go forward in history
safari_reload
- Reload page (optional hard reload)
safari_read_page
- Get title, URL, and text content
safari_get_source
- Get full HTML source
safari_navigate_and_read
- Navigate + read in one call
safari_click
- Click by CSS selector, visible text, or coordinates
safari_double_click
- Double-click (select word, etc.)
safari_right_click
- Right-click (context menu)
safari_hover
- Hover over element
safari_click_and_wait
- Click + wait for navigation
show all 40 tools
safari_click_and_read
- Click then return the updated page - saves a round-trip (React Router + full loads)
safari_fill
- Fill input (React/Vue/Angular compatible)
safari_clear_field
- Clear input field
safari_select_option
- Select dropdown option
safari_fill_form
- Batch fill multiple fields
safari_fill_and_submit
- Fill form + submit in one call
safari_type_text
- Type real keystrokes (JS-based, no System Events)
safari_press_key
- Press key with modifiers
safari_react_select_set
- Set a react-select v5 value via React fiber - bypasses the menu UI
safari_react_select_list_options
- List a react-select v5 dropdown's options without opening it
safari_replace_editor
- Replace all content in a code editor (Monaco, CodeMirror, Ace, ProseMirror)
safari_verify_state
- Verify an editor's framework-level state matches expected - catch stale DOM before Submit
safari_screenshot
- Screenshot as PNG (viewport or full page)
safari_screenshot_element
- Screenshot a specific element
safari_save_pdf
- Export page as PDF
safari_scroll
- Scroll up/down by pixels
safari_scroll_to
- Scroll to exact position
safari_scroll_to_element
- Smooth scroll to element
safari_list_tabs
- List all tabs (index, title, URL)
safari_new_tab
- Open new tab (background, no focus steal)
safari_close_tab
- Close tab
safari_switch_tab
- Switch to tab by index
safari_wait_for_new_tab
- Wait for a new tab (e.g. OAuth popup) and auto-switch to it
safari_wait_for
- Wait for element, text, or URL change
safari_wait
- Wait for specified milliseconds
safari_evaluate
- Execute arbitrary JavaScript, return result
safari_eval_file
- Execute JavaScript read from a file path (avoids huge inline scripts)
safari_get_element
- Element details (tag, rect, attrs, visibility)

Latest releases

v2.16.3 · 2026-08-23

Fixed · The startup banner printed nothing at all from 2.16.2 onward. The runtime tool count added in 2.16.2 read server at module scope, but server is a local of the per-session buildServer() factory - so the banner…

v2.16.2 · 2026-08-20

Fixed · Every "how many tools" surface said something different. The code registers 97 tools, but the startup banner said 96, package.json and glama.json said 96, and .mcp.json/mcp.json still said 80 - the last of…

v2.16.1 · 2026-08-18

Fixed · Screenshots failed on macOS 26 (Tahoe) with a misleading "Screen Recording permission may have been lost" error. Tahoe broke screencapture -l<windowId> for Safari - it exits 1 with "could not create image from…

04 · Who maintains Safari MCP

safari-mcp is maintained by achiya-automation. It's the only MCP server we track from this author; the repo dates to Mar 2026.

05 · Facts

category
browser automation - ranked #12 of 196 actively-maintained browser automation servers as of 2026-08-25.
release cadence
10+ releases in the last 90 days (latest 2026-08-23)
registry
io.github.achiya-automation/safari-mcp (active, first published 2026-03-28 · 44 versions)
packages
npm:safari-mcp

06 · Safari MCP FAQ

Is Safari MCP still maintained?

Yes - as of 2026-08-25, its last commit was 2026-08-24 and it shipped 10+ releases in the last 90 days. We re-verify nightly.

What can Safari MCP do?

With this server connected, an agent can navigate to URL (auto HTTPS, wait for load), get title, URL, and text content, get full HTML source, and navigate + read in one call.

How do I install Safari MCP?

Run `npx -y safari-mcp`. The README documents 2 environment variables (SAFARI_MCP_HTTP, APP_PATH) to set first. Set SAFARI_MCP_HTTP, APP_PATH before connecting. You can also paste the ready-made client config above.

Does Safari MCP run locally?

Yes - it's a stdio server: it runs on your machine (via npx) with your user's permissions. Your data stays local unless the server itself calls external APIs.

07 · Alternatives to Safari MCP