1 points par GN⁺ 5 시간 전 | 2 commentaires | Partager sur WhatsApp
  • Le serveur MCP Safari connecte un agent de code à une véritable fenêtre Safari, afin qu’il puisse vérifier directement ce qui s’affiche dans le navigateur pendant le développement et le débogage web
  • L’agent peut accéder au DOM, aux requêtes réseau, aux captures d’écran et à la sortie de la console pour vérifier le rendu réel et l’expérience utilisateur, difficiles à déduire à partir du seul code
  • Pour des tâches où les différences entre navigateurs sont importantes, comme la compatibilité Safari, les performances, l’accessibilité ou la validation de l’état de formulaires et de checkout, cela réduit les allers-retours entre fenêtres et le besoin d’écrire des prompts détaillés
  • Il fournit des outils de contrôle des onglets, de navigation par URL, d’exécution de JavaScript, d’inspection des requêtes réseau, d’extraction du contenu de la page, d’interaction avec le DOM, de capture d’écran et d’émulation du viewport et des médias
  • Le serveur s’exécute uniquement sur la machine locale et n’effectue aucun appel réseau de son côté, mais les données capturées depuis la page sont transmises directement à l’agent utilisé par l’utilisateur, ce qui impose d’utiliser un agent de confiance

Rôle du serveur MCP Safari

  • Le serveur MCP Safari a été ajouté à Safari Technology Preview 247
  • Il s’agit d’un serveur Model Context Protocol pour les développeurs web, qui relie un agent à une fenêtre du navigateur Safari
  • Il permet à l’agent de voir comment le code est réellement rendu dans le navigateur, ce qui réduit l’écart entre l’analyse du code et l’observation de l’état du navigateur
  • Tout client compatible MCP peut se connecter au serveur MCP Safari
  • Un agent connecté peut reproduire plus fidèlement ce que l’utilisateur voit dans le navigateur
    • accès au DOM
    • accès aux requêtes réseau
    • accès aux captures d’écran
    • accès à la sortie de la console

Comment il réduit les cycles de débogage

  • Le débogage web classique consiste à repérer un problème dans le navigateur, vérifier la console et l’onglet des styles, puis revenir au code pour corriger, dans une boucle répétitive
  • Même avec un agent, il faut souvent prendre une capture d’écran, expliquer le problème, puis revenir au navigateur, au prompt et à l’agent si la correction est incomplète
  • Le serveur MCP Safari permet à l’agent de vérifier directement l’état du navigateur, ce qui réduit les changements de contexte et la charge liée à la rédaction de prompts détaillés
  • Même si l’utilisateur ne décrit pas parfaitement la situation dans son prompt, l’agent peut poursuivre la tâche à partir des informations observables dans Safari

Principaux cas d’usage

  • Développement web dans Safari

    • L’agent peut vérifier non seulement le code, mais aussi le rendu réel dans Safari
  • Amélioration de la compatibilité Safari

    • Tester dans un seul navigateur peut faire passer à côté de bugs potentiels dans les autres
    • L’agent peut ouvrir le site dans Safari et examiner les computed styles, la mise en page et les écarts par rapport au comportement attendu
  • Analyse des performances

    • En évaluant du JavaScript dans la page, il peut faire remonter des indicateurs de performance comme le navigation timing ou le resource load time
    • Une fois les points de ralentissement identifiés, il devient plus simple de cibler les correctifs
  • Vérification de l’accessibilité

    • Il peut repérer des problèmes d’accessibilité courants comme des labels manquants, des attributs ARIA inadaptés ou un contraste insuffisant
  • Validation de l’état utilisateur

    • Il peut vérifier l’état d’un formulaire, rechercher des éléments via des sélecteurs, confirmer des interactions spécifiques ou afficher différents états d’un parcours de checkout

Outils fournis

  • browser_console_messages : renvoie les logs de console mis en mémoire tampon pour l’onglet courant ou un onglet donné
  • browser_dialogs : permet de consulter la liste des boîtes de dialogue du navigateur et de traiter les réponses
    • prend en charge accept, dismiss et la saisie de texte pour les prompts JavaScript
  • create_tab, close_tab, switch_tab, list_tabs : permettent de créer, fermer, changer et lister les onglets du navigateur
  • navigate_to_url : ouvre une URL et renvoie le contenu de la page chargée
  • page_info : permet de vérifier l’URL, le title et l’état de chargement de la page courante
  • evaluate_javascript : exécute du code JavaScript dans la page et renvoie le résultat
  • list_network_requests : affiche un résumé des requêtes réseau de l’onglet courant
    • avec URL, method, status et timing
  • get_network_request : récupère les informations détaillées d’une requête réseau donnée
    • avec headers, body et timing
  • get_page_content : extrait le contenu textuel de la page dans plusieurs formats, comme markdown, HTML ou JSON
  • page_interactions : enchaîne des interactions DOM comme click, type, scroll, hover ou keyPress
  • screenshot : capture la page courante sous forme de capture d’écran PNG
  • set_emulated_media : émule un type de média CSS comme print pour les tests de responsive design
  • set_viewport_size : définit la taille du viewport du navigateur en pixels CSS
  • wait_for_navigation : attend la fin du chargement de la page courante et renvoie l’URL finale et le title

Comment démarrer

  • Il faut d’abord installer Safari Technology Preview
  • Après l’installation, il faut activer les options suivantes dans les réglages de Safari
    • Safari Settings > Advanced > Show features for web developers
    • Safari Settings > Developer > Enable remote automation and external agents
  • Si vous utilisez Claude, vous pouvez lancer la commande suivante dans le terminal
claude mcp add safari-mcp-stp -- "/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver" --mcp  
  • Si vous utilisez Codex, vous pouvez utiliser la commande suivante
codex mcp add safari-mcp-stp -- "/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver" --mcp  
  • Pour d’autres agents, vous pouvez ajouter la configuration suivante dans mcp.json ou config.json
"safari-mcp-stp": {  
  "command": "/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver",  
  "args": ["--mcp"]  
}  
  • Dans cet exemple, le nom du serveur est safari-mcp-stp, mais vous pouvez utiliser le nom de votre choix, comme safari

Prompts et comportement de l’agent

  • Après l’installation, vous pouvez commencer avec des prompts simples comme ceux-ci
Find bugs on my site in Safari  
How accessible is my site in Safari?  
See how my website performs in Safari  
  • Le comportement varie légèrement selon les agents, mais ils peuvent utiliser le serveur MCP Safari d’eux-mêmes, même sans instruction explicite
  • Dans le flux d’exemple, lorsqu’un utilisateur interroge l’agent sur un bug d’une flight page dans Safari, l’agent trouve deux bugs et vérifie en plus d’autres points susceptibles de poser problème aux utilisateurs de Safari
  • Même à partir de la seule requête initiale, il peut poursuivre les vérifications et l’identification des problèmes avec l’aide du serveur MCP Safari

Exécution locale et traitement des données

  • Le serveur MCP Safari s’exécute entièrement sur la machine locale
  • Il n’effectue aucun appel réseau par lui-même
  • Il n’accède pas aux informations privées de Safari
    • AutoFill
    • autres activités du navigateur
  • Lorsque le contenu d’une page, une capture d’écran ou des logs de console sont capturés, ces données sont transmises directement à l’agent exécuté par l’utilisateur, et non à Apple
  • La manière dont ces données sont ensuite traitées dépend de l’agent et du modèle utilisés
  • Comme pour tout autre agent à qui l’on accorde un accès au navigateur, il faut n’utiliser que des agents de confiance

Ce que WebKit attend de son usage

  • Le développement web peut se faire avec ou sans IA
  • Si l’IA fait partie du flux de développement, le serveur MCP Safari peut contribuer à améliorer la productivité
  • Son objectif est d’aider les agents à comprendre l’affichage et le comportement dans le navigateur Safari, afin de faciliter les tests et le débogage dans Safari
  • En cas de problème, vous pouvez soumettre une issue via le rapport de bug WebKit

2 commentaires

 
shakespeares 1 시간 전

Safari MCP… ça fait quelque chose, haha

 
GN⁺ 5 시간 전
Avis de Hacker News
  • J’utilise le serveur MCP DevTools officiel de Chrome depuis novembre 2025
    https://github.com/ChromeDevTools/chrome-devtools-mcp
    Avant cela, j’utilisais le WebDriver de Chrome, mais MCP était plus rapide et offrait davantage de fonctionnalités
    Pour vérifier si cela fonctionne aussi avec Firefox, j’ai demandé au LLM de tester la page avec le MCP officiel de Firefox
    https://github.com/mozilla/firefox-devtools-mcp
    Je vais désormais ajouter Safari aux tests de compatibilité

    • Je me demande s’il y a une différence entre ces outils et l’utilisation de Playwright MCP avec une configuration Chrome/Firefox
    • Parfois, à l’inverse, au lieu de faire manipuler le navigateur par le LLM, je veux que les actions que j’effectue manuellement dans le navigateur soient visibles par le LLM
      J’ai créé un MCP pour couvrir ce cas d’usage
  • Federico Viticci a expliqué un peu plus en détail ce que cela signifie dans MacStories, sur Mastodon et dans le dernier épisode du podcast Connected, d’une manière plus accessible au grand public
    Il vaut aussi vraiment la peine de consulter les liens présents dans l’article original
    https://www.macstories.net/linked/safaris-new-mcp-server-is-...
    https://mastodon.macstories.net/@viticci/116847167023618099
    https://relay.fm/connected/610

  • Je suis particulièrement enthousiaste non seulement pour les tests, mais aussi pour les tâches du quotidien
    Si un agent peut effectuer naturellement de l’automatisation de navigateur à ma place dans un navigateur où je suis déjà connecté, le passage de relais entre moi et l’agent devrait sembler beaucoup plus fluide
    C’est aussi parce que j’utilise Safari comme navigateur principal, Chrome consommant beaucoup de batterie

    • Je développe Hyperia, et un agent peut prendre le contrôle complet d’un panneau web basé sur Electron pour réaliser des opérations assez radicales : https://github.com/deepbluedynamics/hyperia
      J’utilise aussi un orchestrateur de conteneurs d’agents, avec un outil MCP qui expose les ports des conteneurs afin d’afficher le résultat des tâches dans le panneau web : https://github.com/DeepBlueDynamics/nemesis8
      Je prévois d’ajouter aujourd’hui la connexion Safari MCP à n8, et une nouvelle version avec davantage de fonctionnalités devrait sortir ce soir
    • La phrase « n’accède pas aux informations personnelles de Safari, comme le remplissage automatique, ni à d’autres activités du navigateur » me donne à penser que l’instance avec laquelle l’agent interagit n’est pas connectée
    • La partie « le passage de relais entre moi et l’agent est plus fluide » me fait peur
      Parce que, du point de vue du service de l’autre côté du navigateur, il n’y a aucun moyen de savoir qui fait quoi
      Je ne sais pas comment l’agent est limité, ni comment on suit ce que j’ai fait et ce que l’agent a fait
      Je me demande si je rate quelque chose, ou si je suis simplement dépassé par mon époque
  • Personnellement, je recommande Playwright-CLI : https://github.com/microsoft/playwright-cli
    Il a fonctionné beaucoup plus vite que les serveurs MCP que j’ai essayés

    • Si vous avez besoin d’une session de navigateur persistante, il y a aussi spel (https://github.com/Blockether/spel)
      Il prend en charge les moteurs Chromium, Firefox et WebKit via un démon
    • Playwright est excellent pour les tests de bout en bout et fonctionne aussi très bien avec Electron
      Cela dit, j’utilise Playwright MCP
    • Tout cela m’a paru lourd
      Il y a un navigateur complet, un protocole de débogage, un dump du DOM à chaque lecture ; plus que la question MCP ou CLI, ce qui compte, c’est ce qu’il y a en dessous
      J’ai donc créé un petit binaire Rust qui pilote directement la webview du système et renvoie des jetons d’état et des deltas au lieu du DOM
      Même en chargeant la page d’accueil de HN, cela ne coûte qu’environ 50 tokens à l’agent
      Il prend en charge à la fois MCP et CLI, donc l’agent peut choisir ce qu’il préfère
      https://github.com/frane/vibesurfer
  • safaridriver, fourni par Apple, existe depuis plusieurs années
    Il utilise le WebDriver W3C et peut servir à interagir avec une instance de Safari

  • Je ne sais pas si Apple se soucie vraiment des développeurs web
    Comment tester dans Safari si on n’a pas d’appareil Apple ?
    Ce serait si difficile pour Apple de créer une machine virtuelle minimale avec seulement Safari ?

    • Demander comment tester Safari sans appareil Apple, c’est un peu comme demander comment tester un jeu PlayStation sans PlayStation
      C’est le même problème que de se demander comment tester le firmware d’un matériel sans le matériel, ou comment exécuter un programme sans le matériel nécessaire quand il n’existe ni émulateur ni simulateur
      Si quelque chose ne tourne que sur un matériel spécifique et qu’il n’y a ni virtualisation ni émulation, on ne peut pas le tester en dehors de ce matériel, et c’est comme ça depuis des décennies, depuis les débuts de l’informatique
      Les décisions d’Apple relèvent souvent davantage de la stratégie que de la difficulté ou de la facilité, et il est assez clair qu’ils construisent un jardin clos
      Si ça ne te plaît pas, tu peux simplement ne pas y jouer, comme tout le monde
    • Même avec la domination de Chrome, on teste Chromium parce qu’on ne veut pas passer à côté d’Edge et d’autres navigateurs
      De la même façon, ce n’est pas parfait, mais on peut tester WebKit, et même sous Linux ou Windows si on veut :
      https://orionbrowser.com/platforms/linux
      Je ne pense pas qu’Apple se lance dans une activité de machines virtuelles Safari, mais si tu as besoin d’une VM macOS, regarde du côté des fournisseurs de services cloud : https://aws.amazon.com/ec2/instance-types/mac/
      Beaucoup ont déjà pré-intégré l’orchestration des tests logiciels
    • Apple vient de sortir ce nouvel outil, donc on peut considérer qu’ils se soucient des développeurs web
    • C’est comme la manière dont on testait IE sous Linux ou OS X
  • Ces derniers temps, je demande à l’agent de lancer Chrome et de communiquer directement via CDP, et ça fonctionne plutôt bien

    • Il faudra que j’essaie aussi cette approche
      Je me demande ce que ça donne par rapport à Playwright
      Du point de vue du développement web, l’avantage de Playwright semble être de pouvoir l’utiliser avec plusieurs navigateurs
      Si les outils propres à chaque navigateur sont plus rapides ou plus efficaces en tokens, ce sera sans doute un meilleur choix pour l’automatisation des tâches et pour Claws
    • Oui. Cette approche fonctionne bien mieux que la voie MCP, et elle est plus rapide
  • « Il existe de nombreuses façons de créer pour le web, avec ou sans IA. Si l’IA fait partie de votre workflow, je pense que cet outil vous aidera à gagner en productivité. Sinon, c’est très bien aussi. »
    C’est étrange de dire ça en 2026
    Parce qu’on vit à une époque où, si on écrit le code soi-même et qu’on ne délègue pas tout à un agent, certains vous traitent de débutant

    • Il y a deux ans, c’était l’inverse qui était considéré comme absurde
      C’est bien que les personnes qui utilisent l’IA n’aient plus à le cacher
    • Je ne vois pas quelle partie est bizarre
      Est-ce le fait d’avoir dû ajouter ce genre de clause de non-responsabilité pour apaiser le camp anti-IA fanatique ?
      C’est clairement un outil destiné au développement assisté par IA, et le fait d’avoir dû ajouter une phrase du genre « toutes nos pensées aux personnes qui n’utilisent pas l’IA » est en réalité très étrange
      Mais c’est étrange dans un sens différent de celui que tu imagines
  • Ce qui rend un MCP pour l’automatisation de navigateur intéressant, c’est que le moteur WebKit de Safari est généralement difficile à manipuler facilement pour la plupart des agents IA
    Playwright et Puppeteer sont centrés sur Chromium, donc un serveur MCP pour Safari pourrait combler une vraie lacune dans les tests cross-browser des workflows d’agents