这个项目是一个基于Model Context Protocol (MCP) 的应用后端,旨在通过标准化的方式让大型语言模型 (LLM) 应用(如Claude Desktop, Cursor等)能够与macOS上的Messages应用进行交互。它提供LLM读取最近消息、搜索消息、发送新消息以及查询联系人信息的能力。
主要功能点
- 读取macOS Messages应用中的近期消息(可指定时间范围)。
- 按联系人过滤读取消息。
- 向个人或群组发送新消息。
- 根据姓名模糊搜索联系人。
- 检查和诊断对Messages数据库和AddressBook数据库的访问权限问题。
- 列出可用的群组聊天。
- 对消息内容进行模糊搜索。
安装步骤
-
安装 'uv' 包管理器: 如果未安装,请使用 Homebrew (推荐) 或其他方法安装 'uv'。
brew install uv或参考 uv 官网安装指南。
-
授予“完全磁盘访问”权限: macOS Messages和AddressBook数据库需要特殊权限。
- 打开“系统设置” > “隐私与安全性” > “完全磁盘访问”(或老版本macOS中的“系统偏好设置” > “安全性与隐私” > “隐私” > “完全磁盘访问”)。
- 点击窗口左下角的锁图标以进行更改(可能需要输入管理员密码)。
- 点击 "+" 按钮,在弹出的应用程序列表中找到并选择您用于运行MCP服务器的终端应用(如 Terminal, iTerm2)或LLM客户端本身(如 Cursor, Claude Desktop)。
- 将选中的应用添加到“完全磁盘访问”列表中。
- 添加后,请重启您授予权限的终端应用或LLM客户端。
-
安装 'mac-messages-mcp': 使用 'uv' 从 PyPI 安装。
uv pip install mac-messages-mcp
服务器配置
MCP服务器通常不是独立运行,而是由兼容MCP的LLM客户端启动。您需要在LLM客户端的配置中添加此服务器的信息。具体的配置方式请参考您使用的LLM客户端的文档(例如,Cursor或Claude Desktop通常有一个JSON或设置界面来管理MCP服务器)。
配置信息通常包含服务器的名称、启动命令 (command) 及其参数 (args)。对于 'mac-messages-mcp',标准的启动方式是使用 'uvx' 命令来运行已安装的包。
以下是一个 配置格式示例,您需要将其添加到LLM客户端的MCP服务器配置中(这不是需要执行的命令):
// 这是一个配置示例,具体如何填写请参考您的LLM客户端说明 { "mcpServers": { "messages": { // 服务器的内部名称,LLM客户端用于引用此服务器,可自定义。建议使用"messages"或"macos-messages" "command": "uvx", // 启动MCP服务器的命令 "args": [ "mac-messages-mcp" // 传递给command的参数,这里指明要运行哪个已安装的包作为MCP服务器 ] } // 如果您有其他MCP服务器,可以在这里继续添加配置... } }
- '"messages"': 这是您在LLM客户端内部给这个MCP服务器起的名字,LLM会用这个名字来识别和调用它。
- '"command": "uvx"': 指定用于启动服务器的可执行命令。'uvx' 是 'uv' 包管理器提供的一个工具,用于在不激活虚拟环境的情况下运行已安装包的入口点。
- '"args": ["mac-messages-mcp"]': 传递给 'uvx' 命令的参数,即您通过 'uv pip install' 安装的包名。
重要提示: 请确保您只在一个LLM客户端或一个终端会话中运行此MCP服务器的实例。同时运行多个实例可能会导致冲突。
基本使用方法
一旦MCP服务器在LLM客户端中正确配置并启动,您就可以直接在LLM的聊天界面或命令界面通过自然语言向其提问或下达指令,例如:
- 询问LLM:“给我读一下我最近24小时内的消息。” (LLM可能会调用 'tool_get_recent_messages')
- 询问LLM:“给我找一下叫'张三'的联系人。” (LLM可能会调用 'tool_find_contact')
- 告诉LLM:“给张三发一条消息说'明天会议取消了'。” (LLM可能会调用 'tool_send_message')
LLM会根据您的意图和对话上下文,自动判断何时以及如何调用 'mac-messages-mcp' 服务器提供的相应工具和资源来完成任务。您不需要直接与MCP协议或JSON-RPC交互。
信息
分类
桌面与硬件