Imessage Portal
FreeNot checkedRead-only MCP server for iMessage, reachable from anywhere over an embedded Tailscale tunnel with OAuth.
About
Read-only MCP server for iMessage, reachable from anywhere over an embedded Tailscale tunnel with OAuth.
README
A native macOS menu bar app that turns your iMessage history into an MCP server any AI agent can reach from anywhere — Claude Code, claude.ai, ChatGPT, Cursor — plus a plain-HTML web portal for humans and for agents that still don't speak MCP.
It is 100% read-only. The app keeps a live full-text index of the Messages database and publishes it at a stable public URL through an embedded Tailscale node, so your agent can search your texts, read a thread, and pull an attachment whether or not it runs on this Mac.
How it works
iMessage Portal.app (menu bar, SwiftUI)
├─ Indexer chat.db → index.db (FTS5), incremental, every 3s
├─ HTTP server 127.0.0.1:4870
│ ├─ /mcp MCP server (Streamable HTTP + OAuth 2.1)
│ └─ /messages… plain HTML portal, token login
└─ Embedded Tailscale (vendored libtailscale/TailscaleKit)
└─ Funnel :443 → https://messages.<tailnet>.ts.net (public, TLS)
No Tailscale app install, no BlueBubbles, no SIP changes. Onboarding is: grant Full Disk Access (macOS relaunches the app) → read the remote-access intro and click Continue → sign in to Tailscale in the browser (any SSO) and click Connect → approve Funnel on the consent page → you're online.
Connect your AI
The MCP address and access token are in the app's menu and settings.
Claude Code / anything that sends headers:
claude mcp add --transport http imessage https://messages.<tailnet>.ts.net/mcp \
--header "Authorization: Bearer <access token>"
claude.ai, ChatGPT (custom connector / developer mode): add a connector with the MCP address. The client walks through OAuth: a consent page opens in your browser, and you approve with one click (or by pasting the access token). Tokens issued this way die whenever you regenerate the access token.
Tools: search_messages (FTS5 + person/date/chat filters),
list_conversations, get_conversation, get_attachment, and the
search/fetch pair ChatGPT's research modes expect.
Agents without MCP support get the same history as plain HTML: every
page is a bookmarkable URL behind the same token (see /help on your
portal). Ergo: MCP → M-See-P 🔥
Install
Grab the latest DMG from Releases,
open it, and drag iMessage Portal into Applications. Builds are signed and
notarized, so macOS opens them without any Gatekeeper warnings. The app
updates itself from then on — it asks before checking automatically, and
each update installs with one click. Apple Silicon only for now (the
vendored Tailscale framework builds arm64).
Develop
make deps # build vendored TailscaleKit.framework (Go + Xcode required)
make build # swift build
make run # run the menu bar app from the debug build
make test # unit tests (PortalCore only)
make app # assemble dist/iMessage Portal.app
Runtime data lives in ~/Library/Application Support/MessagesPortal/
(index.db, config.json with the access token, Tailscale node state, OAuth
client/token store, attachment transcode cache).
Installing Imessage Portal
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/vinsidious/imessage-portalFAQ
Is Imessage Portal MCP free?
Yes, Imessage Portal MCP is free — one-click install via Unyly at no cost.
Does Imessage Portal need an API key?
No, Imessage Portal runs without API keys or environment variables.
Is Imessage Portal hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Imessage Portal in Claude Desktop, Claude Code or Cursor?
Open Imessage Portal on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Imessage Portal with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
