iMessage MCP 服务器使用说明

项目简介

本项目是一个 MCP (Model Context Protocol) 服务器的实现,专门用于让支持 MCP 协议的语言模型(如 Claude)能够与 macOS 系统上的 iMessage 应用进行交互。通过此服务器,LLM 可以读取最近的 iMessage 消息,并发送新的 iMessage 消息。

主要功能点

  • 获取最近聊天记录 (get-recent-chat-messages): 允许 LLM 获取指定电话号码最近的 iMessage 聊天消息,用于上下文理解或信息检索。
  • 发送 iMessage 消息 (send-imessage): 允许 LLM 向指定电话号码发送 iMessage 消息,实现自动化消息发送功能。

安装步骤

  1. 克隆仓库: 首先,将 GitHub 仓库 'https://github.com/tchbw/mcp-imessage' 克隆到本地。
    git clone https://github.com/tchbw/mcp-imessage
    cd mcp-imessage
  2. 安装依赖: 确保已安装 Node.js 和 npm,然后在项目根目录下运行以下命令安装项目依赖。
    npm install
  3. 配置数据库路径: iMessage 数据存储在 SQLite 数据库中。你需要设置 'DATABASE_URL' 环境变量指向你的 iMessage 数据库文件。通常 iMessage 数据库文件位于 '~/Library/Messages/chat.db'。 你可以设置环境变量,例如:
    export DATABASE_URL=~/Library/Messages/chat.db
    注意: 请确保运行 MCP 服务器的用户有权访问该数据库文件。
  4. 构建项目: 运行以下命令构建项目,将 TypeScript 代码编译为 JavaScript。
    npm run build
  5. 启动服务器: 构建完成后,运行以下命令启动 MCP 服务器。
    npm start
    服务器默认使用 Stdio 传输协议,通过标准输入输出与 MCP 客户端通信。

服务器配置

MCP 客户端需要配置以下 JSON 格式的信息才能连接到 iMessage MCP 服务器。

{
  "serverName": "iMessage MCP Server",
  "command": "node",
  "args": ["/path/to/your/mcp-imessage/dist/src/index.js"]
}

配置参数说明:

  • 'serverName': 服务器的名称,可以自定义,例如 "iMessage MCP Server"。
  • 'command': 启动服务器的命令,这里使用 'node' 命令来运行 JavaScript 代码。
  • 'args': 传递给 'node' 命令的参数,指向编译后的服务器入口文件。请将 '/path/to/your/mcp-imessage/dist/src/index.js' 替换为你的 'mcp-imessage' 项目在本地的绝对路径。 例如,如果你的项目放在用户根目录下的 'mcp-imessage' 文件夹中,则路径可能类似于 '/Users/yourusername/mcp-imessage/dist/src/index.js'。

请注意: MCP 客户端会通过 Stdio (标准输入输出) 与此服务器进行通信,无需配置端口或地址。

基本使用方法

  1. 配置 MCP 客户端: 在支持 MCP 协议的 LLM 客户端(例如 Claude)中,按照其文档说明配置 MCP 服务器连接,填入上述提供的服务器配置 JSON。
  2. 调用工具: 配置成功后,LLM 客户端应该能够检测到服务器提供的两个工具: 'get-recent-chat-messages' 和 'send-imessage'。
  3. 使用 'get-recent-chat-messages' 工具: LLM 可以调用此工具来获取指定电话号码的最近消息。你需要提供 'phoneNumber' (电话号码) 和 'limit' (消息数量) 作为参数。
  4. 使用 'send-imessage' 工具: LLM 可以调用此工具来发送 iMessage 消息。你需要提供 'phoneNumber' (接收方电话号码) 和 'message' (消息内容) 作为参数。

示例使用场景:

你可以让 LLM 执行以下操作:

  • "帮我查看一下最近和张三 (电话号码: 138xxxxxxxx) 的聊天记录,看看他最近在说什么。" (LLM 调用 'get-recent-chat-messages' 工具)
  • "告诉李四 (电话号码: 139xxxxxxxx) 我晚点到。" (LLM 调用 'send-imessage' 工具)

请根据 LLM 客户端的具体使用方式和界面进行操作。

信息

分类

桌面与硬件