关于 iMessage History
iMessage History 是面向 macOS 用户的只读 MCP 服务,可供 MCP 客户端搜索和查看 Apple Messages。它在本机处理消息记录、附件、会话变更和沟通统计。
主要功能
- 01搜索 iMessage、SMS、MMS 和 RCS
- 02读取会话及消息详情
- 03查看已移除位置元数据的图片
- 04通过同步变更流追踪更新
- 05统计消息数量和回复时间
- 06通过通讯录解析联系人
适用场景
- 01按词句或日期查找旧消息
- 02回复前查看一段会话
- 03了解新增或编辑的消息
- 04比较回复时间与消息量
MCP 相关
向 MCP 客户端提供只读工具、提示词和可选的会话资源。它在 Mac 上读取 Messages,并支持 stdio 或本地 HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y imessage-mcpIMESSAGE_PRIVACYMost any caller can see: full (default for stdio), redacted, or aggregate.IMESSAGE_CONTACTSlive (default) names handles from Contacts; none shows handles only.IMESSAGE_DBPath to a copy of chat.db instead of this Mac's Messages database.IMESSAGE_CACHESet to 0 to keep the search index in memory only.IMESSAGE_UPDATE_CHECKSet to 0 to turn off the npm version check.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
imessage-mcp
通过 Claude、Codex、Cursor、VS Code 及任何其他 MCP 客户端搜索和阅读你的 Messages 历史记录。

只读。在你的 Mac 上运行。无需账户、云服务或编译。
- 按关键词、精确文本或短语搜索 iMessage、SMS、MMS 和 RCS 中的消息
- 阅读完整对话,包括编辑内容、撤回的消息、回应、回复和已读回执
- 查看他人发送给你的照片,并移除其中的位置数据
- 通过变更动态跟进新消息,并回答数量和响应时间相关的问题
安装
要求: macOS 14 或更高版本。使用 npx 安装需要 Node.js 24.16 或更高版本(Claude Desktop 自带运行环境)。如需支持加密缓存,请使用 Node 24 LTS。不具备 SQLite 检查点 API 的运行时(包括 Node 25)会在内存中搜索,并在重启后重建;doctor 会报告此情况。
适用于任何读取 mcpServers JSON 的客户端的标准配置:
{
"mcpServers": {
"imessage": {
"command": "npx",
"args": ["-y", "imessage-mcp@latest"]
}
}
}
接着,向运行它的应用授予完全磁盘访问权限:系统设置 > 隐私与安全性 > 完全磁盘访问权限,开启相应应用(Claude、你的终端、Cursor、VS Code 等),然后彻底退出并重新打开该应用。不确定该选哪个应用?在该应用的终端中运行 npx -y imessage-mcp@latest doctor,它会告诉你。在授予访问权限之前,每个工具都会显示相同的操作步骤。
Amp
amp mcp add imessage -- npx -y imessage-mcp@latest
Claude Code
claude mcp add --scope user imessage -- npx -y imessage-mcp@latest
也可以安装插件:/plugin marketplace add anipotts/imessage-mcp,然后运行 /plugin install imessage-mcp@anipotts。
Claude Desktop
下载 imessage-mcp.mcpb 并双击,或者如果设置 > 扩展中列出了 iMessage History,也可以从那里安装。要更新自行安装的程序包,请下载最新版本并再次双击。
然后在完全磁盘访问权限中启用 Claude,并退出后重新打开 Claude。
Cline
将标准配置添加到 cline_mcp_settings.json(文档)。
Codex
codex mcp add imessage -- npx -y imessage-mcp@latest
或者添加到 ~/.codex/config.toml:
[mcp_servers.imessage]
command = "npx"
args = ["-y", "imessage-mcp@latest"]
Copilot CLI
运行 /mcp add,或者将标准配置添加到 ~/.copilot/mcp-config.json,并设置 "type": "local"。
Gemini CLI
将标准配置添加到 ~/.gemini/settings.json。
JetBrains(Junie)
将标准配置添加到 `.junie/mcp/mcp.json`,或在 Junie CLI 中输入 `/mcp`。opencode
在 ~/.config/opencode/opencode.json 中:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"imessage": { "type": "local", "command": ["npx", "-y", "imessage-mcp@latest"], "enabled": true }
}
}
Warp、Windsurf、Zed 等
在客户端的 MCP 设置中添加标准配置。Zed 使用 context_servers,并设置 "source": "custom"。
如果 GUI 应用提示找不到 npx,说明它无法访问你的 Node 安装:请将 which npx 返回的完整路径用作 command。
使用方法
用日常语言提问:“帮我梳理一下最近的短信”“查找关于晚餐预订的消息”“Sam 通常多久回复?”客户端的提示词菜单中还提供三个提示词:
| 提示词 | 功能 |
|---|---|
catch_up | 列出有哪些人在等你回复,以及他们需要什么 |
draft_reply | 按你自己的短信风格起草回复。由你发送;此服务无法代你发送。 |
recap | 回顾你本周的消息:数量、最繁忙的对话,以及仍在等待回复的人 |
支持附加资源的客户端可以使用 imessage://conversations 和 imessage://conversations/{chat_id}。
工具
| 工具 | 功能 |
|---|---|
search_messages | 按子字符串、精确文本、词元或短语搜索。默认搜索消息文本;可选择搜索对话名称和附件文件名。可按服务、已发送或已接收状态及日期筛选 |
get_conversation | 按 chat_id、联系人名称或群组名称读取对话,包括编辑、回应、回执、回复、群组事件和附件。游标用于翻页查看较早的事件 |
list_conversations | 按联系人、服务、类型、回复状态或日期查找对话;每条结果都包含最新消息,可按最新消息优先排序,也可按联系频率排序 |
get_attachment | 显示 get_conversation 中的一个附件:图片会以 JPEG 格式显示,并移除位置和相机元数据;文本文件会以文本形式显示。需要使用 full 隐私模式 |
sync_messages | 拉取游标之后的所有变更:新消息、已编辑、已撤回和已删除的消息,以及对话成员关系、回应和回执 |
analyze_communication | 按小时和星期几统计消息数量、回复时间、连续活动情况,以及对话发起者 |
resolve_contact | 在 Mac 的通讯录中将姓名、电话号码或电子邮件匹配到联系人;存在歧义时会报告,而不会猜测 |
server_status | 版本、更新可用性、隐私模式、索引和缓存状态、架构支持、对话成员数量及通讯录访问状态 |
所有工具均为只读,并标记为 readOnlyHint。结果使用普通 ID(message_id、chat_id、attachment_id),可在不同工具间传递。
Apple 可能会在多个对话中记录同一条消息。搜索结果会将该消息仅返回一次,并附上所有规范的 chat_ids 及其 conversations 标签。单个成员关系也包含 chat_id 和 conversation;对于共享结果,请将 chat_ids 中相关的 ID 传递给 get_conversation。只有 Apple 提供的明确查找依据才会合并聊天别名。共享消息不会合并无关对话。
全局和联系人的消息数量会在请求范围内对共享记录去重。对话时间线和序列指标则会保留每条记录的成员关系,因此各对话的数量相加可能超过全局数量。同步变更会包含 chat_ids,并在 message_membership_changed 中提供 previous_chat_ids;其 changed_at 为 null,因为 Apple 不会为这些关联记录时间戳。记录的成员关系描述的是观察到变更时的状态;可用的文本、发送者和回执字段则描述当前源状态。升级索引格式会重建一次缓存,并使旧的同步游标失效;如果返回 DATABASE_CHANGED,请开始新的同步。
联系人姓名会扩展为所选人员的地址。即使通讯录中存在相互冲突的标签,精确电话号码或电子邮件也只会限定到该地址。resolve_contact 仍会报告身份歧义;限定地址不会合并人员,也不会包含其其他地址。对于类似地址的群组标题,请使用 conversation_names 范围进行搜索,并使用所选的 chat_id。
每个工具的输出架构都同时接受成功封装和结构化错误封装,因此严格模式的客户端可以展示原始原因和恢复提示。
默认情况下,对话读取采用严格模式。如果无法完整恢复正文或关联,错误会说明可使用 allow_partial: true 重试。部分结果会保留 completeness、警告以及每个事件的 row_status;引用证据前请先检查这些信息。缩小日期范围或使用 around_message_id 可以避开无关的受损事件。结构性故障仍会以失败关闭。
配置
向 args 添加选项,例如 ["-y", "imessage-mcp@latest", "--privacy", "redacted"]。
| 选项 | 说明 |
|---|---|
--privacy <mode> | 调用方最多可以看到的内容。full(默认)、redacted(名称和遮蔽后的标识符、日历日期,不含消息文本或文件名)或 aggregate(仅计数)。调用可以请求更严格的模式,但不能请求更宽松的模式。环境变量 IMESSAGE_PRIVACY |
--contacts <mode> | live(默认)显示通讯录中的名称和标识符;none 仅显示标识符。环境变量 IMESSAGE_CONTACTS |
--database <path> | 读取 chat.db 的副本,而不是这台 Mac 上的“信息”数据库。环境变量 IMESSAGE_DB |
--transport http --port <n> | 通过 HTTP 在 127.0.0.1 上提供 MCP 服务,而不是使用标准输入/输出。需要 IMESSAGE_API_TOKEN 或 IMESSAGE_API_TOKEN_FILE。IMESSAGE_ALLOWED_HOSTS 和 IMESSAGE_ALLOWED_ORIGINS 接受以逗号分隔的列表;两者默认值均为 localhost。 |
IMESSAGE_CACHE=0 | 仅在内存中保留搜索索引 |
IMESSAGE_WARM_SEARCH=0 | 在首次搜索时构建搜索索引,而不是在启动时构建 |
IMESSAGE_UPDATE_CHECK=0 | 关闭版本检查 |
隐私与安全
- 只读。 服务以只读方式打开“信息”数据库,不提供发送、编辑、回应或标记已读的工具。
- 本地运行。 不使用账户,不收集遥测数据或分析数据。唯一的网络请求是可选的 npm 注册表版本检查。
- 客户端看到的是你请求的内容。 结果会发送到你使用的 MCP 客户端及其模型提供商,并受其政策约束。
--privacy redacted或aggregate会限制离开服务的数据。 - 搜索索引。 索引在你的 Mac 上构建;SQLite 检查点 API 可用时,会加密缓存到
~/Library/Caches/imessage-mcp,密钥由“信息”数据库派生,因此只有已经能够读取你消息的应用才能打开它。删除缓存始终是安全的。即使缓存不可用或发生故障,server_status也会报告相应情况,而搜索仍会从内存中继续进行。 - 不可信内容。 消息中可能包含用于操纵 AI 的文本。服务会告知客户端,必须将所有消息内容视为数据,绝不能视为指令。
详情请参阅:SECURITY.md 和 PRIVACY.md。
开发
npm ci
npm test # unit tests on synthetic Messages databases
npm run e2e # launches the built server over stdio and HTTP
npm run perf # one-million-message performance gates
测试仅使用合成数据。请参阅 CONTRIBUTING.md。
依赖项 PR 通过作用域限定为仓库的 GitHub App 使用受保护的自动合并,无需续期个人访问令牌。每日运行的健康检查会检测身份验证失败和更新停滞;请参阅维护与恢复。
- 在确认 App 迁移完成且不再需要回滚后,弃用未使用的所有者令牌副本。
- 长时间不活跃后,确认 GitHub 未禁用定时工作流。依赖项合并不会发布版本。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。