Python Apple MCP (モデルコンテキストプロトコル)
FastMCP を使用して、連絡先、メモ、メール、メッセージ、リマインダー、カレンダー、マップなどの macOS アプリケーションとのやり取りを処理するサーバーの Python 実装。
特徴
- 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
: 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
: 場所をお気に入りに保存する
貢献
- リポジトリをフォークする
- 機能ブランチを作成する
- 変更をコミットする
- ブランチにプッシュする
- プルリクエストを作成する
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。