Safari MCP
MCP server for Safari on macOS: an agent drives your real browser with your logins through 98 tools
- 242 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- The agent acts with your Safari sessions: mail, GitHub, paid services and banks are as reachable for it as for you
- The enabled Allow JavaScript from Apple Events and the extension open local ports for browser control
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add mcp/safari-mcpDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The agent acts with your Safari sessions: mail, GitHub, paid services and banks are as reachable for it as for you
- The enabled Allow JavaScript from Apple Events and the extension open local ports for browser control
This is third-party code. Review the repository files before installing.
What it does
Safari MCP puts an agent into the Safari where you are already signed in to email, GitHub and other services. Chrome, Puppeteer and Playwright are not needed: the server talks to the browser through AppleScript and an optional Safari extension and works in the background without taking the window. By the author's claim CPU load is about 60% lower than Chrome DevTools MCP on Apple Silicon. There are 98 tools: navigation, clicks, forms, screenshots, network, storage, accessibility and dialog handling. By default the server acts only in tabs it opened itself and refuses yours: a click in a tab with your inbox ends in a refusal until you enable `SAFARI_MCP_ALLOW_USER_TABS` and explicitly name the tab through `safari_switch_tab`. Closing a tab (`safari_close_tab`) is refused even for an adopted tab. The `safari_doctor` tool checks the macOS permission chain and suggests fixes.
Who it is for. Mac developers who need an agent inside their own Safari with saved logins, without launching a second browser and extra heat.
Good fit when
- The agent fills in a form on a service where you are already signed in and needs no repeat authorization
- You need a page screenshot and the accessibility structure to check an interface
- Several agents work with the browser at once and each keeps its own marked tab
- A data-collection script for a site that needs your session is handed to an agent in the background
Not a fit when
- You are not on macOS: the server uses Safari and AppleScript and has no versions for other systems
- The agent must not touch banking or work mail: it acts with your sessions
- You need an isolated debugging session: Apple has its own `safaridriver --mcp` mode for that
Example request
Open the documentation page in Safari, take a screenshot of the authentication section and summarize the setup stepsMCP
- Transport
- stdio
- Authentication
- not required
Environment variables
SAFARI_MCP_ALLOW_USER_TABS- Allows adopting a user tab through safari_switch_tab; off by default
Limitations
macOS only. You need Node.js 20 or newer and the Safari, Settings, Developer, Allow JavaScript from Apple Events item turned on. Screenshots require screen recording permission and the Safari extension talks to local ports 9224, 9228, 9232 and 9236. By default the server works only in tabs it opened itself because early versions clicked into users' tabs and closed them. The `SAFARI_MCP_ALLOW_USER_TABS` and `SAFARI_MCP_RAISE_ON_NAVIGATE` variables loosen these guards. Apple has its own `safaridriver --mcp` for an isolated session, while Safari MCP works with your real browser.
How to disable. Remove the safari block from the client config (`claude mcp remove safari`), turn off the Safari MCP Bridge extension in Safari settings and switch off Allow JavaScript from Apple Events if no longer needed.
FAQ
How do I connect Safari MCP to Claude Code?
Run `claude mcp add safari -- npx safari-mcp`. Cursor and VS Code have one-click install buttons and the Homebrew variant is `brew install achiya-automation/tap/safari-mcp`.
What is required on the Mac?
Node.js 20 or newer and the Allow JavaScript from Apple Events permission in the Developer section of Safari settings. Screenshots need screen recording permission and `safari_doctor` checks the other links.
Why does the server refuse to click in my tab?
That is the default guard: the server works only in tabs it opened itself. To allow your tab enable `SAFARI_MCP_ALLOW_USER_TABS` and name it explicitly through `safari_switch_tab`.
How does it differ from safaridriver --mcp?
Apple's server opens an isolated debugging session while Safari MCP drives the real browser with your cookies and logins, in the background and with 98 tools.
Can several agents run at once?
Yes: each session keeps its own marked tab, and if the tab cannot be found the tools refuse instead of falling back to your current one.
Discussion
No questions or reviews yet.
Related
MCP serversAn MCP server and Chrome extension that let the agent drive your already open browser with your logged-in sessions, all locally
An MCP server that drives your already open Chrome and stops to ask you about a 2FA code, a CAPTCHA, or a choice only you can make
A Chrome extension with an MCP server: the agent drives your everyday browser with its sessions, tabs, bookmarks and history
An MCP wrapper over the browser-use engine: a single tool drives a browser from a natural-language task.
An MCP server that lets an agent drive a real browser: open pages, click and fill forms through Playwright
The Chrome DevTools team's official MCP server: the agent drives a live Chrome, reads network and console, and records performance traces
README in short
The text promises a browser for a coding agent: your real Safari with logins, with no heat and no headless mode. Next come a comparison with Playwright and Chrome DevTools MCP, a quick start for a dozen clients, the list of 98 tools, tab protection and a two-engine architecture.