MCP

Automatizar el Safari en el que ya has iniciado sesión (solo macOS)

Para quien quiere conducir en macOS un Safari ya iniciado para leer páginas y hacer clic/rellenar por ref; hace falta Node.js 20+ y activar las funciones de desarrollador de Safari y Apple Events.

Official source · safari-mcp

Install

npx safari-mcp

Para quién

Si quieres que un asistente vea primero con claridad una página en el Safari que ya tienes abierto e iniciado, y luego haga clic o rellene por referencia, este camino encaja. Conduce el Safari estable que viene con macOS, no un navegador aislado limpio arrancado aparte. Requisitos duros: la máquina debe ser macOS y Node.js 20+ debe estar ya instalado aquí. Windows o Linux no tienen pasos usables en la documentación existente.

El repositorio se sitúa en la línea de «seguir usando las sesiones de Gmail, GitHub, Ahrefs, Slack y banca online en las que ya has iniciado sesión», y menciona WebKit nativo y ejecución en segundo plano. El asistente encontrará un estado de inicio real, no una sesión de demo vacía. Quien llama queda tratado como autorizado a ver lo que ya hay en esas pestañas.

No encaja con quien solo quiere pulsar una página en aislamiento, o no quiere que el asistente vea cuentas reales. Los sistemas que no son Apple tampoco tienen un segundo camino de instalación. Si tu objetivo es una «sesión nueva, cerrada y desechable», la documentación existente no describe ese camino.

Primer intento en 3 minutos

La ruta principal oficial es solo una: en un Mac que ya cumple los requisitos, ejecuta

npx safari-mcp

El repositorio dice que no hace falta una instalación global primero. La instalación permanente opcional es npm install -g safari-mcp; no la tomes en el primer intento.

Antes de arrancar, comprueba estas cuatro cosas: el sistema es cualquier macOS con Safari; Node.js es 20 o más nuevo; Safari tiene Settings → Advanced → Show features for web developers activado; luego Develop → Allow JavaScript from Apple Events está activado. Si falta una, las llamadas posteriores no tienen base.

El lugar de configuración es este comando de arranque. Entrégaselo a tu host MCP para levantar el servicio. La documentación existente no da nombres de campo JSON de un cliente concreto, así que aquí no se añade plantilla ni se inventan flags extra.

La primera vez, solo observa: llama safari_snapshot y lee el accessibility tree de la página actual. La señal de éxito es estado de página devuelto, no un error ni un árbol vacío. Esta lectura ve la estructura real que estás mirando, incluidos controles visibles en sitios con sesión. No es riesgo cero y no debe leerse como «sin lecturas locales, sin red».

Si varios asistentes en la misma máquina usarán Safari a la vez, la forma compartida en la documentación es:

SAFARI_MCP_HTTP=1 SAFARI_MCP_HTTP_PORT=9225 npx safari-mcp

Un primer intento en solitario no necesita abrir esto.

Casos de uso

Caso 1: ver la pestaña actual y luego decidir el siguiente paso. Llama safari_snapshot en la página Safari ya abierta para obtener el accessibility tree y el estado de página. La documentación lo lista como primer paso del flujo recomendado, objetivo Get page state. Encaja para confirmar en qué página estás y qué controles se pueden referenciar. La estructura completa de campos de retorno no está desplegada; solo se confirma que puedes obtener estado de página y accessibility tree. No leas este paso como navegación o cambio de página; la documentación existente no da comandos de navegación.

Caso 2: interactuar una vez por referencia y releer. El paso dos es safari_click/fill/..., clic o relleno por ref; el paso tres vuelve a ejecutar safari_snapshot para comprobar. Esto exige un ref del caso 1; no pulses coordenadas de la nada. Clics y rellenos cambian la página y tienen efectos secundarios; antes de actuar, fija un punto de confirmación: si en el segundo snapshot el control o el texto correspondiente cambió como se esperaba. El nombre de herramienta se escribe safari_click/fill/...; los demás nombres de interacción no se listan uno a uno, así que no inventes comandos no documentados.

Límites de uso

Solo macOS. Hace falta Node.js 20+ y activar las funciones de desarrollador de Safari y JavaScript from Apple Events. El servicio abre el Safari estable en el que ya has iniciado sesión; correo, alojamiento de código, backends de analítica, chat y sesiones bancarias pueden entrar en la vista del asistente. No asumas aislamiento de red ni un sandbox local de solo lectura.

En concurrencia, comparte un demonio con SAFARI_MCP_HTTP=1; la documentación también dice que si falla el seguimiento de pestañas se cierra, en vez de golpear la pestaña activa que usas. Códigos de fallo, pasos de deshacer y parámetros de herramienta fuera de safari_snapshot y safari_click/fill no están en la documentación existente. Ejecución en segundo plano y menos CPU son comparaciones del propio repositorio, no una garantía para esta máquina. Si el primer intento es solo un snapshot, igual lee una página real; evita primero pestañas bancarias o cualquier pestaña que no quieras exponer.