applescript-mcp MCP 服务器
一个模型上下文协议服务器,使 LLM 应用程序能够通过 AppleScript 与 macOS 交互。该服务器为 AI 应用程序提供标准化接口,用于控制系统功能、管理文件、处理通知等。
特征
🗓️ 日历管理(事件、提醒)
📋 剪贴板操作
🔍 Finder 集成
🔔 系统通知
⚙️ 系统控制(音量、暗模式、应用程序)
📟 iTerm 终端集成
📬 邮件(创建新电子邮件、列出电子邮件、获取电子邮件)
🔄 快捷方式自动化
💬 消息(列出聊天、获取消息、搜索消息、发送消息)
🗒️ 笔记(创建格式化笔记、列出笔记、搜索笔记)
📄 页面(创建文档)
计划功能
🧭 Safari(在 Safari 中打开、保存页面内容、获取选定的页面/标签)
✅ 提醒(创建、获取)
先决条件
macOS 10.15 或更高版本
Node.js 18 或更高版本
可用类别
日历
命令 | 描述 | 参数 |
| 创建日历事件 |
、
、
、
(可选) |
| 列出今天的活动 | 没有任何 |
示例
剪贴板
命令 | 描述 | 参数 |
| 复制到剪贴板 |
|
| 获取剪贴板内容 | 没有任何 |
| 清除剪贴板 | 没有任何 |
示例
发现者
命令 | 描述 | 参数 |
| 获取选定的文件 | 没有任何 |
| 搜索文件 |
,
(可选) |
| 预览文件 |
|
示例
通知
注意:发送通知需要您在系统设置>通知>脚本编辑器中启用通知。
命令 | 描述 | 参数 |
| 显示通知 |
、
、
(可选) |
| 切换 DND 模式 | 没有任何 |
示例
系统
命令 | 描述 | 参数 |
| 设置系统音量 |
(0-100) |
| 获取活动应用程序 | 没有任何 |
| 打开应用程序 |
|
| 关闭应用程序 |
、
(可选) |
| 切换暗模式 | 没有任何 |
示例
iTerm
命令 | 描述 | 参数 |
| 粘贴到 iTerm | 没有任何 |
| 执行命令 |
,
(可选) |
示例
快捷方式
命令 | 描述 | 参数 |
| 运行快捷方式 |
,
(可选) |
| 列出所有可用的快捷方式 |
(可选) |
示例
邮件
命令 | 描述 | 参数 |
| 在 Mail.app 中创建新电子邮件 |
、
、
|
| 列出邮箱中的电子邮件 |
(可选)、
(可选)、
(可选) |
| 通过搜索获取特定电子邮件 |
(可选)、
(可选)、
(可选)、
(可选)、
(可选)、
(可选)、
(可选) |
示例
消息
命令 | 描述 | 参数 |
| 列出可用的 iMessage 和 SMS 聊天 |
(可选,默认值:false) |
| 从“信息”应用获取信息 |
(可选,默认值:100) |
| 搜索包含特定文本的消息 |
、
(可选)、
(可选)、
(可选,默认值:50)、
(可选,默认值:30) |
| 打开“信息”应用,输入预填信息或自动发送 |
(必填)、
(可选)、
(可选,默认值:false) |
示例
笔记
命令 | 描述 | 参数 |
| 创建具有类似 markdown 格式的笔记 |
、
、
(可选格式选项) |
| 创建包含直接 HTML 内容的笔记 |
,
|
| 列出笔记(可选,来自特定文件夹) |
(可选) |
| 根据标题获取特定笔记 |
、
(可选) |
| 搜索包含特定文本的笔记 |
、
(可选)、
(可选,默认值:5)、
(可选,默认值:true) |
示例
页面
命令 | 描述 | 参数 |
| 使用纯文本创建新的 Pages 文稿 |
|
示例
建筑学
applescript-mcp 服务器使用 TypeScript 构建,并遵循模块化架构:
核心组件
AppleScriptFramework (
framework.ts
):主服务器类,它:管理 MCP 协议通信
处理工具注册和执行
提供日志记录功能
执行 AppleScript 命令
类别(
src/categories/*.ts
):按功能组织的模块化脚本集合:每个类别包含相关脚本(例如日历、系统、笔记)
类别在
index.ts
中向框架注册
类型(
src/types/index.ts
):TypeScript 接口定义:ScriptDefinition
:单个脚本的结构ScriptCategory
:相关脚本的集合LogLevel
:标准日志记录级别FrameworkOptions
:配置选项
执行流程
客户端通过MCP协议发送工具请求
服务器识别适当的类别和脚本
脚本内容生成(静态或通过函数动态生成)
AppleScript 通过 macOS
osascript
命令执行结果返回给客户端
日志系统
该框架包括一个全面的日志系统:
记录到 stderr 和 MCP 日志协议
支持多种严重性级别(调试、信息、警告、错误等)
提供详细的执行信息以进行故障排除
发展
设置
添加新功能
1. 创建类别文件
创建src/categories/newcategory.ts
:
2.添加脚本
3. 注册类别
更新src/index.ts
:
高级脚本开发
对于更复杂的脚本,您可以:
使用动态脚本生成:
script: (args) => { // Process arguments and build script dynamically let scriptContent = `tell application "App"\n`; if (args.condition) { scriptContent += ` // Conditional logic\n`; } scriptContent += `end tell`; return scriptContent; }处理复杂数据:
// Example from Notes category function generateNoteHtml(args: any): string { // Process markdown-like syntax into HTML let processedContent = content; if (format.headings) { processedContent = processedContent.replace(/^# (.+)$/gm, '<h1>$1</h1>'); // ... } return processedContent; }
调试
使用 MCP 检查器
MCP Inspector 提供了一个用于测试和调试服务器的 Web 界面:
日志记录
通过设置环境变量启用调试日志记录:
示例配置
运行npm run build
后,将以下内容添加到您的mcp.json
文件:
常见问题
权限错误:检查系统偏好设置 > 安全和隐私 > 隐私 > 自动化
脚本失败:集成前直接在 Script Editor.app 中测试脚本
通信问题:检查 stdio 流是否被重定向
数据库访问:某些功能(如消息)需要完全磁盘访问权限
资源
贡献
分叉存储库
创建功能分支
提交你的更改
推送到分支
创建拉取请求
执照
MIT 许可证 - 详情请参阅许可证
local-only server
The server can only run on the client's local machine because it depends on local resources.
Tools
使 LLM 应用程序能够通过 AppleScript 与 macOS 交互。
Related MCP Servers
- AsecurityAlicenseAqualityEnables LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environmentLast updated -10633260MIT License
- AsecurityAlicenseAqualityFacilitates controlling Apple Music on macOS via AppleScript through MCP commands, allowing users to manage playback, search for tracks, and create playlists.Last updated -1059MIT License
- AsecurityFlicenseAqualityEnables interaction with lightning addresses and common lightning tools via your LLM, providing Lightning Network functionality through natural language.Last updated -3121
- AsecurityAlicenseAqualityA Model Context Protocol server that enables running AppleScript code to interact with Mac applications and system features including Notes, Calendar, Contacts, Messages, file management, and more.Last updated -1165367MIT License