mcpField
A
Apple Contacts

Apple Contacts

本地服务
github.com生产力322 天前更新

关于 Apple Contacts

Apple Contacts 是面向 macOS 通讯录的 MCP 服务,供联系人查询、管理和消息收件人确认使用。它提供重复项检测,并默认通过原生 Contacts 接口读取和写入。

主要功能

  1. 01列出、搜索和查看联系人详情
  2. 02将联系人解析为消息收件人
  3. 03创建、更新和删除联系人
  4. 04检测重复联系人并建议合并候选项
  5. 05编辑带标签的电话号码和电子邮件
  6. 06检查健康状态与访问权限

适用场景

  1. 01按姓名、电话或电子邮件查找联系人
  2. 02发送消息前验证收件人联系方式
  3. 03清理重复联系人并维护联系方式

MCP 相关

该 MCP 服务向 MCP 客户端提供联系人查找、收件人解析和联系人管理工具,并提供目录资源与检查提示词。默认使用 stdio,也可配置为 Streamable HTTP。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
pypiapple-contacts-mcp1.1.4
mcpbapple-contacts-1.1.4.mcpb1.1.4

工具

16

收录的工具列表 · 更新于 1 天前

此工具无需参数。

详细介绍

Apple Contacts MCP

适用于 macOS 上 Apple Contacts 的 MCP 服务。

提供联系人访问功能,用于查询、搜索和解析收件人。发送消息前,先使用此服务将姓名解析为电话号码或电子邮件地址。

适用场景

  • 仅涉及联系人的工作流
  • 发送消息前验证收件人
  • 与一体化服务分开的联系人查询

功能

  • 列出和搜索联系人
  • 查询完整联系人详情
  • 解析消息收件人
  • 为上下文受限的客户端提供工具发现辅助功能 search_tools 和 get_tool_info
  • 创建、更新和删除联系人
  • 检测重复联系人并建议合并候选项(contacts_find_duplicates、contacts_suggest_merge_candidates)
  • 编辑带标签的电话号码和电子邮件方式
  • 目录资源和收件人检查提示词
  • 健康状态和权限检查:contacts_health、contacts_permission_guide、contacts_recheck_permissions

在这台 Mac 上安装

快速开始(uvx,从 PyPI 安装)

安装好 uv 后:

uvx apple-contacts-mcp

无需克隆,也无需管理虚拟环境。

从克隆的仓库安装
git clone https://github.com/JonathanRReed/Apple-MCPs.git
cd Apple-MCPs
uv sync --all-packages

此操作会构建一个工作区环境,将每个服务的入口点放入 .venv/bin(例如 .venv/bin/apple-contacts-mcp)。你也可以让 MCP 客户端指向 AppleContacts-MCP/start.sh;该脚本优先使用 uv run,并在不可用时回退到普通虚拟环境引导程序(需要 Python 3.11+)。

在 AI Agent 中安装

通用 MCP 客户端配置
{
  "mcpServers": {
    "apple-contacts": {
      "command": "uvx",
      "args": ["apple-contacts-mcp"],
      "env": {
        "APPLE_CONTACTS_MCP_SAFETY_MODE": "safe_manage"
      }
    }
  }
}

从克隆的仓库运行?将 /path/to/Apple-MCPs/AppleContacts-MCP/start.sh 设为命令,并将 args 留空。

Claude Code 示例
claude mcp add --transport stdio --scope user apple-contacts -- uvx apple-contacts-mcp

--scope user 会让所有项目都能使用此服务。若要通过仓库中的 .mcp.json 与单个仓库共享,请使用 --scope project。

安全模式

  • safe_readonly
  • safe_manage
  • full_access

传输方式

默认且推荐使用 stdio 传输方式。设置 APPLE_CONTACTS_MCP_TRANSPORT=streamable-http(可选设置 APPLE_CONTACTS_MCP_HOST 和 APPLE_CONTACTS_MCP_PORT)即可改用 Streamable HTTP 服务。

搜索行为

姓名和组织搜索使用 Contacts.app 的筛选查询。姓名无匹配时会返回空结果,不会扫描整个通讯录。对于包含数字/标点基底的电话号码查询(包括可识别的分机后缀 ext、ext.、extension、extn.、x、# 和 ;ext=,以及可选的 tel: 前缀),会保留分页目录回退机制,以匹配联系方式值。包含 @ 的电子邮件查询也会保留该机制。分机匹配会将基底号码和分机分开,要求分机完全匹配,并允许匹配本地号码后缀。收件人解析会选择匹配的电话方式,并拒绝存在多个不同匹配方式的情况。

Contacts 返回的字面控制字符和复杂表情符号会在 Python 端解码,且文本内容保持不变。

macOS 权限

  • 需要通讯录访问权限
  • contacts_health 会读取原生授权状态,不会请求访问权限,也不会读取联系人。permission_status 会区分已授权、未知、已拒绝和检查失败。AppleScript 后端会报告授权状态未知,且不会发送 Apple 事件。明确的 Contacts 操作仍会执行其权限检查。

启动检查清单

  • 将 uvx apple-contacts-mcp(或克隆仓库中的 AppleContacts-MCP/start.sh)添加到 MCP 客户端
  • 重新加载或重新连接客户端,使 Contacts 工具集加载到上下文中
  • 首先调用 contacts_health
  • 如果通讯录访问受阻,调用 contacts_permission_guide
  • 更改 macOS 权限后,调用 contacts_recheck_permissions

提示词说明

  • tools/list 会返回完整的 Contacts 工具集。上下文受限的客户端可以先使用 search_tools,然后对所需的 Contacts 工具使用 get_tool_info。
  • 用户提供人物姓名时,在执行任何 iMessage 或 Mail 操作之前,先运行 Contacts。
  • 执行操作前,先按姓名、电话号码或电子邮件地址查找联系人。
  • 如果匹配到多个联系人,请先确认目标对象,再发送消息。
  • 更新联系人时,只有在打算替换相应类型的全部信息时,才传入明确的 phones 或 emails 数组。
  • 通过 Messages 或 Mail 联系某人之前,请确保该联系人保留了带标签的电话号码或电子邮件地址。

相关

原生 Contacts 访问

Contacts 默认使用 CNContactStore,因此读写操作无需等待 Contacts.app。首次使用时,会通过 Xcode Command Line Tools 编译打包的 Swift 助手,并在 ~/.apple-mcps/build 下缓存经过签名的应用包 Apple Contacts MCP Helper。设置 APPLE_CONTACTS_MCP_HELPER_BUILD_DIR 可指定其他构建目录。如果运行 MCP 服务的应用已获得 Contacts 访问权限,则会使用该权限;否则,macOS 会询问是否允许 Apple Contacts MCP Helper 访问 Contacts。请参阅日历、提醒事项和通讯录:macOS 会向谁请求权限。

设置 APPLE_CONTACTS_MCP_BACKEND=applescript 可使用先前的后端。原生后端会直接返回名字和姓氏,并保留电话/电子邮件更新语义:省略一个集合即可保留它,传入 [] 则会清除它。联系人备注需要单独的 macOS 权限;原生写入前会拒绝非空的 note。AppleScript 后端仍可用于备注。

该助手还会通过一次遍历通讯录,针对 lookup_handles(电话号码或电子邮件地址组成的 JSON 数组)返回可能归属这些信息的联系人。与其他命令不同,它不会请求访问权限:未获授权时会返回 PERMISSION_DENIED 或 AUTHORIZATION_UNKNOWN。AppleContactsBridge.lookup_handles 会对这些结果应用 phone_matching 的精确归属规则;只有在助手已构建时,Apple-Tools-MCP 才会用它为 Messages 联系方式标注姓名。它不会作为 MCP 工具公开。

原生助手会将不可变的源代码快照编译为一个应用包,并以完整的 SHA-256 哈希值命名。编译期间如果源代码发生变化,构建会被拒绝;并发构建也无法替换已安装的应用包。不同版本的源代码会保留各自的可执行文件,但使用相同的应用包标识符。该助手采用临时签名,因此源代码更新后,macOS 可能会再次询问一次。

原生助手改编自 Jaume Puig 在 JaumeAP/Apple-MCPs 中的工作。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。