Mac Messages MCP is a Python application that provides an MCP (Model Context Protocol) server for interacting with macOS Messages. It enables AI assistants like Claude Desktop, Cursor, and others to read, search, and send messages through the native Messages app using standard input/output communication. The application directly accesses the macOS Messages and AddressBook SQLite databases, uses AppleScript for sending messages with automatic SMS/RCS fallback, and provides tools for message retrieval, contact search, fuzzy message search, attachment handling, and permission diagnostics. The architecture follows a clean separation of concerns with the MCP server handling protocol communication, and the messages module containing all core business logic for interacting with macOS systems.
This repository is a macOS iMessage/SMS automation tool called `imsg`. It provides a CLI and JSON-RPC interface for reading, watching, and sending messages. The architecture has three layers: a Swift CLI that parses commands and outputs NDJSON or plain text; a core library (`IMsgCore`) that reads the local Messages SQLite database and manages the bridge to Messages.app; and an injected Objective-C dylib (`IMsgHelper`) that hooks into private IMCore APIs for advanced features like typing indicators, polls, stickers, rich links, and message mutations. The tool can fall back to AppleScript automation for basic sends when the bridge is unavailable (e.g., SIP enabled). The RPC server runs over stdio, making it suitable for integration with AI agents and scripts. The codebase is well-tested with unit tests for all layers, including native Objective-C tests for the injected helper. It demonstrates deep reverse-engineering of Apple's private messaging protocols and careful handling of platform-specific quirks. The primary data flow is read-only from the local `chat.db` SQLite database for history and live updates, with write operations going through either AppleScript (via `osascript`) or the injected bridge (via UUID-keyed IPC queues). External dependencies include SQLite.swift, PhoneNumberKit, ffmpeg, afconvert, and private macOS frameworks (IMCore, CNContactStore). The build system uses SwiftPM with custom scripts for universal macOS binaries and Linux static archives. The project is actively maintained with CI, releases, and a documentation site.
imsgcrawl is a local-first CLI tool for reading, archiving, and searching Apple iMessage data. It operates by taking a read-only snapshot of the macOS Messages SQLite database (`chat.db`), extracting handles, chats, messages, and deletion events, then merging them into a local SQLite archive. The tool provides bounded commands for metadata, status, sync, chats, messages, full-text search, and phone-only contact export. It outputs both human-readable text (with terminal control escape protection) and stable JSON for automation. The architecture is cleanly separated into packages for archive management, message extraction (including attributed body decoding and edit/unsend reconstruction), and portable SQLite snapshotting with macOS copy-on-write support. The codebase demonstrates strong engineering practices: thorough test coverage including fuzzing, explicit privacy boundaries, identity validation for source databases, and careful handling of edge cases like malformed UTF‑16, hardlinked sidecars, and concurrent sync locking.
This repository contains purely documentation describing a zero-click iOS exploit chain targeting CVE-2025-31200 (CoreAudio heap corruption) and CVE-2025-31201 (AppleBCMWLAN kernel escalation), with an additional unpatched hardware vector via BCM4387 coexistence SRAM. The content is limited to two Markdown files: a detailed technical walkthrough (Attack Chain Flow.md) and a summary README. There is no executable code, data, scripts, or configuration present. The repository serves as a research write-up detailing the attack flow, delivery mechanism, post-exploitation behavior, and mitigation recommendations. It does not contain any reusable data assets, pipelines, or analytical components since it lacks ingested data, transformation logic, or models.