使用说明
苹果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
许可证
麻省理工学院