返回市场
python苹果mcp

python苹果mcp

作者:jxnl16 星标更新:2025-04-30

项目介绍

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

这是一个使用FastMCP处理与macOS应用程序(如联系人、笔记、邮件、信息、提醒事项、日历和地图)交互的Python实现。

特性

  • 通过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  # 在Windows上:venv\Scripts\activate
  1. 安装依赖项:
pip install -r requirements.txt
  1. 安装测试依赖项(可选):
pip install -r requirements-test.txt

使用

基本示例

from apple_mcp import FastMCP, Context

# 初始化FastMCP服务器
mcp = FastMCP("Apple MCP")

# 使用工具
@mcp.tool()
def find_contact(name: str) -> List[Contact]:
    """按姓名搜索联系人"""
    # 实现细节
    pass

# 运行服务器
if __name__ == "__main__":
    mcp.run()

使用独立模块

from utils.contacts import ContactsModule
from utils.notes import NotesModule

# 初始化模块
contacts = ContactsModule()
notes = NotesModule()

# 使用模块
async def main():
    # 查找联系人
    contact = await contacts.find_contact("John")
    
    # 创建笔记
    await notes.create_note(
        title="会议记录",
        body="讨论要点...",
        folder_name="工作"
    )

# 运行异步代码
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文件。