项目简介
'imessage-search' 是一个智能的 iMessage 搜索后端,它将您的 macOS iMessage 聊天记录、联系人信息和图片附件(通过CLIP嵌入)进行索引,然后通过 Model Context Protocol (MCP) 服务器以标准化的方式向大型语言模型(LLM)客户端提供高级搜索功能。它允许LLM理解复杂的自然语言查询,进行混合搜索和图片搜索。
主要功能点
- 智能搜索: 利用LLM理解自然语言查询,包括时间表达、人物提及和查询意图。
- 混合搜索: 结合语义相似性(OpenAI嵌入+kNN)和关键词匹配(BM25),提供最佳搜索结果。
- 图片搜索: 通过文本描述使用CLIP嵌入查找图片。
- 联系人解析: 在索引过程中自动将电话号码映射到联系人姓名。
- 增量索引: 仅处理新消息,并在运行之间跟踪状态。
- MCP工具: 提供 'smart_search' (智能自然语言查询), 'hybrid_search' (精细控制的混合查询), 'image_search' (图片描述搜索) 等功能供LLM调用。
安装步骤
- 环境准备:
- 确保您使用的是 macOS 系统,以便访问 '~/Library/Messages/chat.db'。
- 安装 Node.js 20+。
- 安装 pnpm: 运行 'npm install -g pnpm'。
- 安装 Docker (用于运行Elasticsearch)。
- 获取 OpenAI API key (用于嵌入和查询解析)。
- 如果需要图片搜索,请安装 Python 3.8+ 和 PyTorch。
- 为您的终端授予“完全磁盘访问权限”(系统偏好设置 → 隐私与安全性 → 完全磁盘访问)。
- 安装依赖: 在项目根目录运行 'pnpm install'。
- 配置环境变量: 复制 'env.example' 为 '.env' 文件,并编辑 '.env' 添加您的 'OPENAI_API_KEY'。您也可以根据需要配置 'ELASTICSEARCH_URL', 'MESSAGES_DB_PATH', 'ADDRESSBOOK_DB_PATH'。
- 启动Elasticsearch: 运行 'pnpm es:start'。
- 索引消息:
- 检查当前状态: 'pnpm index:status'。
- 索引新消息(增量): 'pnpm index'。
- 完整重新索引(清除现有数据): 'pnpm index:full'。
- (可选)索引图片: 如果需要图片搜索,请执行以下步骤:
- 安装 Python 依赖: 'pip install -r scripts/requirements.txt'。
- 使用CLIP嵌入图片(增量): 'pnpm images:embed'。
服务器配置 (供MCP客户端使用)
这个MCP服务器可以通过 Stdio 传输协议启动。要在您的MCP客户端(例如 Claude Desktop)中使用此服务器,您需要配置客户端以调用本服务器的启动命令。
以下是一个示例配置,您需要根据实际安装路径进行调整:
{ "mcpServers": { "imessage": { "command": "node", "args": ["/path/to/imessage-mcp/dist/index.js"], "env": { "OPENAI_API_KEY": "sk-..." } } } }
在上述配置中:
- '"imessage"' 是您给这个MCP服务器起的名字,可以自定义。
- '"command"' 指定了启动服务器的程序,通常是 '"node"'。
- '"args"' 是传递给 'command' 的参数列表。'"/path/to/imessage-mcp/dist/index.js"' 需要替换为您的 'imessage-search' 项目在本地文件系统中的实际安装路径下 'dist/index.js' 文件的完整路径。
- '"env"' 允许您为服务器进程设置环境变量,例如 'OPENAI_API_KEY'。
基本使用方法
- 确保已完成上述所有安装和索引步骤,并且 Elasticsearch 和 MCP 服务器已启动。
- 启动您的MCP客户端(例如 Claude Desktop)。
- 在MCP客户端中,您可以像与LLM对话一样,通过自然语言查询您的iMessage历史记录。
- LLM会根据您的查询,自动调用本服务器提供的 'smart_search'、'hybrid_search' 或 'image_search' 工具来获取结果。
- 示例查询:
- “上周我和Alex聊了些什么?”
- “晚餐计划?”
- “从Sarah那里收到的关于项目的消息”
- “找一张我提到狗的照片”
信息
分类
桌面与硬件