Python Apple MCP

by jxnl

Integrations

  • Enables interaction with Apple's ecosystem through AppleScript, allowing access to native macOS applications and their data.

  • Project is hosted on GitHub and supports contribution through GitHub's pull request workflow.

  • Allows sending, reading, and scheduling iMessages through the Messages application, including accessing conversation history.

Python Apple MCP(模型上下文协议)

服务器的 Python 实现,使用 FastMCP 处理与 macOS 应用程序(如联系人、备忘录、邮件、消息、提醒、日历和地图)的交互。

特征

  • 通过 AppleScript 与 macOS 原生应用程序交互
  • 异步操作以获得更好的性能
  • 全面的错误处理
  • 使用 Pydantic 模型的类型安全接口
  • 广泛的测试覆盖范围
  • 模块化设计,易于扩展

支持的应用程序

  • 联系方式
  • 笔记
  • 邮件
  • 消息
  • 提醒事项
  • 日历
  • 地图

安装

  1. 克隆存储库:
git clone https://github.com/jxnl/python-apple-mcp.git cd python-apple-mcp
  1. 创建虚拟环境:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
  1. 安装依赖项:
pip install -r requirements.txt
  1. 安装测试依赖项(可选):
pip install -r requirements-test.txt

用法

基本示例

from apple_mcp import FastMCP, Context # Initialize FastMCP server mcp = FastMCP("Apple MCP") # Use the tools @mcp.tool() def find_contact(name: str) -> List[Contact]: """Search for contacts by name""" # Implementation here pass # Run the server if __name__ == "__main__": mcp.run()

使用单独的模块

from utils.contacts import ContactsModule from utils.notes import NotesModule # Initialize modules contacts = ContactsModule() notes = NotesModule() # Use the modules async def main(): # Find a contact contact = await contacts.find_contact("John") # Create a note await notes.create_note( title="Meeting Notes", body="Discussion points...", folder_name="Work" ) # Run the async code import asyncio asyncio.run(main())

测试

运行测试套件:

pytest

运行覆盖测试:

pytest --cov=utils tests/

运行特定的测试文件:

pytest tests/test_contacts.py

API 文档

联系人模块

  • find_contact(name: str) -> List[Contact] :按姓名搜索联系人
  • get_all_contacts() -> List[Contact] :获取所有联系人
  • create_contact(name: str, phones: List[str]) -> Contact : 创建新联系人

注释模块

  • find_note(query: str) -> List[Note] : 搜索注释
  • create_note(title: str, body: str, folder_name: str) -> Note : 创建新的注释
  • get_all_notes() -> List[Note] : 获取所有注释

邮件模块

  • send_email(to: str, subject: str, body: str) -> str :发送电子邮件
  • search_emails(query: str) -> List[Email] : 搜索电子邮件
  • get_unread_mails() -> List[Email] : 获取未读邮件

消息模块

  • send_message(to: str, content: str) -> bool : 发送 iMessage
  • read_messages(phone_number: str) -> List[Message] : 阅读消息
  • schedule_message(to: str, content: str, scheduled_time: str) -> Dict : 安排消息

提醒模块

  • create_reminder(name: str, list_name: str, notes: str, due_date: str) -> Dict : 创建提醒
  • search_reminders(query: str) -> List[Dict] : 搜索提醒
  • get_all_reminders() -> List[Dict] : 获取所有提醒

日历模块

  • create_event(title: str, start_date: str, end_date: str, location: str, notes: str) -> Dict : 创建事件
  • search_events(query: str) -> List[Dict] : 搜索事件
  • get_events() -> List[Dict] :获取所有事件

地图模块

  • search_locations(query: str) -> List[Location] : 搜索位置
  • get_directions(from_address: str, to_address: str, transport_type: str) -> str :获取路线
  • save_location(name: str, address: str) -> Dict : 将位置保存到收藏夹

贡献

  1. 分叉存储库
  2. 创建功能分支
  3. 提交你的更改
  4. 推送到分支
  5. 创建拉取请求

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

-
security - not tested
F
license - not found
-
quality - not tested

一个 Python 服务器,可通过 AppleScript 与 macOS 原生应用程序(联系人、备忘录、邮件、信息、提醒事项、日历和地图)进行交互,具有异步操作和类型安全接口。

  1. Features
    1. Supported Applications
      1. Installation
        1. Usage
          1. Basic Example
          2. Using Individual Modules
        2. Testing
          1. API Documentation
            1. Contacts Module
            2. Notes Module
            3. Mail Module
            4. Messages Module
            5. Reminders Module
            6. Calendar Module
            7. Maps Module
          2. Contributing
            1. License
              ID: 8rl8q84uwz