Apple Safari runs on your own machine — the client starts it, so there is no endpoint to ping. 418 installs a week from npm. Last commit 22 Oct 2026.
Read and act on Safari — history, tabs and reading list, writes off by default
We read the source, 2 h ago · rules 995398eba69f
What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.
let open = Process()
return execSync(cmd, { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] }).trim();
__GIT_COMMIT__: JSON.stringify(process.env.GIT_COMMIT || tryGit("git rev-parse --short HEAD")),
Found in continuous integration, deployment or infrastructure files, or in a neighbouring package of the same monorepo. None of this is installed when you add the server: it describes how the project is built and released. We list it because a leaked key in a build pipeline is still a real problem, but it is not something this server does on your machine.
- name: Sign the update 🔏
env:
SPARKLE_ED_PRIVATE_KEY: ${{ secrets.SPARKLE_ED_PRIVATE_KEY }}
Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.
We found places where it runs commands, builds paths or queries from values it is given. None of that is a flaw by itself — it becomes one when the code changes, and code changes quietly between releases. We re-read it on every one.
This server runs on your own machine — install it with the package manager and the client starts it for you. Package name taken from the official registry entry.
claude mcp add mcp-apple-safari -- npx -y @mgcrea/mcp-apple-safari
{
"mcpServers": {
"mcp-apple-safari": {
"command": "npx",
"args": [
"-y",
"@mgcrea/mcp-apple-safari"
]
}
}
}
[mcp_servers.mcp-apple-safari]
command = "npx"
args = ["-y", "@mgcrea/mcp-apple-safari"]
{
"mcpServers": {
"mcp-apple-safari": {
"command": "npx",
"args": [
"-y",
"@mgcrea/mcp-apple-safari"
]
}
}
}
{
"servers": {
"mcp-apple-safari": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@mgcrea/mcp-apple-safari"
]
}
}
}
Optional settings from the registry entry, left out of the block above:
APPLE_SAFARI_ALLOW_WRITES (Register the mutating tools. Off by default, and the gate decides whether the write tools exist at all rather than merely refusing — an agent with writes off cannot see them), APPLE_SAFARI_ALLOW_CODES (Return one-time codes: a one-time-code field in apple_safari_page_elements, and apple_safari_find_codes for a code a page shows as text. Its own gate rather than allowWrites, because it is a read. Credential fields stay redacted whatever this says), APPLE_SAFARI_ALLOW_NETWORK (Register apple_safari_network_record, _list and _get, which record what a page you allowed the extension on fetches and read the responses. Its own gate rather than allowWrites, because it is a read; off means the tools do not exist. Headers named like credentials are masked, bodies are not. Reloading a tab to record and saving a body to a file still need APPLE_SAFARI_ALLOW_WRITES), APPLE_SAFARI_DOWNLOAD_DIR (Where apple_safari_network_get's saveAs writes a file. Defaults to ~/Downloads. A name is kept to its basename and an existing file is never replaced unless asked), APPLE_SAFARI_NETWORK_CHUNK_CHARS (Characters of a body the server asks the page for per command when it reads a large body. Defaults to 262144, which was measured to work; how far above that Safari's native-message channel goes is unmeasured).
Search, read and act on Apple Reminders — lists, due dates, writes off by default
Read and act on Apple Maps — favourites, Guides and recents, writes off by default
Search, read and act on Apple Mail — threads, attachments, body search, writes off by default
Search, read and act on Apple Notes — folders, attachments, writes off by default
Search, read and act on Apple Calendar — ranges, free-time lookup, writes off by default
Search and read Apple Contacts — resolves numbers and emails to names, writes off by default
Search and read Apple Messages — chats and decoded text, sending off by default
Read, search and organise any IMAP mailbox, with writes off by default
Answers built from our own checks of this server.