• Home
  • Apps
  • macOS
  • News
  • Apple Releases Safari Technology Preview 247 – Adds MCP Server for AI Agent Integration

Apple Releases Safari Technology Preview 247 – Adds MCP Server for AI Agent Integration

Apple Releases Safari Technology Preview 247 – Adds MCP Server for AI Agent Integration

Apple has released Safari Technology Preview 247, the latest version of its developer preview web browser. The preview version of Apple’s popular browser offers developers and other interested users the ability to try out features that may or may not, debut in future public release versions of Safari.

‌Safari Technology Preview‌ 247 adds the Safari Model Context Protocol (MCP) server meant to speed up web development and debugging. With the MCP server, an AI agent can emulate what users experience on a website, providing better information for debugging.

Any MCP-compatible client can connect to the Safari MCP server. More information is available on Apple’s WebKit site.

‌Safari Technology Preview‌ 247 also includes fixes and updates for Accessibility, CSS, Fonts, Forms, HTML, JavaScript, MathML, Media, Model Element, Networking, Rendering, SVG, Scrolling, Security, Spatial Web, Text, Web API, WebDriver, and WebGL.

The current ‌Safari Technology Preview‌ release is compatible with machines running macOS Sequoia and macOS Tahoe, the newest version of macOS that launched earlier this year.

The ‌update is available through the Software Update mechanism in System Preferences or System Settings to anyone who has downloaded the browser from Apple’s website.

Overview

Safari Technology Preview Release 247 is now available for download for macOS Golden Gate and macOS Tahoe. If you already have Safari Technology Preview installed, you can update it in System Settings under General → Software Update.

This release includes WebKit changes between: 314716@main…315846@main.

Accessibility

Resolved Issues

  • Fixed VoiceOver jumping to the top of the page when navigating to an element that immediately becomes accessibility-ignored via JavaScript. (315078@main) (179065364)
  • Fixed VoiceOver reporting the Recent Events table on parks.wa.gov as empty. (314901@main) (179156593)
  • Fixed VoiceOver not exposing aria-actions custom actions when the action target is accessibility-ignored. (315097@main) (179286650)
  • Fixed an <a> element with a click handler but no href not being exposed as a link. (315102@main) (179398579)

CSS

New Features

  • Added support for calc-mix(). (314719@main) (176199063)

Resolved Issues

  • Fixed scroll overcompensation of fixed, nested anchor-positioned elements, so they no longer lose their position when scrolling. (314757@main) (174010503)
  • Fixed an issue where font-synthesis incorrectly applied synthetic oblique to variable fonts declared with @font-face. (314814@main) (178698772)
  • Fixed synthetic bold not being applied for a variable font whose @font-face font-weight descriptor explicitly restricts it to normal. (314537@main) (179001275)
  • Fixed an issue where CSS math functions produced an incorrect signed zero for subtraction, min()max()clamp(), and mod(). (315188@main) (179534440)
  • Fixed an issue where input[type=hidden] was not set to display: none !important in the user-agent stylesheet. (315559@main) (180137214)

Fonts

Resolved Issues

  • Fixed an issue where synthetic bold incorrectly added advance width to zero-advance glyphs. (315157@main) (179418570)

Forms

Resolved Issues

  • Fixed an issue where a positive margin-top on a <legend> element inside a <fieldset> did not shift the fieldset down. (315391@main) (141267953)

HTML

Resolved Issues

  • Fixed an issue where <link rel=preload as=json> incorrectly triggered a preload. (315422@main) (179843455)
  • Fixed an issue where the deprecated align="center" attribute was not treated as identical to align="middle" per spec. (315531@main) (180128710)

JavaScript

Resolved Issues

  • Fixed an issue where Temporal.Instant operations were not aligned with the spec’s abstract operations. (315377@main) (179844859)

MathML

New Features

  • Added support for embellished operator detection through mrow for underover layout. (314924@main) (173192995)

Resolved Issues

  • Fixed MathML operators routed through MathOperator being invisible when their glyph only exists in a fallback font. (314928@main) (178096170)
  • Fixed MathML to use MathML Core fallback values for script layout constants. (315004@main) (179177178)

Media

New Features

  • Added support for overriding color space for hardware video decoders in WebCodecs. (314887@main) (178717498)
  • Added support for mapping nextslide and previousslide MediaSession actions to nexttrack and previoustrack platform commands, so pressing next/previous track invokes a registered slide handler when no direct track handler is registered. (314839@main) (178744268)

Resolved Issues

  • Fixed media controls not appearing when tapping videos in the LinkedIn feed on iPad. (315049@main) (171231918)
  • Fixed an issue where the MediaSource text-track removal loop always processed only the last track. (315310@main) (179508398)
  • Fixed an issue where isValidVideoFrameBufferInit() tested displayWidth and displayHeight presence against themselves instead of the correct properties. (315401@main) (179514279)
  • Fixed an issue where MediaMetadata artwork sizes parsing read the wrong substring for the height value. (315402@main) (179523057)
  • Fixed an issue where the pictureInPictureElement getter inverted the shadow-host connectivity check. (315403@main) (179675087)

Model Element

Resolved Issues

  • Fixed setting the entityTransform on a <model> element while the model is unloaded or hidden. (314951@main) (179114750)
  • Fixed <model> elements losing gesture interactivity after the model player is reloaded (for example, when the model scrolls out of and back into the viewport). (315026@main) (179249565)

Networking

Resolved Issues

  • Fixed an issue where WebKit refused to load valid ASCII domains starting with xn-- that did not pass strict IDNA 2008 validation, aligning behavior with the WHATWG URL Standard. xn-- is the prefix of a punycode-encoded non-ASCII domain. (314820@main) (177686282)
  • Fixed an issue where arbitrary Content-* headers from 304 responses were not used to update cached entries. (315449@main) (179864251)
  • Fixed an issue where the Cache-Control request directives max-agemin-fresh, and no-store were not honored. (315447@main) (179865576)
  • Fixed an issue where Cache-Control: public was not honored on responses with unknown status codes. (315445@main) (179870099)
  • Fixed an issue where the HTTP cache did not store responses with explicit freshness for all status codes. (315450@main) (179871690)

Rendering

Resolved Issues

  • Fixed text-wrap: balance not being applied to content with -webkit-line-clamp. (314783@main) (172715503)
  • Fixed an issue where text changes that did not modify the text element’s size in a flex layout on a new compositing layer did not trigger re-rendering. (315173@main) (179292409)
  • Fixed an issue where an underline was drawn twice on <sup> elements. (315220@main) (179537119)
  • Fixed an issue where an underline under a <sup> element was offset by one device pixel from the rest of the line on subpixel displays. (315316@main) (179586525)
  • Fixed an issue where the ex unit in text-box-edge misplaced the propagated underline, causing it to be painted twice. (315331@main) (179769451)
  • Fixed an issue where min-width was not honored over max-width when sizing a shrink-to-fit container around a replaced element. (315396@main) (179935558)

SVG

Resolved Issues

  • Fixed SVG applying text-decoration to elements with display: contents. (314830@main) (85691104)
  • Fixed SVG <text> with textLength scaling each glyph separately when x or y is a list. (315146@main) (94161279)
  • Fixed an issue where box-shadow was not drawn on fixed-positioned SVG elements. (315468@main) (97098951)
  • Fixed an issue where an SVG filter applied via CSS to an element positioned below the viewport rendered a spurious black square at the viewport origin. (315329@main) (177482001)
  • Fixed IntersectionObserver not computing intersections for SVG element roots. (314837@main) (177807041)
  • Fixed SVG vertical <text> to honor the CSS text-orientation property instead of only the deprecated glyph-orientation-vertical presentation attribute. (315080@main) (178044217)
  • Fixed an issue where getRotationOfChar() returned approximately 360° instead of 0° for full-turn rotations after normalisation into the [0°, 360°) range. (315293@main) (178044934)
  • Fixed an issue where a non-BMP character before a <tspan> boundary shifted the x and y value lists by one position. (315418@main) (178360036)
  • Fixed interpolation of arc flags in the d property to treat them as non-zero booleans. (314745@main) (178950624)
  • Fixed pathFromEllipseElement to honor auto values for rx and ry, so APIs such as getTotalLength() return the correct length for ellipses. (314846@main) (178959205)
  • Fixed animated GIFs freezing when presentation attributes are changed on an SVG image referenced by a <use> element. (315094@main) (179414226)
  • Fixed an issue where getBoundingClientRect() on an SVG <tspan> element returned the bounds of the entire <text> element instead of the <tspan>’s own area. (315234@main) (179626476)
  • Fixed an issue where a nested clip-path on a <clipPath> element ignored css zoom. (315562@main) (180162723)

Scrolling

Resolved Issues

  • Fixed an issue where scrollIntoView with nearest alignment incorrectly aligned to the far edge for an oversized target positioned before the scrollport. (315225@main) (106356373)
  • Fixed a regression on macOS 26 where horizontal rubber-banding interfered with vertical scrolling. (315424@main) (165449829)
  • Fixed an issue where scroll snapping selected a snap point that overshot the destination instead of the closest one in the scroll direction. (315522@main) (179549119)
  • Fixed an issue where interrupting a smooth scroll with a new scrollTo() call to a different target fired the scrollend event at the wrong position. (315471@main) (179551854)
  • Fixed an issue where re-snapping after a layout change moved away from a valid scroll position when the snap area was larger than the snapport. (315291@main) (179553122)

Security

Resolved Issues

  • Fixed an issue where Content Security Policy 'self' did not match script sources in opaque-origin HTTP(S) documents. (314912@main) (178638597)
  • Fixed an issue where Content Security Policy incorrectly applied script-src to JSON module imports instead of connect-src. (315497@main) (180006320)

Spatial Web

Known Issues

  • WebXR might not render when you use Simulator. (178666073)

    Workaround: Use an Apple Vision Pro device instead of Simulator.

Resolved Issues

  • Fixed an issue where transforming the camera instead of the model in a <model> element led to undesirable lighting effects. (312407@main) (179522538)

Deprecations

  • Removed the Spatial Backdrop developer preview in favor of the Immersive API. (315100@main) (160271766)

Text

Resolved Issues

  • Fixed a line break appearing after a U+201D Right Double Quotation Mark. (314829@main) (177952069)

Web API

Resolved Issues

  • Fixed an issue where the URL Pattern tokenizer emitted a spurious zero-length Regexp token for empty regexp groups. (315289@main) (179452346)

WebDriver

New Features

  • Allow your agent to connect to a Safari browser for development and debugging via the Safari MCP server. (176038457)

Resolved Issues

  • Fixed an issue where the WebDriver full page screenshot was clipped to the viewport dimensions instead of the full page. (315337@main) (179840186)

WebGL

Resolved Issues

  • Fixed a regression where a WebGL canvas was filled with opaque content that hid stacked canvases beneath it. (315018@main) (175352260)

Apple’s aim with ‌Safari Technology Preview‌ is to gather feedback from developers and users on its browser development process. ‌Safari Technology Preview‌ can run side-by-side with the existing Safari browser and while it is designed for developers, it does not require a developer account to download and use.