Skip to content

v1.0.4

Latest

Choose a tag to compare

@github-actions github-actions released this 04 Sep 20:28
· 2 commits to main since this release
2513339

This release fixes security and native-app reliability issues and updates MCP compatibility across the Apple MCP suite.

Upgrade with uvx --refresh apple-tools-mcp@1.0.4, or install the matching standalone package or .mcpb bundle below.

Mail attachments now require APPLE_MAIL_MCP_ALLOWED_ATTACHMENT_ROOT. HTTP servers accept loopback addresses only. See the READMEs for configuration.

Security

  • Pass notification text through AppleScript arguments instead of interpolating it into code. (#18)
  • Require an explicit Mail attachment directory. Reject paths outside it, escaping symlinks, non-files, and transport separators. Return structured validation errors for rejected attachments. (#16)
  • Bound Contacts subprocess time and output size. Scan larger directories in pages, and report incomplete scans instead of silently omitting contacts. (#17)
  • Restrict unauthenticated Streamable HTTP servers to loopback addresses. Network and wildcard binds now fail at startup.

Fixed

  • Calendar update_event no longer fails with -10025 ("start date must be before end date") when an event is moved so that its new start lies after its old end: the AppleScript fallback now assigns the two boundaries in whichever order keeps the intermediate state valid. (#15)
  • Send resource notifications through the current MCP subscription API while preserving legacy client support.
  • Report the suite version in MCP server metadata and align the Mail settings default.
  • Delete Notes folders by stable ID and map the Swift Reminders list deletion response to the public tool schema. Both fixes were verified in the native apps.
  • Require matching shared and domain package versions so upgrades cannot retain incompatible or vulnerable older components.

Changed

  • Test the frozen MCP 2026-07-28 requirements with a pinned conformance runner. Keep legacy conformance and its optional-feature baseline separate.
  • Check discovery, schemas, structured tool calls, errors, and current/legacy negotiation across every server. Validate isolated bundle launches through their manifest commands.
  • Validate source versions and artifact counts before publishing. Publish PyPI packages in dependency order, create the GitHub release after all uploads succeed, and publish registry records through GitHub OIDC. Attach distributions plus exact registry metadata alongside bundles and checksums.
  • Pin MCPB and Inspector tooling, declare generated bundle capabilities, and document Codex setup and attachment restrictions.

Verification

The release passed 252 package tests, seven release-script tests, all 37 scored MCP 2026-07-28 conformance scenarios, and current/legacy protocol checks across all 11 servers and bundles. Regression tests verify legacy resource notifications over stdio and HTTP. Dedicated Notes, Reminders, and Calendar test records were cleaned up.

All 12 PyPI packages and 11 MCP Registry records are published. The 46 asset hashes match SHA256SUMS; registry bundle hashes and PyPI distribution hashes match the release files. The compatibility report records optional conformance features and client-test limits.

The README has also been rewritten around setup, capabilities, and accurate privacy and permission details.