Skip to main content

A CLI and MCP server to manage bookmarks in the Safari web browser.

Project description

safari-bookmarks-mcp

Manage Safari bookmarks through an MCP server or CLI.

Built on safari-bookmarks-cli by Marty (evilmarty), extended with MCP support and modern tooling. Apache 2.0.

macOS note: 10.14+ requires Full Disk Access for the terminal app you're running from.

MCP server

Add to your client config — uvx handles installation automatically:

.mcp.json (Claude Code, project scope):

{
  "mcpServers": {
    "safari-bookmarks": {
      "command": "uvx",
      "args": ["safari-bookmarks-mcp", "--file", "~/Library/Safari/Bookmarks.plist"]
    }
  }
}

Or use the bootstrap command to generate config for Claude Code, OpenCode, Codex, and Gemini:

uvx safari-bookmarks-mcp bootstrap --client claude --client opencode --scope local --write

Scopes: local (project-level), global (user-level), both.

Server flags:

  • --readonly — block all write operations
  • --confirm-write — allow writes (default requires dry_run=True per call)

Tools: list_bookmarks, search_bookmarks, snapshot, add_bookmark, add_folder, move_item, remove_item, edit_item, empty_folder. All write tools accept dry_run=True to preview changes without saving.

CLI

uvx --from safari-bookmarks-mcp safari-bookmarks --help
safari-bookmarks list
safari-bookmarks list "BookmarksMenu"
safari-bookmarks add --title "Example" --url "http://example.com" "BookmarksMenu"
safari-bookmarks add --title "New Folder" --list "BookmarksBar"
safari-bookmarks move "BookmarksMenu" "Example" --to "BookmarksBar" "New Folder"
safari-bookmarks remove "BookmarksBar" "New Folder"
safari-bookmarks empty "BookmarksBar" "New Folder"

Default file: ~/Library/Safari/Bookmarks.plist. Override with -f <path>.

Development

git clone https://github.com/chikingsley/safari-bookmarks-mcp.git
just setup   # create .venv and install deps
just check   # ruff + ty + pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

safari_bookmarks_mcp-0.6.2.tar.gz (18.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

safari_bookmarks_mcp-0.6.2-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

Details for the file safari_bookmarks_mcp-0.6.2.tar.gz.

File metadata

  • Download URL: safari_bookmarks_mcp-0.6.2.tar.gz
  • Upload date:
  • Size: 18.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for safari_bookmarks_mcp-0.6.2.tar.gz
Algorithm Hash digest
SHA256 c15f582ebf9c849a35be0ab639a43293589509861998f01d799cd0989618c16b
MD5 63158647341781d6f9153dd466b83bc6
BLAKE2b-256 c84f96df50cc121dd10c1258a0de3a8b28cbe8a69060a500b189d01f8d1ff75f

See more details on using hashes here.

File details

Details for the file safari_bookmarks_mcp-0.6.2-py3-none-any.whl.

File metadata

  • Download URL: safari_bookmarks_mcp-0.6.2-py3-none-any.whl
  • Upload date:
  • Size: 20.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for safari_bookmarks_mcp-0.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 90d079bde713a8f65866080cc4c44903598f0f09c42b58ec36fee0b8da840cb1
MD5 150ed6ad7fabb787976ec004fb02e0e0
BLAKE2b-256 4bf5de14fa7fb8a6ff9991ce9ec2bee840a82525e6816644c080ca11c3db7801

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page