Google Calendar API ile entegre olmayı sağlayan TypeScript tabanlı MCP sunucusu.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"takumi0706-google-calendar-mcp": {
"command": "node",
"args": [
"~/.mcp/google-calendar-mcp/index.js"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/takumi0706/google-calendar-mcp.git ~/.mcp/google-calendar-mcp
cd ~/.mcp/google-calendar-mcp 🔔 VERSİYON GÜNCELLEME BİLDİRİMİ 🔔
Sürüm 1.0.5, hemcreateEventhem deupdateEventaraçlarındarecurrenceparametresi aracılığıyla tekrarlayan etkinlikler için destek ekler. Bu, oluşturulduktan sonra manuel olarak ayarlamak zorunda kalmadan doğrudan tekrarlayan etkinlikler oluşturmanızı ve değiştirmenizi sağlar.
Google Calendar MCP Server, Google Calendar ile Claude Desktop arasında entegrasyonu sağlayan bir MCP (Model Context Protocol) sunucu uygulamasıdır. Bu proje, Claude'un kullanıcının Google Takvimini etkileşime girmesini, doğal dil etkileşimi aracılığıyla takvim etkinliklerini görüntüleme, oluşturma, güncelleme ve silme yeteneğini sağlar.
Bu proje şunları kullanır:
@modelcontextprotocol/sdk kullanırgoogleapis kullanır@hono/oauth-providers kullanırBu MCP sunucusu, Google Takvim ile etkileşim kurmak için aşağıdaki araçları sağlar:
Çeşitli filtreleme seçenekleri ile takvim etkinliklerini alır.
Parametreler:
calendarId (isteğe bağlı): Takvim ID'si (atlanırsa, boş string, null veya undefined ise birincil takvimi kullanır)timeMin (isteğe bağlı): Etkinlik alımı için başlangıç saati (ISO 8601 formatı, örneğin "2025-03-01T00:00:00Z"). Boş string, null veya undefined değerleri yoksayılırtimeMax (isteğe bağlı): Etkinlik alımı için bitiş saati (ISO 8601 formatı). Boş string, null veya undefined değerleri yoksayılırmaxResults (isteğe bağlı): Alınacak maksimum etkinlik sayısı (varsayılan: 10)orderBy (isteğe bağlı): Sıralama düzeni ("startTime" veya "updated"). Boş string, null veya undefined ise "startTime" olarak varsayılanYeni bir takvim etkinliği oluşturur.
Parametreler:
calendarId (isteğe bağlı): Takvim ID'si (atlanırsa birincil takvimi kullanır)event: Aşağıdakileri içeren etkinlik ayrıntıları nesnesi:
summary (gerekli): Etkinlik başlığıdescription (isteğe bağlı): Etkinlik açıklamasılocation (isteğe bağlı): Etkinlik konumustart: Aşağıdakileri içeren başlangıç saati nesnesi:
dateTime (isteğe bağlı): ISO 8601 formatı (örneğin, "2025-03-15T09:00:00+09:00")date (isteğe bağlı): YYYY-MM-DD formatı tüm gün etkinlikleri içintimeZone (isteğe bağlı): Saat dilimi (örneğin, "Asia/Tokyo")end: Bitiş saati nesnesi (başlangıç ile aynı format)attendees (isteğe bağlı): Email ve isteğe bağlı displayName içeren katılımcı dizisicolorId (isteğe bağlı): Etkinlik renk ID'si (1-11)recurrence (isteğe bağlı): RFC5545 formatında tekrarlama kuralları dizisi (örneğin, ["RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR"])Mevcut bir takvim etkinliğini günceller. İşlev önce mevcut etkinlik verilerini alır ve güncelleme verileriyle birleştirir, güncelleme isteğine dahil olmayan alanları korur.
Parametreler:
calendarId (isteğe bağlı): Takvim ID'si (atlanırsa birincil takvimi kullanır)eventId (gerekli): Güncellenecek etkinliğin ID'sievent: Güncellenecek alanları içeren etkinlik ayrıntıları nesnesi (createEvent ile aynı yapı, tüm alanlar isteğe bağlı)
recurrence parametresi tekrarlayan etkinlik desenlerini değiştirmek için güncellenebilirBir takvim etkinliğini siler.
Parametreler:
calendarId (isteğe bağlı): Takvim ID'si (atlanırsa birincil takvimi kullanır)eventId (gerekli): Silinecek etkinliğin ID'siGoogle Takvim ile yeniden kimlik doğrulaması yapar. Bu, Claude'u yeniden başlatmak zorunda kalmadan farklı Google hesapları arasında geçiş yapmak istediğinizde faydalıdır.
Parametreler:
Yeni işlevler eklerken, kodu değiştirirken veya hataları düzeltirken, lütfen npm version komutu kullanarak her değişiklik için sürümü semantik olarak artırın.
Ayrıca, kodunuzun açık olduğundan ve OOP gibi tüm gerekli kodlama kurallarını izlediğinden emin olun.
Sürüm betiği sürüm güncellendiğinde otomatik olarak npm install çalıştıracak, ancak yine de gönderimden önce kodunuzu derleme, lint ve test etmelisiniz.
Bu paket npm'de @takumi0706/google-calendar-mcp olarak yayınlanmaktadır:
npx @takumi0706/google-calendar-mcp@1.0.7
# Google OAuth kimlik bilgileriniz ile bir .env dosyası oluşturun
GOOGLE_CLIENT_ID=your_client_id
GOOGLE_CLIENT_SECRET=your_client_secret
GOOGLE_REDIRECT_URI=http://localhost:4153/oauth2callback
# İsteğe bağlı: Token şifreleme anahtarı (sağlanmaz ise otomatik oluşturulur)
TOKEN_ENCRYPTION_KEY=32-byte-hex-key
# İsteğe bağlı: Auth sunucu portu ve hostı (varsayılan port: 4153, host: localhost)
AUTH_PORT=4153
AUTH_HOST=localhost
# İsteğe bağlı: MCP sunucu portu ve hostı (varsayılan port: 3000, host: localhost)
PORT=3000
HOST=localhost
# İsteğe bağlı: Manuel kimlik doğrulamayı etkinleştir (localhost erişilebilir olmadığında faydalı)
USE_MANUAL_AUTH=true
Sunucuyu claude_desktop_config.json dosyanıza ekleyin. Localhost'a erişilemeyen bir ortamda çalışıyorsanız, USE_MANUAL_AUTH ortam değişkenini "true" olarak ayarlayın.
{
"mcpServers": {
"google-calendar": {
"command": "npx",
"args": [
"-y",
"@takumi0706/google-calendar-mcp"
],
"env": {
"GOOGLE_CLIENT_ID": "your_client_id",
"GOOGLE_CLIENT_SECRET": "your_client_secret",
"GOOGLE_REDIRECT_URI": "http://localhost:4153/oauth2callback"
}
}
}
}
Daha fazla ayrıntı için bkz. SECURITY.md.
Herhangi bir sorunla karşılaşırsanız:
Unexpected non-whitespace character after JSON at position 4 (line 1 column 5) gibi hatalar görürseniz, tipik olarak hatalı biçimlendirilmiş JSON-RPC iletileri nedeniyledir. Bu sorun sürüm 0.6.7 ve sonrasında düzeltilmiştir. Hala bu hataları yaşıyorsanız, lütfen en son sürüme güncelleyin.Authentication failed: Invalid state parameter hatası görürseniz, OAuth sunucu yaşam döngüsü yönetimini düzeltecek olan sürüm 1.0.3 veya sonrasına güncelleyin. Eski sürümlerde, bağlantı noktası 4153'ü kapatmanız ve uygulamayı yeniden başlatmanız gerekebilir.USE_MANUAL_AUTH=true ayarlayarak manuel kimlik doğrulamayı etkinleştirin. Bu, uygulamayı yetkilendirdikten sonra Google tarafından gösterilen yetkilendirme kodunu manuel olarak girmenize izin verir.createEvent hem de updateEvent araçlarında recurrence parametresi aracılığıyla tekrarlayan etkinlikler için destek eklendiauthenticate aracı eklendiupdateEvent işlevini, kısmi güncellemeler gerçekleştirirken mevcut etkinlik verilerini korumak üzere düzeltildigetEvent işlevini eklendiupdateEvent değiştirildiupdateEvent işlevi için geliştirilmiş dokümantasyonprompt: 'consent' parametresi eklendiDoğrudan npm'den kurun:
npm install -g @takumi0706/google-calendar-mcp
Geliştirme veya özelleştirme için:
# Deposu klonla
git clone https://github.com/takumi0706/google-calendar-mcp.git
cd google-calendar-mcp
# Bağımlılıkları yükle
npm install
# Projeyi derle
npm run build
# Sunucuyu çalıştır
npm start
Üretim kullanımı için sunucu geçerli Google OAuth kimlik bilgilerine ihtiyaç duyar. Sunucu uygun kimlik bilgileri olmadan başlayamaz ve güvenlik uyumluluğunu sağlar.
Testleri çalıştırmak için:
# Tüm testleri çalıştır
npm test
# Kapsam raporu ile testleri çalıştır
npm test -- --coverage
MIT
Google Workspace için kapsamlı MCP sunucusu, Google Calendar, Drive, Gmail, Docs, Forms, Chats, Slides ve Sheets desteğiyle stdio, Streamable HTTP ve SSE taşımaları üzerinde çalışır.
Gmail ve Google Calendar ile entegrasyon.
Bear Notes'u Claude'dan doğrudan arayabilir, okuyabilir, oluşturabilir ve güncelleyebilirsiniz. Tamamen lokal ve tam gizlilik ile çalışır.