iMCP 是一款 macOS 应用,旨在将您的数字生活与 AI 连接起来。它可与Claude Desktop以及越来越多支持模型上下文协议 (MCP)的客户端兼容。
功能
提示:对新功能有什么建议?请通过imcp@loopwork.com联系我们。
入门
下载并打开应用程序
首先,下载 iMCP 应用程序(需要 macOS 15.3 或更高版本)。
当您打开应用程序时,您会在菜单栏中看到一个图标。
点击此图标会显示 iMCP 菜单,其中显示所有可用的服务。初始状态下,所有服务均显示为灰色,表示未启用。
顶部的蓝色拨动开关表示 MCP 服务器正在运行并准备好与 MCP 兼容的客户端连接。
激活服务
要激活服务,请点击其图标。系统将弹出一个权限对话框。例如,激活日历访问权限时,您会看到一个对话框,询问"iMCP" Would Like Full Access to Your Calendar
。点击“允许完全访问”即可继续。
重要提示:iMCP不会收集或存储您的任何数据。像 Claude Desktop 这样的客户端会在工具调用过程中将您的数据发送到设备外。
一旦激活,每个服务图标就会从灰色变成其独特的颜色 - 红色代表日历,绿色代表消息,蓝色代表位置,等等。
对所有要启用的功能重复此过程。这些权限遵循 Apple 的标准安全模型,让您可以完全控制 iMCP 可以访问的信息。
连接到 Claude Desktop
如果您尚未安装 Claude Desktop,您可以在此处下载。
打开 Claude Desktop,前往“设置... (⌘,)”。点击“设置”面板侧边栏中的“开发者”,然后点击“编辑配置”。这将在~/Library/Application Support/Claude/claude_desktop_config.json
创建一个配置文件。
要将 iMCP 连接到 Claude Desktop,请单击 > “配置 Claude Desktop”。
这将添加或更新 MCP 服务器配置,以使用应用程序捆绑的imcp-server
可执行文件。文件中的其他 MCP 服务器配置将被保留。
点击 > “将服务器命令复制到剪贴板”。然后在编辑器中打开claude_desktop_config.json
并输入以下内容:
从 Claude Desktop 调用 iMCP 工具
退出并重新打开 Claude Desktop 应用程序。系统将提示您批准连接。
[!NOTE] 您可能会看到两次此对话框;两次都请单击“批准”。
批准连接后,您应该会在聊天框右下角看到🔨12。点击该按钮即可查看 iMCP 为 Claude 提供的所有工具列表。
现在,您可以向 Claude 询问需要访问您的个人数据的问题,例如:
“我那里的天气怎么样?”
Claude 将使用适当的工具来检索这些信息,为您提供准确、个性化的回应,而无需您在对话期间手动共享这些数据。
技术细节
应用程序和命令行界面
iMCP 是一个 macOS 应用程序,捆绑了命令行可执行文件imcp-server
。
iMCP.app
提供了用于配置服务的 UI,最重要的是,它提供了一种与 macOS 系统权限交互的方式,以便它可以访问联系人、日历和其他信息。imcp-server
提供了一个使用标准输入/输出进行通信( stdio transport )的 MCP 服务器。
应用程序和 CLI 使用Bonjour在本地网络上进行通信,以实现自动发现。两者都使用类型“_mcp._tcp”和域名“local”来发布服务。CLI 从stdin
读取 MCP 客户端的请求并转发到应用程序;CLI 接收应用程序的响应并将其写入stdout
。有关实现细节,请参阅StdioProxy
。
针对此项目,我们创建了mcp-swift-sdk :一个用于模型上下文协议服务器和客户端的 Swift SDK。该应用使用此包来处理来自 MCP 客户端的代理请求。
iMessage 数据库访问
Apple 没有提供用于访问您的信息的公共 API。但是,macOS 上的“信息”应用会将数据存储在位于~/Library/Messages/chat.db
SQLite 数据库中。
iMCP 在应用沙盒 (App Sandbox)中运行,这限制了它对用户数据和系统资源的访问。当您启用消息服务时,系统会提示您通过标准文件选择器打开chat.db
文件。打开后,macOS 会将该文件添加到应用的沙NSOpenPanel
中。NSOpenPanel 就是这样神奇的。
但开放 iMessage 数据库只是成功的一半。过去几年,苹果已经不再以纯文本形式存储消息,而是转向了专有的typedstream
格式。
为了这个项目,我们创建了Madrid :一个用于读取 iMessage 数据库的 Swift 包。它包含一个用于解码 Apple 的typedstream
格式的 Swift 实现,改编自 Christopher Sardegna 的imessage-exporter项目和一篇关于对typedstream
进行逆向工程的博客文章。
工具结果的 JSON-LD
iMCP 提供的工具以JSON-LD文档的形式返回结果。例如, fetchContacts
工具使用Contacts 框架,该框架以CNContact
类型表示人员和组织。以下是该类型的对象如何编码为 JSON-LD:
Schema.org为人物、邮政地址、事件以及我们想要表示的许多其他对象提供了标准词汇。JSON-LD 是一种方便人类、人工智能以及传统软件使用的编码格式。
为了这个项目,我们创建了Ontology :一个用于处理结构化数据的 Swift 包。它包含 Apple 框架类型的便捷初始化器,例如 iMCP 工具返回的类型。
调试
使用 MCP 检查器
要调试 iMCP 和客户端之间的交互,您可以使用检查器工具(需要 Node.js):
- 点击 > “将服务器命令复制到剪贴板”
- 打开终端并运行以下命令:
该工具可以让您查看客户端和 iMCP 服务器之间的所有请求和响应,这有助于理解协议的工作原理。
致谢
- Justin Spahr-Summers ( @jspahrsummers )、David Soria Parra ( @dsp-ant ) 和 Ashwin Bhat ( @ashwin-ant ) 在 MCP 上所做的工作。
- Christopher Sardegna ( @ReagentX )对 Messages 应用程序使用的
typedstream
格式进行了逆向工程。
执照
该项目采用 Apache 许可证 2.0 版授权。
合法的
iMessage® 是 Apple Inc. 的注册商标。
该项目与 Apple Inc. 没有任何关联,也未得到其认可或赞助。
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
一款 macOS 应用,可为您的信息、联系人等提供 MCP 服务器
Related MCP Servers
- -securityFlicense-qualityAn MCP server that provides safe access to your iMessage database through MCP, enabling LLMs to query and analyze iMessage conversations with proper phone number validation and attachment handlingLast updated -53Python
- -securityFlicense-qualityAn MCP server to list and launch applications on MacOSLast updated -184JavaScript
- AsecurityAlicenseAqualityA simple MCP server that can send notifications on mac devices.Last updated -598TypeScriptMIT License
- AsecurityAlicenseAqualityEnables interaction with Apple apps like Messages, Notes, and Contacts through the MCP protocol to send messages, search, and open app content using natural language.Last updated -66281,692TypeScriptMIT License