- 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
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ạ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 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
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ó hỗ trợ các engine Chromium, Firefox, WebKit thông qua daemon
Tuy vậy tôi đang dùng Playwright MCP
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
Đâ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 ở đó
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
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
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
“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
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 đó
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