Apple应用集成协议服务器

一套通过Model Context Protocol(MCP)为AI助手提供访问macOS原生Apple应用程序的服务器集合。

  • by griches
  • TypeScript
  • 本地部署
  • 130 星标
  • 更新于
在 GitHub 查看 griches/apple-mcp

使用说明

苹果MCP服务器

一套 模型上下文协议(MCP) 为人工智能助手提供在macOS上访问原生苹果应用程序的服务器。

服务器

服务器 NPM包 描述
苹果笔记 读取、创建、更新、移动和删除笔记和文件夹
Apple消息 读取消息历史记录、搜索对话和发送消息
苹果联系人 管理联系人、组和联系人详细信息
苹果邮件 读取、发送、搜索、标记和管理电子邮件
苹果提醒事项 创建、更新、完成和管理提醒和列表
苹果日历 创建、更新和管理日历事件
苹果地图 搜索位置、获取路线和图钉(仅限视觉——受苹果自动化支持的限制)

需求

  • macOS 13+
  • Node.js 18+(苹果信息为22+)
  • 全磁盘访问 授予您的终端应用程序(系统设置>隐私和安全>全磁盘访问)-读取消息数据库所需
  • 关联的Apple应用程序必须正在运行 对于基于AppleScript的服务器(Notes、Contacts、Mail、Messages、Maps),这些服务器通过AppleScript进行通信,因此应用程序需要打开。日历和提醒直接使用EventKit,不需要打开应用程序。

安全模式

所有服务器(仅限用户界面的Apple Maps除外)都支持两个可选的安全标志:

模式 标志 行为
正常 (默认) (无) 所有工具可用,无限制
只读 --read-only 破坏性/写入工具根本没有注册
确认 --confirm-destructive 破坏性工具需要 confirm: true 参数;如果没有它,它们会返回一个警告,要求人工智能先与用户核实

克劳德桌面版

{
  "mcpServers": {
    "apple-notes": {
      "command": "npx",
      "args": ["@griches/apple-notes-mcp", "--read-only"]
    },
    "apple-messages": {
      "command": "npx",
      "args": ["@griches/apple-messages-mcp", "--confirm-destructive"]
    }
  }
}

克劳德代码

claude mcp add apple-notes -- npx @griches/apple-notes-mcp --read-only
claude mcp add apple-messages -- npx @griches/apple-messages-mcp --confirm-destructive

服务器破坏性工具

服务器 破坏性工具
注意事项 delete_note, delete_folder
联系人 delete_contact, delete_group
提醒事项 delete_reminder, delete_list
日历 delete_event

安装

所有服务器都发布在 npm 在...之下 @griches 范围。无需克隆或构建--直接安装并运行 npx:

# Apple Notes
npx @griches/apple-notes-mcp

# Apple Messages
npx @griches/apple-messages-mcp

# Apple Contacts
npx @griches/apple-contacts-mcp

# Apple Reminders
npx @griches/apple-reminders-mcp

# Apple Calendar
npx @griches/apple-calendar-mcp

# Apple Maps
npx @griches/apple-maps-mcp

# Apple Mail
npx @griches/apple-mail-mcp

克劳德代码

claude mcp add apple-notes -- npx @griches/apple-notes-mcp
claude mcp add apple-messages -- npx @griches/apple-messages-mcp
claude mcp add apple-contacts -- npx @griches/apple-contacts-mcp
claude mcp add apple-reminders -- npx @griches/apple-reminders-mcp
claude mcp add apple-calendar -- npx @griches/apple-calendar-mcp
claude mcp add apple-maps -- npx @griches/apple-maps-mcp
claude mcp add apple-mail -- npx @griches/apple-mail-mcp

克劳德桌面版

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "apple-notes": {
      "command": "npx",
      "args": ["@griches/apple-notes-mcp"]
    },
    "apple-messages": {
      "command": "npx",
      "args": ["@griches/apple-messages-mcp"]
    },
    "apple-contacts": {
      "command": "npx",
      "args": ["@griches/apple-contacts-mcp"]
    },
    "apple-reminders": {
      "command": "npx",
      "args": ["@griches/apple-reminders-mcp"]
    },
    "apple-calendar": {
      "command": "npx",
      "args": ["@griches/apple-calendar-mcp"]
    },
    "apple-maps": {
      "command": "npx",
      "args": ["@griches/apple-maps-mcp"]
    },
    "apple-mail": {
      "command": "npx",
      "args": ["@griches/apple-mail-mcp"]
    }
  }
}

从源代码安装

如果您更喜欢从源代码构建:

git clone https://github.com/griches/apple-mcp.git
cd apple-mcp

# Apple Notes
cd notes && npm install && npm run build

# Apple Messages
cd ../messages && npm install && npm run build

# Apple Contacts
cd ../contacts && npm install && npm run build

# Apple Reminders
cd ../reminders && npm install && npm run build

# Apple Calendar
cd ../calendar && npm install && npm run build

# Apple Maps
cd ../maps && npm install && npm run build

# Apple Mail
cd ../mail && npm install && npm run build

然后配置您的MCP客户端以直接运行构建的文件:

{
  "mcpServers": {
    "apple-notes": {
      "command": "node",
      "args": ["/absolute/path/to/notes/build/index.js"]
    },
    "apple-messages": {
      "command": "node",
      "args": ["/absolute/path/to/messages/build/index.js"]
    },
    "apple-contacts": {
      "command": "node",
      "args": ["/absolute/path/to/contacts/build/index.js"]
    },
    "apple-reminders": {
      "command": "node",
      "args": ["/absolute/path/to/reminders/build/index.js"]
    },
    "apple-calendar": {
      "command": "node",
      "args": ["/absolute/path/to/calendar/build/index.js"]
    },
    "apple-maps": {
      "command": "node",
      "args": ["/absolute/path/to/maps/build/index.js"]
    },
    "apple-mail": {
      "command": "node",
      "args": ["/absolute/path/to/mail/build/index.js"]
    }
  }
}

苹果笔记

通过AppleScript与Apple Notes交互的MCP服务器。

工具

工具 说明
list_folders 列出Apple Notes中的所有文件夹
create_folder 创建新文件夹
list_notes 列出文件夹中的所有笔记
get_note 按标题获取笔记的完整内容
create_note 在文件夹中创建新笔记(HTML正文)
update_note 更新现有注释的正文
move_note 将笔记从一个文件夹移动到另一个文件夹
append_to_note 将HTML内容附加到现有注释中
delete_note 删除注释
delete_folder 删除文件夹及其所有笔记
search_notes 按标题和正文内容中的关键字搜索笔记

使用示例

  • “列出我的Apple Notes文件夹”
  • “获取我的购物单”
  • “在我的工作文件夹中创建一个名为会议笔记的笔记”
  • “在我的笔记中搜索食谱”

Apple消息

从macOS messages数据库(SQLite)读取消息并通过AppleScript发送消息的MCP服务器。

工具

工具 说明
list_chats 列出最近的聊天记录并预览最后一条消息
get_chat_messages 获取特定聊天的消息历史记录(可选择日期范围过滤)
search_messages 按文本内容搜索邮件
send_message 发送iMessage或短信
get_chat_participants 获取聊天参与者

权限

  • 读取消息:终端应用程序需要完全磁盘访问才能读取 ~/Library/Messages/chat.db
  • 发送消息:macOS将提示您允许您的终端应用程序通过AppleScript控制Messages应用程序

使用示例

  • “显示我最近的消息”
  • “搜索我的消息以确认航班”
  • “发送一条消息至+1234567890,说我正在路上”

苹果联系人

通过AppleScript与Apple联系人交互的MCP服务器。

工具

工具 说明
list_groups 列出Apple联系人中的所有组
list_contacts 列出所有联系人,可选择按组筛选
get_contact 获取联系人的完整详细信息(电子邮件、电话、地址等)
search_contacts 按姓名搜索联系人
create_contact 使用可选的电子邮件、电话、组织创建新联系人
update_contact 更新现有联系人的详细信息
delete_contact 按姓名删除联系人
create_group 创建新组
delete_group 删除联系人组
add_contact_to_group 将联系人添加到组
remove_contact_from_group 从组中删除联系人

使用示例

  • “列出我的所有联系人”
  • “查找名为John的联系人”
  • “获取简·史密斯的详细信息”
  • “为Acme Corp的Bob Jones创建联系人”

苹果提醒事项

通过EventKit与Apple Reminders交互的MCP服务器——快速、可靠,不依赖于打开的提醒应用程序。

工具

工具 说明
list_lists 列出所有提醒列表
create_list 创建新的提醒列表
list_reminders 在列表中列出带有截止日期的提醒(可选择包括已完成的提醒)
get_reminder 按姓名或id获取提醒的完整详细信息
create_reminder 创建具有可选截止日期、注释和优先级的新提醒
update_reminder 更新现有提醒的详细信息(按姓名或id)
complete_reminder 将提醒标记为已完成(按姓名或id)
uncomplete_reminder 将已完成的提醒标记为不完整(按姓名或id)
delete_reminder 删除提醒(按姓名或id)
delete_list 删除提醒列表及其所有提醒
search_reminders 在列表中按名称搜索提醒

使用示例

  • “显示我的提醒列表”
  • “在我的购物清单中列出提醒”
  • “在我的杂货清单中创建购买牛奶的提醒”
  • “将牙医预约提醒标记为已完成”

苹果日历

通过EventKit与Apple Calendar交互的MCP服务器——快速、可靠,不依赖于打开的日历应用程序进行读取。写入操作(创建、更新、删除)使用AppleScript。

权限

  • 日历访问:macOS将在服务器首次运行时提示您授予日历访问权限(系统设置>隐私和安全>日历)
  • 创建/更新/删除事件:macOS将提示您允许终端应用程序通过AppleScript控制日历应用程序

工具

工具 说明
list_calendars 列出所有日历
list_all_events 列出日期范围内所有日历中的事件
list_events 列出特定日历中日期范围内的事件
get_event 按摘要/标题获取事件的完整详细信息,包括警报
create_event 创建一个包含日期、时间、位置、描述和可选警报的新事件
update_event 更新现有事件的详细信息,包括警报
delete_event 按摘要/标题删除事件
search_events 在日历中按摘要/标题搜索事件

使用示例

  • “列出我的日历”
  • “在我的工作日历中显示下周的事件”
  • “在我的工作日历中创建明天下午2点的会议”
  • “在周五上午10点预约牙医,并在2小时前发出警报”
  • “为我的Team Standup活动添加30分钟提醒”
  • “搜索关于站立的事件”

苹果地图

使用地图URL方案与苹果地图交互的MCP服务器。

注: 与其他苹果应用程序相比,苹果地图的AppleScript/自动化词典非常有限。不支持通过编程方式从地图中读回搜索结果、路线详细信息或位置数据。因此,这些工具会使用请求的查询打开Apple Maps,但无法向代理返回结构化数据(例如地址、坐标、距离)。结果是可视化的——你会在地图应用程序中看到它们。

工具

工具 说明
search_location 在Apple Maps中搜索位置
get_directions 获取两个地点之间的路线(开车、步行或公交)
drop_pin 在特定坐标处放下一根针
open_address 在Apple Maps中打开特定地址
save_to_favorites 在“地图”中打开一个位置,以便将其另存为收藏夹

使用示例

  • “搜索时代广场附近的咖啡店”
  • “获取从中央公园到大都会博物馆的步行路线”
  • “在地图上显示库比蒂诺苹果公园路1号”
  • 在48.8584、2.2945处放下一根针

苹果邮件

通过AppleScript与Apple Mail交互的MCP服务器。

工具

工具 说明
list_mailboxes 列出具有未读计数的帐户中的所有邮箱
list_messages 列出邮箱中最近的邮件,可选择仅筛选为未读
get_message 通过ID获取电子邮件的完整内容
search_messages 在邮箱中按主题或发件人搜索电子邮件
send_email 发送带有可选CC/BCC的电子邮件(支持多个收件人)
get_unread_count 获取邮箱或所有邮箱的未读计数
move_message 将电子邮件移动到其他邮箱
mark_read 将电子邮件标记为已读或未读
delete_message 删除电子邮件(移至垃圾箱)
flag_message 标记或取消标记电子邮件

使用示例

  • “我有多少封未读邮件?”
  • “在收件箱中显示我最近的电子邮件”
  • “在收件箱中显示我的未读电子邮件”
  • “在我的电子邮件中搜索发票”
  • “发送电子邮件至bob@example.com关于会议”

发展

每个服务器都是一个独立的TypeScript项目,位于自己的目录中。

# Run tests for Notes
cd notes
npm test

# Run tests for Messages
cd messages
npm test

许可证

麻省理工学院