B

npm:safari-mcp

https://www.npmjs.com/package/safari-mcp
84/100 · MCP Trust Grade · checked 3h ago · MCP 2.12.0

What it offers — 30 tools · Developer Tools

safari_navigate

Navigate to a URL in Safari. Waits for page to fully load.

safari_go_back

Go back in browser history

safari_go_forward

Go forward in browser history

safari_reload

Reload the current page

safari_read_page

Read page text content (title, URL, body text). Use for reading article text or page content. For interacting with elements, prefer safari_snapshot (g

safari_get_source

Get HTML source of current page

safari_snapshot

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 s

safari_navigate_and_read

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_rea

safari_click

Click element. Use ref (from snapshot), selector, text, or x/y. Works on React/Airtable/virtual DOM apps via full PointerEvent+MouseEvent sequence + R

safari_click_and_read

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 pag

safari_double_click

Double-click an element by CSS selector or x/y coordinates (e.g. to select a word in text)

safari_right_click

Right-click (context menu) an element by CSS selector or x/y coordinates

safari_native_click

OS-level mouse click via macOS CGEvent — produces isTrusted: true events that pass WAF/bot detection (G2, Cloudflare, etc.). Use when regular safari_c

safari_native_hover

OS-level mouse hover via macOS CGEvent — moves the real cursor to an element to trigger native :hover / mouseenter handlers. Use for obfuscated UIs wh

safari_native_keyboard

OS-level keyboard event via macOS CGEvent — sends a real keypress (with optional modifiers) to the Safari window WITHOUT activating Safari or stealing

safari_native_type

Insert text into ANY editor via OS-level clipboard paste (CGEvent Cmd+V targeted to Safari window). Unlike safari_fill which manipulates DOM directly

safari_fill

Fill/replace value in an input, textarea, select, OR contenteditable (rich text). Handles React controlled inputs, ProseMirror, Draft.js, and Google C

safari_clear_field

Clear an input field

+12 more tools

Spec / packaging20%100
Security (OWASP MCP)30%55
Maintenance / popularity20%100
Tool hygiene15%80
Transparency / provenance15%100

Findings

WARN Runs an install/postinstall script — supply-chain surface to review.
INFO Static analysis of npm package safari-mcp@2.12.0 (stdio server — no remote endpoint). Reliability/behavioral signals require running it; not measured.
Grade another server

We re-grade npm:safari-mcp on a schedule and alert your Slack/webhook the moment its tools change or its grade drops — rug-pull insurance for the connection.

Share this report card

A 1200×630 card with the grade + audit — drop it in a post, Slack, or your repo.

MCP Trust report card — npm:safari-mcp grade B
Share on X Open card image

Embed this grade

A live badge — it re-verifies itself and shows current stability. Static scorecards can't. Paste it in your README or site to show users you're independently audited.

MCP Trust Grade B · wmcp.sh
[![MCP Trust Grade B](https://wmcp.sh/mcp/grade/npm%3Asafari-mcp/badge.svg)](https://wmcp.sh/mcp/grade/npm%3Asafari-mcp)
<a href="https://wmcp.sh/mcp/grade/npm%3Asafari-mcp"><img src="https://wmcp.sh/mcp/grade/npm%3Asafari-mcp/badge.svg" alt="MCP Trust Grade B · wmcp.sh"></a>

Agents: check this before connecting

Add the wmcp.sh trust oracle as an MCP server and call grade_mcp_server / check_mcp_drift in your agent's pre-connection gate:

https://wmcp.sh/mcp/trust
How this grade is computed. An open, independent rubric — Spec conformance (20%), Security mapped to the OWASP MCP Top 10 (30%), Reliability (20%), Tool hygiene (15%), Transparency (15%) — run by connecting to the server and inspecting its real MCP surface. The grade is free and identical whether or not the operator pays. v1 uses static + spec signals from a single connection; continuous uptime, real latency, and annotation-truthing (declared readOnly vs observed behavior) layer on via the wmcp.sh proxy.