Skip to main content
Glama
zhuhroscar-tech

safari-mcp-server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
safari_tabsA

List every open tab across every Safari window. Each entry has window_index, tab_index, url, title, and is_current (whether it's that window's frontmost tab).

safari_openA

Navigate Safari to a URL. Reuses the real, already-logged-in Safari session (cookies, extensions, everything) rather than a separate automation profile. With new_tab=True opens a new tab; otherwise navigates the frontmost window's current tab in place. Waits for the page to finish loading by default so the returned title is accurate.

safari_closeA

Close a Safari tab. Omit both arguments to close the frontmost window's current tab.

safari_readA

Read a Safari tab's URL, title, and visible text (document.body's innerText). Set include_html=True to also get the full outerHTML. Omit window/tab to read the frontmost window's current tab.

safari_jsB

Evaluate arbitrary JavaScript in a Safari tab's page context and return the string-coerced result. Requires Safari's Develop menu > 'Allow JavaScript from Apple Events' to be enabled.

safari_clickA

Click the first element matching a CSS selector in a Safari tab. Returns found=False (not an error) if nothing matched the selector.

safari_fillA

Set an /'s value via a CSS selector, dispatching real 'input'/'change' events so JS-framework-backed forms (React, Vue, ...) observe the change. Returns found=False (not an error) if nothing matched the selector.

safari_element_existsC

Check whether a CSS selector matches any element in a Safari tab.

safari_wait_forA

Poll a Safari tab until a CSS selector matches an element, or time out. Useful after a click/navigation that loads content asynchronously. Returns found=False (not an error) on timeout.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct action: tab-level operations (open, close, tabs) vs. page-level interactions (read, click, fill, js) vs. condition checks (element_exists, wait_for). The only conceivable overlap is between element_exists and wait_for, but one is a one-shot check and the other is a polling operation, so the descriptions make them unambiguous.

Naming Consistency4/5

All tools share the consistent 'safari_' prefix and lowercase snake_case style, and most use a verb-like action word (close, read, click, fill, open). Minor deviations exist: 'safari_tabs' is a noun rather than a verb phrase like 'list_tabs', and 'safari_element_exists' is a noun+verb predicate, but the overall pattern remains predictable.

Tool Count5/5

Nine tools is a well-scoped size for a Safari automation server, covering navigation, tab management, page reading, and DOM interaction without unnecessary bloat. Each tool earns its place for a focused browser-automation purpose.

Completeness4/5

The core workflows are covered: open URLs, read page content, interact via click/fill/JS, wait for elements, and manage tabs. Minor gaps exist, such as no explicit back/forward navigation, no screenshot capability, and no direct 'activate tab' tool, but these are workaroundable and the essential lifecycle of browsing automation is present.

Maintenance

ActivityMaintained
ResponsivenessNo issues