这个项目是一个基于Model Context Protocol (MCP) 的应用后端,旨在通过标准化的方式让大型语言模型 (LLM) 应用(如Claude Desktop, Cursor等)能够与macOS上的Messages应用进行交互。它提供LLM读取最近消息、搜索消息、发送新消息以及查询联系人信息的能力。

主要功能点

  • 读取macOS Messages应用中的近期消息(可指定时间范围)。
  • 按联系人过滤读取消息。
  • 向个人或群组发送新消息。
  • 根据姓名模糊搜索联系人。
  • 检查和诊断对Messages数据库和AddressBook数据库的访问权限问题。
  • 列出可用的群组聊天。
  • 对消息内容进行模糊搜索。

安装步骤

  1. 安装 'uv' 包管理器: 如果未安装,请使用 Homebrew (推荐) 或其他方法安装 'uv'。

    brew install uv

    或参考 uv 官网安装指南

  2. 授予“完全磁盘访问”权限: macOS Messages和AddressBook数据库需要特殊权限。

    • 打开“系统设置” > “隐私与安全性” > “完全磁盘访问”(或老版本macOS中的“系统偏好设置” > “安全性与隐私” > “隐私” > “完全磁盘访问”)。
    • 点击窗口左下角的锁图标以进行更改(可能需要输入管理员密码)。
    • 点击 "+" 按钮,在弹出的应用程序列表中找到并选择您用于运行MCP服务器的终端应用(如 Terminal, iTerm2)或LLM客户端本身(如 Cursor, Claude Desktop)。
    • 将选中的应用添加到“完全磁盘访问”列表中。
    • 添加后,请重启您授予权限的终端应用或LLM客户端。
  3. 安装 '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交互。

信息

分类

桌面与硬件