MCP

Automatizar o Safari em que você já está logado (somente macOS)

Para quem quer conduzir no macOS um Safari já logado para ler páginas e clicar/preencher por ref; é preciso Node.js 20+ e ligar os recursos de desenvolvedor do Safari e Apple Events.

Official source · safari-mcp

Install

npx safari-mcp

Para quem

Se você quer que um assistente veja primeiro com clareza uma página no Safari que já está aberto e logado, e depois clique ou preencha por referência, este caminho combina. Ele conduz o Safari estável que vem com o macOS, não um navegador isolado limpo iniciado à parte. Pré-requisitos duros: a máquina deve ser macOS, e Node.js 20+ já deve estar instalado aqui. Windows ou Linux não têm passos utilizáveis na documentação existente.

O repositório se coloca na linha de «continuar usando as sessões de Gmail, GitHub, Ahrefs, Slack e internet banking em que você já está logado», e menciona WebKit nativo e execução em segundo plano. O assistente encontra um estado de login real, não uma sessão de demo vazia. Quem chama é tratado como autorizado a ver o que já está nessas abas.

Não serve para quem só quer tocar uma página em isolamento, ou não quer que o assistente veja contas reais. Sistemas que não são Apple também não têm um segundo caminho de instalação. Se o objetivo é uma «sessão nova, deslogada e descartável», a documentação existente não descreve esse caminho.

Primeira tentativa em 3 minutos

O caminho principal oficial é só um: num Mac que já cumpre os pré-requisitos, execute

npx safari-mcp

O repositório diz que uma instalação global não é necessária primeiro. A instalação permanente opcional é npm install -g safari-mcp; não a tome na primeira tentativa.

Antes de iniciar, confira estas quatro coisas: o sistema é qualquer macOS com Safari; Node.js é 20 ou mais novo; o Safari tem Settings → Advanced → Show features for web developers ligado; depois Develop → Allow JavaScript from Apple Events está ligado. Se faltar um, as chamadas seguintes não têm base.

O lugar da configuração é este comando de início. Entregue-o ao seu host MCP para levantar o serviço. A documentação existente não dá nomes de campo JSON de um cliente específico, então aqui não se acrescenta modelo nem se inventam flags extras.

Na primeira vez, só observe: chame safari_snapshot e leia a accessibility tree da página atual. O sinal de sucesso é estado de página devolvido, não um erro nem uma árvore vazia. Esta leitura vê a estrutura real que você está olhando, inclusive controles visíveis em sites logados. Não é risco zero e não deve ser lido como «sem leituras locais, sem rede».

Se vários assistentes na mesma máquina forem usar o Safari ao mesmo tempo, a forma compartilhada na documentação é:

SAFARI_MCP_HTTP=1 SAFARI_MCP_HTTP_PORT=9225 npx safari-mcp

Uma primeira tentativa sozinha não precisa abrir isso.

Casos de uso

Caso 1: ver a aba atual e depois decidir o próximo passo. Chame safari_snapshot na página Safari já aberta para obter a accessibility tree e o estado da página. A documentação lista isso como primeiro passo do fluxo recomendado, objetivo Get page state. Serve para confirmar em que página você parou e quais controles podem ser referenciados. A estrutura completa dos campos de retorno não está expandida; o que se confirma é que dá para obter estado de página e accessibility tree. Não leia este passo como navegação ou mudança de página; a documentação existente não dá comandos de navegação.

Caso 2: interagir uma vez por referência e reler. O passo dois é safari_click/fill/..., clique ou preenchimento por ref; o passo três roda safari_snapshot de novo para conferir. Isso exige um ref do caso 1; não clique coordenadas do nada. Cliques e preenchimentos mudam a página e têm efeitos colaterais; antes de agir, fixe um ponto de confirmação — se no segundo snapshot o controle ou o texto correspondente mudou como esperado. O nome da ferramenta está escrito safari_click/fill/...; os outros nomes de interação não vêm um a um, então não invente comandos não documentados.

Limites de uso

Só macOS. É preciso Node.js 20+ e ligar os recursos de desenvolvedor do Safari e JavaScript from Apple Events. O serviço abre o Safari estável em que você já está logado; e-mail, hospedagem de código, backends de analytics, chat e sessões bancárias podem entrar na visão do assistente. Não presuma isolamento de rede nem um sandbox local somente leitura.

Em concorrência, compartilhe um daemon com SAFARI_MCP_HTTP=1; a documentação também diz que, se o rastreamento de abas falhar, ele fecha, em vez de acertar a aba ativa que você usa. Códigos de falha, passos de desfazer e parâmetros de ferramenta fora de safari_snapshot e safari_click/fill não estão na documentação existente. Execução em segundo plano e CPU mais baixa são comparações do próprio repositório, não uma garantia para esta máquina. Se a primeira tentativa for só um snapshot, ainda assim lê uma página real; evite primeiro abas bancárias ou qualquer aba que você não pretenda expor.