Claude for Safari
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Gives Claude Desktop the ability to control Safari — navigate pages, read content, click elements, fill forms — via the MCP protocol, just like "Claude in Chrome".
Architecture
---
Repository structure
> **Rule:** all extension file edits go directly in app/claudeExtension Extension/Resources/. There is no separate safari-extension/ folder.
---
Requirements
- macOS 14+ (Sonoma or later)
- Xcode 16+
- Node.js v18+ — nodejs.org if not yet installed
- An Apple developer account (free account is enough for local use)
- Claude Desktop with MCP support
---
Installation
Step 1 — Clone the repository
Step 2 — Install bridge dependencies
Step 3 — Build the extension in Xcode
1. Open app/claudeExtension.xcodeproj in Xcode
2. Select the **claudeExtension** scheme (the host app)
3. Choose **My Mac** as the destination
4. Press **Cmd+R** — Xcode builds and launches the app
macOS will show a banner: *"claudeExtension wants to add a Safari extension"* → click **Open Safari Preferences** and enable the extension.
Step 4 — Enable the extension in Safari
1. Safari → **Settings (Cmd+,)** → **Extensions** tab
2. Check **claudeExtension**
3. In the right column → **Allow on all websites**
> Without this permission, script injection into pages will fail silently.
Step 5 — Configure Claude Desktop
Open (or create):
Add the safari entry under mcpServers:
Replace /absolute/path/to/ with the actual path where you cloned the repo.
If node is not in Claude Desktop's PATH, use its full path:
Then **restart Claude Desktop**.
---
Usage
The bridge starts automatically with Claude Desktop.
Safari must be open with the extension enabled.
The extension reconnects automatically to the bridge after sleep or after visiting Safari Settings — no manual action required.
---
Available tools (13)
| Tool | Description |
|---|---|
| safari_list_profiles | List available Safari profiles |
| safari_navigate | Navigate to a URL |
| safari_get_page_text | Read the visible text of the current page |
| safari_read_page | Get the full HTML of the current page |
| safari_javascript | Execute arbitrary JavaScript |
| safari_find | Find elements by CSS selector or text content |
| safari_click | Click an element |
| safari_form_input | Fill an or field |
| safari_scroll | Scroll the page |
| safari_tabs_list | List open tabs |
| safari_tabs_create | Open a new tab |
| safari_tabs_close | Close a tab |
| safari_tabs_switch | Switch to a tab by ID |
> safari_form_input supports and fields. Rich text editors using contenteditable (Notion, Gmail compose, etc.) are not yet supported.
---
Troubleshooting
**"Safari extension not connected"**
- Is Safari open? Is the extension checked in Safari → Extensions?
- Check the bridge is running: ps aux | grep bridge.js
- Check logs: Console.app → filter by claude-safari
**Permission denied on script injection**
→ Safari → Settings → Extensions → claudeExtension → **Allow on all websites**