macOS'ta Apple Reminders ile etkileşim kurmak için bir MCP sunucusu.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"fradser-mcp-server-apple-events": {
"command": "node",
"args": [
"~/.mcp/mcp-server-apple-events/index.js"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/FradSer/mcp-server-apple-events.git ~/.mcp/mcp-server-apple-events
cd ~/.mcp/mcp-server-apple-events English | 简体中文
macOS üzerinde Apple Reminders ve Calendar ile yerel entegrasyon sağlayan bir Model Context Protocol (MCP) sunucusu. Bu sunucu, Apple Reminders ve Calendar Events'lerle standartlaştırılmış bir arayüz aracılığıyla kapsamlı yönetim yetenekleri sunarak etkileşim kurmanızı sağlar.
[!NOTE] Geleceğe bakış: event — macOS'ta Apple Reminders ve Calendar için saf Swift CLI.
Scripting, otomasyon ve doğrudan terminal kullanımı için, artık bağımsız
eventCLI'ı öneriyoruz. Bu sunucunun bugün kullandığı aynı EventKit tarafından desteklenen reminder/calendar/list/subtask/tag işlemlerini ortaya koyan ilk sınıf Markdown ve JSON çıktısı içerir.mcp-server-apple-events'in gelecek sürümleri, her iki proje de tek, iyi test edilmiş bir Swift uygulamasını paylaşabilmesi için, bundledEventKitCLIbinary yerineeventCLI'a bağlı olması planlıyor.
Apple, Reminders ve Calendar izinlerini write-only ve full-access kapsamlarına ayrıldı. Swift bridge, Claude'un erişimi onayladığında hem veri okuyup yazabilmesi için aşağıdaki gizlilik anahtarlarını bildirir:
NSRemindersUsageDescriptionNSRemindersFullAccessUsageDescriptionNSRemindersWriteOnlyAccessUsageDescriptionNSCalendarsUsageDescriptionNSCalendarsFullAccessUsageDescriptionNSCalendarsWriteOnlyAccessUsageDescriptionCLI bir notDetermined yetkilendirme durumu algıladığında, requestFullAccessToReminders / requestFullAccessToEvents çağırır; bu da macOS'u doğru istemi göstermesini tetikler. OS izinleri takip etmeyi kaybederse, ./check-permissions.sh çalıştırarak iletişim kutularını yeniden açın.
Bir Claude araç çağrısı yine de bir izin hatasıyla karşılaşırsa, Node.js katmanı otomatik olarak minimal bir AppleScript (osascript -e 'tell application "Reminders" …') çalıştırarak iletişim kutusunu görünür hale getirir ve ardından Swift CLI'ı bir kez yeniden dener.
Failed to read calendar events görürseniz, Takvim'in Full Calendar Access olarak ayarlandığını doğrulayın:
System Settings > Privacy & Security > Calendars açın./check-permissions.sh çalıştırabilirsiniz (artık Reminders ve Calendars erişimini doğrular).
Doğrulama komutu
pnpm test -- src/swift/Info.plist.test.ts
Test paketi, binary'i göndermeden önce tüm gerekli kullanım açıklama dizelerinin mevcut olduğundan emin olur.
could not build module 'Foundation' Sorunlarını Gidermepnpm build başarısız olursa could not build module 'Foundation' ile (veya SDK is not supported by the compiler), Swift araç zinciri macOS 26 SDK'sının gerektirdiğinden daha eski. macOS 26+ SDK, Swift 6.3 veya daha yeni gerektiren bir Foundation.swiftinterface ile gelir; ilk macOS 26 noktası sürümleriyle gelen Command Line Tools, Swift 6.2.x içerir ve bunu ayrıştıramaz. issue #85 bölümüne bakın.
pnpm build:swift artık bu uyuşmazlığı tespit eder ve aynı çözümü yazdırır, ancak manuel olarak çarparsanız:
softwareupdate --list
sudo softwareupdate -i "Command Line Tools for Xcode-<latest>"
xcode-select işaretçisini tam Xcode'a ayarlayın:sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
Şu şekilde doğrulayın:
xcrun swiftc --version # Apple Swift sürümü 6.3 veya daha yeni bildirilmeli
xcrun --show-sdk-version # macOS ana sürümünüzle eşleşmeli
Sunucuyu npx kullanarak doğrudan çalıştırabilirsiniz:
npx mcp-server-apple-events
Cursor'u açın
Cursor ayarlarını açın
Kenar çubuğunda "MCP" seçeneğini tıklayın
"Add new global MCP server" tıklayın
Sunucuyu aşağıdaki ayarlarla yapılandırın:
{
"mcpServers": {
"apple-reminders": {
"command": "npx",
"args": ["-y", "mcp-server-apple-events"]
}
}
}
stdioapple-remindersmcp-server-apple-eventsApple Events MCP sunucusunu tanıması için Claude Desktop'u yapılandırmanız gerekir. Yapılandırmaya erişmenin iki yolu vardır:
claude_desktop_config.json dosyasını açmak için Edit Config düğmesine tıklayınmacOS için:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows için:
code %APPDATA%\Claude\claude_desktop_config.json
claude_desktop_config.json dosyasına aşağıdaki yapılandırmayı ekleyin:
Seçenek A: npx Kullanma (önerilir)
{
"mcpServers": {
"apple-reminders": {
"command": "npx",
"args": ["-y", "mcp-server-apple-events"]
}
}
}
Seçenek B: Yerel derleme kullanma
Projeyi yerel olarak derlediyseniz, dist/index.js yoluna node kullanın:
{
"mcpServers": {
"apple-reminders": {
"command": "node",
"args": ["/absolute/path/to/mcp-server-apple-events/dist/index.js"]
}
}
}
Yerel MCP sunucuları bağlama hakkında daha fazla bilgi için resmi MCP belgelerine bakın.
Değişikliklerin etkili olması için:
Yapılandırıldıktan sonra, Claude'dan Apple Reminders'ınızla etkileşim kurmasını isteyebilirsiniz. İşte bazı örnek istemler:
"Buy groceries" reminderi yarın saat 17:00 için oluştur.
"Call mom" reminderi ekle, not ekle "Ask about weekend plans".
"Work" listemde "Submit report" reminderi yarları cuma günü için oluştur.
URL ile reminder oluştur "Check this website: https://google.com".
"Finish quarterly report" reminderi cuma günü için yüksek öncelik ile oluştur.
"Call client back" reminderi bugün için acil yüksek öncelik ile ekle.
"Review documents" reminderi orta öncelik ile oluştur.
Saat 9'da "Take medication" reminderi günlük oluştur.
Pazartesi günü "Team standup meeting" reminderi haftalık ekle.
"Pay rent" reminderi ayda bir 1'inde oluştur.
15 Mart'ta vergi dosyası açmak için yıllık reminder ayarla.
Süpermarkete vardığımda "Buy milk" hatırlatması yap.
Evime geldiğimde "Check mailbox" reminderi oluştur.
Ofisten ayrılırken "Submit timesheet" reminderi ekle.
work ve urgent etiketleriyle "Review PR" reminderi oluştur.
personal ve shopping etiketleriyle "Buy birthday gift" reminderi ekle.
Etiketler ile reminder oluştur: project-alpha, backend, review.
Alt görevlerle "Grocery shopping" reminderi oluştur: milk, eggs, bread, butter.
Kontrol listesi öğeleriyle "Pack for trip" reminderi ekle: passport, charger, clothes, toiletries.
Alt görevlerle "Sprint planning" oluştur: review backlog, estimate stories, assign tasks.
"Grocery shopping" reminderi için alt görevleri göster.
"milk" alt görevini tamamlandı olarak işaretle.
"cheese" alt görevi ekleme yapı reminderi için ekle.
Packing listem reminderi'ndeki alt görevleri yeniden sırala.
Tüm yüksek öncelikli reminders'ı göster.
"work" etiketi ile etiketlenen reminders göster.
Yalnızca tekrarlayan reminders göster.
Konum tabanlı reminders bulunuz.
Tamamlanmamış alt görevler içeren reminders göster.
"Buy groceries" reminderi başlığını "Buy organic groceries" olarak güncelle.
"Call mom" reminderi bugün saat 18:00'e ayarla.
"Submit report" reminderi güncelleyin ve tamamlandı olarak işaretleyin.
"Buy groceries" reminderi notlarını "Don't forget milk and eggs" olarak değiştir.
"Finish report" reminderi'nde önceliği yüksek olarak ayarla.
"Review PR" reminderi'ne "urgent" etiketi ekle.
Tüm reminders'ımı göster.
"Shopping" listemden reminders'ı listele.
Tamamlanmış reminders'ımı göster.
Tüm reminder listelerimi göster.
"Work" listemden reminders göster.
Sunucu şunları yapacaktır:
Sunucu, MCP ListPrompts ve GetPrompt uç noktaları aracılığıyla ortaya konan birleştirilmiş bir istem kaydıyla birlikte gelir. Her şablon, aşağı akış asistanlarının kırılgan serbest biçim örnekleri yerine öngörülebilir iskeleler alması için bir misyon, bağlam girdileri, numaralandırılmış süreç, kısıtlamalar, çıktı biçimi ve kalite çubuğu paylaşır.
today_focus (bugün en çok başarmak istediğiniz şey) girdisi, öncelik işini kurtarma zamanıyla dengeleyen aynı gün yürütme planı oluşturur. Akıllı görev kümelemesi, odak bloğu planlama, otomatik reminder listesi organizasyonu ve birçok today due reminders sabit yuvaları ihtiyaç olduğunda takvim zaman bloklarını otomatik oluşturma destekler. Hızlı Kazanımlar, her reminder'ın due zaman damgasında biten "Focus Sprint — [Outcome]" 15 dakikalık tutmaları olur, Standard görevler aynı due zaman penceresine sabitlenen 30, 45 veya 60 dakikalık olaylara eşlenir.task_idea (yapmak istediğiniz şeyin kısa açıklaması) en uygun şekilde planlanmış reminder yapısı oluşturur.review_focus (örneğin gecikmeli veya liste adı) mevcut reminders'ı denetleyip optimize etmek için.user_ideas (bu hafta başarmak istediğiniz düşünceler ve fikirler) mevcut listelerle bağlantılı zaman bloklarıyla Pazartesi'den Pazar'a sıfırlamaya kılavuzluk eder.pnpm test -- src/server/prompts.test.ts çalıştırın.Bu sunucu artık Apple Reminders ve Calendar alanlarını yansıtan hizmet kapsamlı MCP araçları ortaya koymaktadır. İşlenmek istediğiniz kaynakla eşleşen tanımlayıcıyı kullanın:
Araç Adı: reminders_tasks
Öncelik, alarmlar, tekrarlama kuralları, başlangıç/due/tamamlanma tarihleri, konum tetikleyicileri, etiketler ve alt görevler dahil olmak üzere tam CRUD desteğiyle bireysel reminder görevlerini yönetir.
Eylemler: read, create, update, delete
Ana İşleyici Fonksiyonları:
handleReadReminders() - Filtreleme seçenekleriyle reminders'ı okuhandleCreateReminder() - Yeni reminders oluşturhandleUpdateReminder() - Mevcut reminders'ı güncellehandleDeleteReminder() - Reminders silRead Eylemi (action: "read"):
id (isteğe bağlı): Okumak için belirli reminder'ın benzersiz tanımlayıcısıfilterList (isteğe bağlı): Gösterilecek reminder listesinin adıshowCompleted (isteğe bağlı): Tamamlanmış reminders'ı dahil et (varsayılan: false)search (isteğe bağlı): Reminders'ı başlık veya içeriğe göre filtrelemek için arama terimidueWithin (isteğe bağlı): Due tarih aralığına göre filtrele ("today", "tomorrow", "this-week", "overdue", "no-date")filterPriority (isteğe bağlı): Öncelik düzeyine göre filtrele ("high", "medium", "low", "none")filterRecurring (isteğe bağlı): Gerçek olduğunda yalnızca tekrarlayan reminders gösterfilterLocationBased (isteğe bağlı): Gerçek olduğunda yalnızca konum tabanlı reminders gösterfilterTags (isteğe bağlı): Etiketlere göre filtrele (reminder tüm belirtilen etiketlere sahip olmalı)Create Eylemi (action: "create"):
title (gerekli): Reminder başlığıstartDate (isteğe bağlı): 'YYYY-MM-DD' veya 'YYYY-MM-DD HH:mm:ss' biçiminde başlangıç tarihidueDate (isteğe bağlı): 'YYYY-MM-DD' veya 'YYYY-MM-DD HH:mm:ss' biçiminde due tarihtargetList (isteğe bağlı): Eklenecek reminder listesinin adınote (isteğe bağlı): Reminder'a eklenecek not metniurl (isteğe bağlı): Reminder'la ilişkili URLlocation (isteğe bağlı): Konum metni (EKCalendarItem.location) (geofence tetikleyicisi değil)priority (isteğe bağlı): Öncelik düzeyi (0=none, 1=high, 5=medium, 9=low)alarms (isteğe bağlı): Alarm nesneleri dizisi (aşağıda Alarm Nesnesine bakın)recurrenceRules (isteğe bağlı): Tekrarlama kuralları dizisi (aşağıda Tekrarlama Kurallarına bakın)recurrence (isteğe bağlı): Eski tek tekrarlama kural nesnesi (bir öğeli recurrenceRules için kısayol)locationTrigger (isteğe bağlı): Konum tetikleyici nesnesi (aşağıda Konum Tetikleyicileri bölümüne bakın)tags (isteğe bağlı): Reminder'a eklenecek etiketler dizisisubtasks (isteğe bağlı): Reminder'la birlikte oluşturulacak alt görev başlıkları dizisiUpdate Eylemi (action: "update"):
id (gerekli): Güncellenecek reminder'ın benzersiz tanımlayıcısıtitle (isteğe bağlı): Reminder için yeni başlıkstartDate (isteğe bağlı): Yeni başlangıç tarihidueDate (isteğe bağlı): 'YYYY-MM-DD' veya 'YYYY-MM-DD HH:mm:ss' biçiminde yeni due tarihnote (isteğe bağlı): Yeni not metniurl (isteğe bağlı): Reminder'a eklenecek yeni URLlocation (isteğe bağlı): Yeni konum metni (temizlemek için boş dize olarak ayarla)completed (isteğe bağlı): Reminder'ı tamamlandı/tamamlanmadı olarak işaretlecompletionDate (isteğe bağlı): Açık tamamlanma tarihi/saati ayarlatargetList (isteğe bağlı): Reminder'ı içeren listenin adıpriority (isteğe bağlı): Yeni öncelik düzeyi (0=none, 1=high, 5=medium, 9=low)alarms (isteğe bağlı): Alarmları bu dizi ile değiştirclearAlarms (isteğe bağlı): Tüm alarmları kaldırmak için true olarak ayarlarecurrenceRules (isteğe bağlı): Tekrarlama kurallarını bu dizi ile değiştirrecurrence (isteğe bağlı): Eski tek tekrarlama kural (bir öğeli recurrenceRules için kısayol)clearRecurrence (isteğe bağlı): Tekrarlamayı kaldırmak için true olarak ayarlalocationTrigger (isteğe bağlı): Yeni konum tetikleyiciclearLocationTrigger (isteğe bağlı): Konum tetikleyicisini kaldırmak için true olarak ayarlatags (isteğe bağlı): Bu dizi ile tüm etiketleri değiştiraddTags (isteğe bağlı): Eklenecek etiketler (mevcut olanlarla birleşir)removeTags (isteğe bağlı): Kaldırılacak etiketlerDelete Eylemi (action: "delete"):
id (gerekli): Silinecek reminder'ın benzersiz tanımlayıcısı{
"relativeOffset": -900, // Saniyeler (due/start'a göreli); negatif = önce
"absoluteDate": "2025-11-04T09:00:00+08:00", // Mutlak tetikleyici zamanı (isteğe bağlı)
"locationTrigger": { // Geofence tetikleyici (isteğe bağlı)
Puppeteer ile tarayıcı otomasyon yetenekleri, yerel ve uzak tarayıcı bağlantısını destekler.
Microsoft'un resmi Playwright MCP sunucusu, LLM'lerin yapılandırılmış erişilebilirlik anlık görüntüleri aracılığıyla web sayfalarıyla etkileşim kurmasını sağlıyor.
LLM'ler ve bilgisayarlı görü kullanarak tarayıcı tabanlı iş akışlarını otomatikleştirin — sayfaları gezin, formları doldurun, veri çıkarın, kimlik doğrulaması yönetin ve herhangi bir web sitesini doğal dil ile otomatize edin.
Yerel Chrome tarayıcınızı otomatikleştirin
Tarayıcı otomasyonu ve web scraping için Playwright kullanan bir MCP sunucusu
Bulut ortamında tarayıcı etkileşimlerini otomatikleştirin (web navigasyonu, veri çıkarma, form doldurma ve daha fazlası)