macOS命令行工具

通过命令行读取和写入macOS原生数据(日历、提醒、联系人、邮件等),支持结构化JSON输出和AI代理集成。

  • by feedthejim
  • Swift
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 feedthejim/macos-kit

使用说明

麦基特

来自命令行的本机macOS数据。使用带有结构化JSON输出的Apple原生框架(EventKit、contacts、ScriptingBridge)读写日历、提醒、联系人、邮件等。包括用于AI代理集成的MCP服务器。

没有啊。只是快速,原生Swift。

安装

发布:

tmp=$(mktemp -d) && curl -fsSL https://github.com/feedthejim/macos-kit/releases/latest/download/mackit-macos-universal.tar.gz | tar xz -C "$tmp" && "$tmp/install.sh"

来源:

git clone https://github.com/feedthejim/macos-kit.git && cd macos-kit && scripts/install-mackit.sh

安装人员放置 MacKit.app 在 ~/Applications 和 mackit 在 ~/.local/bin。权限敏感命令会自动启动应用程序。

用法

日历

# Today's remaining events
mackit cal

# Tomorrow / this week
mackit cal tomorrow
mackit cal week

# Next event + meeting URL
mackit cal next
open $(mackit cal next --url)

# Free time slots
mackit cal free --date tomorrow --duration 30m
mackit cal free --work-start 8am --work-end 6pm --buffer 15m -c Work

# Filter by calendar and date range
mackit cal -c Work --from monday --to friday

# Create event
mackit cal create "Coffee with Sarah" --date tomorrow --from 3pm --to 3:30pm
mackit cal create "Design Review" --date friday --from 2pm --to 3pm -c Work --location "Room 4"

# Reschedule
mackit cal move <event-id> --date friday --from 3pm

# Update / delete
mackit cal update <event-id> --notes "Bring laptop"
mackit cal update <event-id> --clear-location
mackit cal update <event-id> --timed --from 9am --to 10am
mackit cal delete <event-id> --yes
mackit cal delete <event-id> --scope future --yes

# JSON with field selection
mackit cal --json title,startDate,meetingURL

提醒事项

# List (incomplete by default)
mackit rem
mackit rem -l Shopping
mackit rem overdue

# Add
mackit rem add "Buy milk" --list Shopping
mackit rem add "Review PR" --list Work --due tomorrow --priority high

# Complete (fuzzy title match)
mackit rem done "milk"

# Move between lists
mackit rem move "Buy eggs" --to Groceries

# Delete
mackit rem delete <id> --yes

联系人

mackit contacts search "John"
mackit contacts search "John" --email        # Just emails, one per line
mackit contacts search "John" --phone        # Just phones
mackit contacts birthdays --days 7

邮件

# List recent messages (default: INBOX)
mackit mail
mackit mail list --unread
mackit mail list -m "Sent Mail" -a Gmail -n 5

# Read a message
mackit mail read <id> -m INBOX -a iCloud

# Search
mackit mail search "invoice"
mackit mail search "meeting" -a Gmail -n 10
mackit mail search "invoice" --sender stripe --from monday --to today

# Pagination and thread grouping
mackit mail list -n 25 --offset 25
mackit mail list --group-threads

# Attachment metadata without downloading files
mackit mail list -n 5 --json id,subject,attachmentCount,attachments

# Mailboxes and accounts
mackit mail mailboxes
mackit mail mailboxes -a iCloud
mackit mail accounts

# Send
mackit mail send --to bob@test.com --subject "Hello" --body "Hi Bob"
mackit mail send --to a@test.com --cc b@test.com --subject "FYI" --body "See this"

# Mark read/unread
mackit mail mark-read <id> -a iCloud
mackit mail mark-unread <id> -a iCloud

# Move / delete
mackit mail move <id> --to Archive -a iCloud
mackit mail delete <id> -a iCloud --yes

# JSON with field selection
mackit mail list --json id,subject,sender,isRead

列表/搜索JSON输出包括分页元数据。已选择字段 --json 输出仍然是shell管道的数组。部分帐户失败是 报告为警告,同时保留成功的帐户结果。

专注/请勿打扰

mackit focus
mackit focus --quiet && echo "DND is on"     # Exit code for scripting

诊断

mackit doctor
MACKIT_TIMEOUT=90 mackit mail search "large query"

托管命令默认为45秒的截止日期。 MACKIT_TIMEOUT 接受5至 300秒。主机限制并发性和输出,取消断开连接的客户端, 并在中记录仅元数据诊断 ~/Library/Application Support/MacKit/host.jsonl.

通知

mackit notify "Build Complete" "All tests passed"
mackit notify "Deploy" "v2.1.0" --subtitle "us-east-1" --sound default

MCP 服务器

mackit包括一个内置的MCP服务器,用于AI代理集成(Claude Code、Claude Desktop等)。

设置

Claude 代码 (项目 .mcp.json):

{
  "mcpServers": {
    "mackit": {
      "command": "mackit",
      "args": ["mcp"]
    }
  }
}

Claude 桌面版 (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "mackit": {
      "command": "/Users/YOUR_USERNAME/.local/bin/mackit",
      "args": ["mcp"]
    }
  }
}

可用的MCP工具

工具 说明
calendar_list 按日期范围、日历筛选器列出事件
calendar_next 带有会议URL的下一个即将举行的活动
calendar_free 用于日程安排的空闲时间段
calendar_calendars 列出所有日历
calendar_create 创建日历事件
calendar_delete 删除事件
calendar_update 更新事件字段
calendar_move 重新安排活动
reminders_list 按列表、状态、到期日期列出提醒
reminders_overdue 所有逾期提醒
reminders_lists 列出所有带有计数的提醒列表
reminders_add 创建提醒
reminders_complete 按标题匹配或ID填写
reminders_delete 删除提醒
reminders_move 移动到另一个列表
contacts_search 按姓名、电子邮件、电话搜索
contacts_birthdays 即将到来的生日
mail_list 使用过滤器列出邮件,紧凑视图
mail_search 按关键字搜索邮件
mail_read 阅读完整消息内容
mail_mailboxes 列出具有未读计数的邮箱
mail_accounts 列出邮件帐户
mail_send 发送电子邮件
mail_mark_read 将邮件标记为已读
mail_mark_unread 将邮件标记为未读
mail_move 将邮件移动到另一个邮箱
mail_delete 删除消息
focus_status 检查聚焦/DND模式
notify_send 发送macOS通知

输出格式

自动检测:终端中的文本,管道传输时的JSON。覆盖 --format json|text|table.

JSON字段选择 (比如 gh --json):

mackit cal --json title,startDate,meetingURL
mackit contacts search "John" --json givenName,emailAddresses

权限

MacKit.app 拥有稳定的macOS权限标识。CLI和MCP服务器 通过仅限用户的本地套接字连接到它,因此访问不依赖于哪个 终端或代理启动 mackit.

命令 权限
cal 日历
rem 提醒事项
contacts 联系人
notify 通知
mail 自动化(Mail.app)
focus 没有
mcp 全部(按需)

建筑学

mackit CLI / MCP client
          │
          │ private Unix socket
          ▼
      MacKit.app
          │
          ▼
Calendar, Reminders, Contacts, Mail, Notifications

插座处于模式 600 主机验证客户端是否具有相同的用户 身份证件。 MacKitCore 仍然基于协议,并且可以使用模拟进行独立测试。

需求

  • macOS 13(Ventura)或更高版本
  • Swift 6.0+

许可证

麻省理工学院