1 điểm bởi GN⁺ 5 giờ trước | 2 bình luận | Chia sẻ qua WhatsApp
  • Safari MCP Server kết nối coding agent với cửa sổ Safari thật, cho phép agent trực tiếp kiểm tra trạng thái hiển thị trong trình duyệt khi phát triển và debug web
  • Agent có thể truy cập DOM, request mạng, ảnh chụp màn hình và output console để kiểm tra kết quả render và trải nghiệm người dùng — những điều khó nắm bắt nếu chỉ nhìn vào code
  • Giảm gánh nặng phải liên tục chuyển đổi cửa sổ và mô tả prompt trong các tác vụ mà khác biệt giữa các trình duyệt là quan trọng, như khả năng tương thích Safari, hiệu năng, accessibility, xác minh trạng thái form/checkout
  • Cung cấp các công cụ điều khiển tab, chuyển URL, chạy JavaScript, xem request mạng, trích xuất nội dung trang, tương tác DOM, chụp màn hình, giả lập viewport và media
  • Server chỉ chạy trên máy cục bộ và không tự thực hiện lệnh gọi mạng, nhưng dữ liệu trang được capture sẽ được chuyển trực tiếp đến agent mà người dùng đang chạy, nên cần dùng các agent đáng tin cậy

Vai trò của Safari MCP Server

  • Safari MCP Server đã được thêm vào Safari Technology Preview 247
  • Đây là Model Context Protocol server dành cho nhà phát triển web, kết nối agent với cửa sổ trình duyệt Safari
  • Agent có thể kiểm tra code thực sự được render như thế nào trong trình duyệt, qua đó thu hẹp khoảng cách giữa phân tích code và kiểm tra trạng thái trình duyệt
  • Client tương thích MCP có thể kết nối với Safari MCP Server
  • Agent đã kết nối có thể tái hiện sát hơn trạng thái mà người dùng nhìn thấy trong trình duyệt
    • Truy cập DOM
    • Truy cập request mạng
    • Truy cập ảnh chụp màn hình
    • Truy cập output console

Cách giảm vòng lặp debug

  • Quy trình debug web thông thường lặp lại việc xem vấn đề trong trình duyệt, kiểm tra console và tab style, rồi quay lại code để sửa
  • Ngay cả khi dùng agent, nếu phải chụp màn hình và mô tả vấn đề, rồi bản sửa chưa đủ, người dùng vẫn phải qua lại giữa trình duyệt, prompt và agent
  • Safari MCP Server cho phép agent trực tiếp kiểm tra trạng thái trình duyệt, giảm nhu cầu chuyển cửa sổ và viết prompt chi tiết
  • Ngay cả khi người dùng không mô tả tình huống bằng một prompt hoàn hảo, agent vẫn có thể tiếp tục bước tiếp theo dựa trên thông tin có thể kiểm tra trong Safari

Các trường hợp sử dụng chính

  • Phát triển web trên Safari

    • Agent có thể kiểm tra không chỉ code mà cả kết quả render thực tế trong Safari
  • Cải thiện khả năng tương thích Safari

    • Nếu chỉ test trên một trình duyệt, có thể bỏ sót bug tiềm ẩn ở trình duyệt khác
    • Agent có thể mở site trong Safari và kiểm tra computed style, layout, cũng như khác biệt so với hành vi kỳ vọng
  • Phân tích hiệu năng

    • Có thể đánh giá JavaScript trên trang để làm lộ các chỉ số hiệu năng như navigation timing, resource load time
    • Khi tìm ra phần làm site chậm, việc thu hẹp đối tượng cần sửa sẽ dễ hơn
  • Kiểm tra accessibility

    • Có thể kiểm tra các vấn đề accessibility phổ biến như thiếu label, thuộc tính ARIA không phù hợp, contrast thấp
  • Xác minh trạng thái người dùng

    • Có thể thực hiện kiểm tra trạng thái form, truy vấn phần tử bằng selector, kiểm tra tương tác cụ thể, hiển thị nhiều trạng thái trong luồng checkout, v.v.

Công cụ được cung cấp

  • browser_console_messages: trả về log console đã được buffer của tab hiện tại hoặc tab được chỉ định
  • browser_dialogs: xem danh sách dialog của trình duyệt và xử lý phản hồi
    • Hỗ trợ accept, dismiss và nhập text cho JavaScript prompt
  • create_tab, close_tab, switch_tab, list_tabs: tạo, đóng, chuyển đổi và liệt kê tab trình duyệt
  • navigate_to_url: điều hướng đến URL và trả về nội dung trang đã tải
  • page_info: kiểm tra URL, title và loading state của trang hiện tại
  • evaluate_javascript: chạy mã JavaScript trong trang và trả về kết quả
  • list_network_requests: xem tóm tắt request mạng của tab hiện tại
    • Bao gồm URL, method, status, timing
  • get_network_request: xem thông tin chi tiết của một request mạng
    • Bao gồm headers, body, timing
  • get_page_content: trích xuất nội dung text của trang ở nhiều định dạng như markdown, HTML, JSON
  • page_interactions: thực hiện tuần tự các tương tác DOM như click, type, scroll, hover, keyPress
  • screenshot: capture trang hiện tại thành ảnh chụp màn hình PNG
  • set_emulated_media: giả lập CSS media type như print để test responsive design
  • set_viewport_size: đặt kích thước viewport của trình duyệt theo đơn vị CSS pixel
  • wait_for_navigation: chờ trang hiện tại tải xong và trả về URL cuối cùng cùng title

Cách bắt đầu

  • Trước tiên cần cài Safari Technology Preview
  • Sau khi cài, cần bật các mục sau trong cài đặt Safari
    • Safari Settings > Advanced > Show features for web developers
    • Safari Settings > Developer > Enable remote automation and external agents
  • Nếu dùng Claude, có thể dùng lệnh sau trong terminal
claude mcp add safari-mcp-stp -- "/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver" --mcp  
  • Nếu dùng Codex, có thể dùng lệnh sau
codex mcp add safari-mcp-stp -- "/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver" --mcp  
  • Với các agent khác, có thể đưa cấu hình sau vào mcp.json hoặc config.json
"safari-mcp-stp": {  
  "command": "/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver",  
  "args": ["--mcp"]  
}  
  • Ví dụ trên đặt tên server là safari-mcp-stp, nhưng có thể dùng tên mong muốn như safari

Prompt và hành vi của agent

  • Sau khi cài đặt, có thể bắt đầu bằng các prompt đơn giản như sau
Find bugs on my site in Safari  
How accessible is my site in Safari?  
See how my website performs in Safari  
  • Cách hoạt động có thể khác nhau tùy từng agent, nhưng agent có thể tự dùng Safari MCP Server ngay cả khi không được yêu cầu rõ ràng
  • Trong luồng ví dụ, khi người dùng hỏi về bug trên trang flight của Safari, agent tìm thấy hai bug và kiểm tra thêm các mục có thể gây vấn đề cho người dùng Safari
  • Chỉ với yêu cầu ban đầu, agent vẫn có thể nhờ Safari MCP Server để tiếp tục kiểm tra và xác định vấn đề

Chạy cục bộ và xử lý dữ liệu

  • Safari MCP Server chạy hoàn toàn trên máy cục bộ
  • Không tự thực hiện lệnh gọi mạng
  • Không truy cập thông tin cá nhân trong Safari
    • AutoFill
    • Các hoạt động trình duyệt khác
  • Khi capture nội dung trang, ảnh chụp màn hình và log console, dữ liệu đó không được gửi đến Apple mà được chuyển trực tiếp đến agent người dùng đang chạy
  • Cách xử lý dữ liệu sau đó sẽ khác nhau tùy agent và model đang sử dụng
  • Cũng như với các agent khác được cấp quyền truy cập trình duyệt, chỉ nên dùng những agent mà bạn tin cậy

Cách WebKit kỳ vọng công cụ được sử dụng

  • Phát triển web có cả cách dùng AI và không dùng AI
  • Nếu AI là một phần trong quy trình phát triển, Safari MCP Server có thể giúp tăng năng suất
  • Mục tiêu là giúp agent hiểu màn hình và hành vi trong trình duyệt Safari, từ đó làm cho việc test và debug Safari dễ hơn
  • Nếu có vấn đề, có thể gửi issue qua WebKit bug report

2 bình luận

 
shakespeares 1 giờ trước

Safari MCP cơ à... cảm giác thật mới mẻ nhỉ haha

 
Ý kiến trên Hacker News
  • Từ tháng 11 năm 2025, tôi đã dùng MCP DevTools server chính thức của Chrome
    https://github.com/ChromeDevTools/chrome-devtools-mcp
    Trước đó tôi dùng Chrome WebDriver, nhưng MCP nhanh hơn và có nhiều tính năng hơn
    Để kiểm tra xem nó có hoạt động trên Firefox không, tôi đã chỉ thị cho LLM kiểm thử trang bằng MCP chính thức của Firefox
    https://github.com/mozilla/firefox-devtools-mcp
    Giờ tôi cũng dự định thêm Safari vào kiểm thử tương thích

    • Tôi tò mò liệu có khác biệt gì giữa các công cụ này và việc dùng Playwright MCP với cấu hình Chrome/Firefox hay không
    • Đôi khi thì ngược lại, thay vì để LLM điều khiển trình duyệt, tôi muốn LLM nhìn thấy các thao tác tôi đã làm thủ công trong trình duyệt
      Tôi đã tạo MCP để đáp ứng mục đích đó
  • Federico Viticci đã nói chi tiết hơn một chút về ý nghĩa của việc này trên MacStories, Mastodon và tập mới nhất của podcast Connected, và cũng dễ tiếp cận hơn với người dùng phổ thông
    Các liên kết trong bài gốc cũng rất đáng xem
    https://www.macstories.net/linked/safaris-new-mcp-server-is-...
    https://mastodon.macstories.net/@viticci/116847167023618099
    https://relay.fm/connected/610

  • Tôi đặc biệt kỳ vọng không chỉ cho việc kiểm thử mà cả các tác vụ hằng ngày
    Nếu agent có thể tự nhiên thực hiện tự động hóa trình duyệt thay tôi trong trình duyệt mà tôi đã đăng nhập, việc bàn giao giữa tôi và agent có vẻ sẽ mượt hơn nhiều
    Một phần cũng vì Chrome ngốn pin nên tôi đã dùng Safari làm trình duyệt chính

    • Tôi đang làm Hyperia, trong đó agent có thể kiểm soát hoàn toàn web panel dựa trên Electron và thực hiện những tác vụ khá mạnh tay: https://github.com/deepbluedynamics/hyperia
      Tôi cũng dùng một orchestrator cho container của agent, và có công cụ MCP để expose port của container, nhờ đó có thể hiển thị kết quả công việc trong web panel: https://github.com/DeepBlueDynamics/nemesis8
      Hôm nay tôi sẽ thêm kết nối Safari MCP vào n8, và một bản phát hành mới với nhiều tính năng hơn dự kiến sẽ ra mắt tối nay
    • Nhìn vào câu “không truy cập thông tin cá nhân của Safari, chẳng hạn như AutoFill hay hoạt động trình duyệt khác”, tôi hiểu là instance mà agent tương tác sẽ không được đăng nhập
    • Phần “việc bàn giao giữa tôi và agent sẽ mượt hơn” nghe đáng sợ
      Vì từ góc nhìn của dịch vụ ở phía bên kia trình duyệt, không có cách nào biết ai đang làm gì
      Tôi không rõ agent được giới hạn như thế nào, và làm sao theo dõi đâu là việc tôi làm, đâu là việc agent làm
      Không biết tôi đang bỏ sót điều gì, hay chỉ là mình đã lạc hậu với thời đại
  • Cá nhân tôi khuyên dùng Playwright-CLI: https://github.com/microsoft/playwright-cli
    Nó chạy nhanh hơn nhiều so với các MCP server tôi từng dùng

    • Nếu cần phiên trình duyệt liên tục thì cũng có spel(https://github.com/Blockether/spel)
      Nó hỗ trợ các engine Chromium, Firefox, WebKit thông qua daemon
    • Playwright rất tuyệt cho kiểm thử end-to-end và cũng hợp với Electron
      Tuy vậy tôi đang dùng Playwright MCP
    • Tất cả những thứ này với tôi đều có cảm giác nặng nề
      Có cả một trình duyệt đầy đủ, debug protocol, và mỗi lần đọc lại có dump DOM; quan trọng hơn MCP hay CLI là bên dưới nó có gì
      Vì vậy tôi đã tạo một binary Rust nhỏ, chạy trực tiếp system webview và trả về state token cùng delta thay vì DOM
      Ngay cả khi tải trang đầu của HN, agent cũng chỉ tốn khoảng 50 token
      Nó hỗ trợ cả MCP lẫn CLI, nên agent có thể chọn bên mình thích
      https://github.com/frane/vibesurfer
  • safaridriver do Apple cung cấp đã có từ vài năm trước
    Nó dùng WebDriver W3C và có thể dùng để tương tác với các instance Safari

  • Không rõ Apple có thật sự quan tâm đến nhà phát triển web hay không
    Nếu không có thiết bị Apple thì kiểm thử trên Safari kiểu gì
    Apple tạo một máy ảo tối thiểu chỉ có Safari thì khó đến vậy sao

    • Hỏi làm sao kiểm thử Safari khi không có thiết bị Apple cũng tương tự như hỏi làm sao kiểm thử game PlayStation khi không có PlayStation
      Đây là cùng một vấn đề với việc làm sao kiểm thử firmware phần cứng khi không có phần cứng, hay làm sao chạy chương trình khi không có phần cứng cần thiết mà cũng không có emulator hoặc simulator
      Nếu thứ gì đó chỉ chạy trên phần cứng cụ thể và không có ảo hóa hay giả lập, thì không thể kiểm thử nó bên ngoài phần cứng đó; chuyện này đã như vậy suốt nhiều thập kỷ từ thời kỳ đầu của điện toán
      Quyết định của Apple thường được định đoạt bởi chiến lược hơn là khó hay dễ, và khá rõ là họ đang tạo ra một khu vườn có tường bao quanh
      Nếu không thích thì cứ như những người khác, đừng chơi ở đó
    • Ngay cả trong tình thế Chrome thống trị, ta vẫn kiểm thử Chromium vì không muốn bỏ sót nhiều trình duyệt như Edge
      Tương tự, tuy không hoàn hảo nhưng vẫn có thể kiểm thử WebKit, và nếu muốn thì cũng có thể trên Linux hoặc Windows:
      https://orionbrowser.com/platforms/linux
      Không nghĩ Apple sẽ kinh doanh máy ảo Safari, nhưng nếu cần máy ảo macOS thì có thể xem các nhà cung cấp dịch vụ đám mây: https://aws.amazon.com/ec2/instance-types/mac/
      Nhiều nơi đã kết nối sẵn phần orchestration cho kiểm thử phần mềm
    • Apple vừa phát hành công cụ mới này, nên có thể xem là họ có quan tâm đến nhà phát triển web
    • Giống cách từng kiểm thử IE trên Linux hoặc OS X
  • Gần đây tôi đang bảo agent chạy Chrome và giao tiếp trực tiếp qua CDP, và nó hoạt động khá tốt

    • Cũng phải thử cách đó xem sao
      Tò mò không biết so với Playwright thì thế nào
      Nhìn từ góc độ phát triển web, lợi thế của Playwright có vẻ là dùng được trên nhiều trình duyệt
      Nếu công cụ riêng cho từng trình duyệt nhanh hơn hoặc hiệu quả token hơn, thì với tự động hóa tác vụ và Claws có lẽ đó sẽ là lựa chọn tốt hơn
    • Đúng vậy. Cách này hoạt động tốt hơn nhiều so với tuyến MCP và cũng nhanh hơn
  • “Có nhiều cách để xây dựng web, dù có dùng AI hay không. Nếu AI là một phần trong workflow của bạn, tôi nghĩ công cụ này sẽ giúp tăng năng suất. Nếu không thì cũng không sao.”
    Nói như vậy vào năm 2026 nghe kỳ lạ thật
    Vì đây là thời mà nếu tự viết code và không giao phó mọi thứ cho agent, thì trong mắt một số người bạn sẽ bị xem như người mới

    • 2 năm trước thì điều ngược lại bị coi là lời nói nhảm nhí
      Giờ thì thật tốt khi những người dùng AI không còn phải che giấu điều đó
    • Không rõ phần nào là lạ
      Lạ ở chỗ phải thêm câu miễn trừ này để xoa dịu phe chống AI cuồng nhiệt sao
      Đây rõ ràng là công cụ dành cho phát triển có AI hỗ trợ, vậy mà phải gắn thêm một câu kiểu “xin gửi lời an ủi đến cả những ai không dùng AI” mới là điều rất lạ
      Chỉ là nó lạ theo hướng khác với hướng bạn nghĩ
  • Lý do MCP cho tự động hóa trình duyệt đáng chú ý là vì engine WebKit của Safari thuộc nhóm mà phần lớn AI agent khó xử lý dễ dàng
    Playwright và Puppeteer thiên về Chromium, nên nếu có MCP server cho Safari thì nó có thể lấp một khoảng trống thực sự trong kiểm thử đa trình duyệt trong workflow của agent