Python Apple MCP(模型上下文协议)
服务器的 Python 实现,使用 FastMCP 处理与 macOS 应用程序(如联系人、备忘录、邮件、消息、提醒、日历和地图)的交互。
特征
- 通过 AppleScript 与 macOS 原生应用程序交互
- 异步操作以获得更好的性能
- 全面的错误处理
- 使用 Pydantic 模型的类型安全接口
- 广泛的测试覆盖范围
- 模块化设计,易于扩展
支持的应用程序
安装
- 克隆存储库:
git clone https://github.com/jxnl/python-apple-mcp.git
cd python-apple-mcp
- 创建虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- 安装依赖项:
pip install -r requirements.txt
- 安装测试依赖项(可选):
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 --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
: 发送 iMessageread_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
: 将位置保存到收藏夹
贡献
- 分叉存储库
- 创建功能分支
- 提交你的更改
- 推送到分支
- 创建拉取请求
执照
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。