Skip to main content
Glama

notify-mcp

Claude Code için masaüstü ve e-posta bildirimi sağlayan, yerel olarak çalışan bir Model Context Protocol (MCP) sunucusu.

Node.js MCP Platform License

notify-mcp, Claude Code uzun süren bir görevi tamamladığında kullanıcıyı bilgilendirmek için iki kanal sunar: işletim sisteminin yerel bildirim altyapısı ve Gmail SMTP üzerinden gönderilen e-posta. Bildirimler Claude tarafından MCP araçları aracılığıyla istenerek ya da isteğe bağlı bir Stop hook'u ile her yanıtın sonunda otomatik olarak gönderilebilir.

Özellikler

  • Masaüstü bildirimi: Windows, macOS ve Linux'ta yerel, sesli sistem bildirimi.

  • E-posta bildirimi: Yapılandırılan Gmail hesabından aynı adrese düz metin e-posta.

  • Otomatik tamamlanma bildirimi: Claude her yanıtını bitirdiğinde sesli uyarı ve son yanıtın özetini içeren e-posta gönderen Stop hook'u.

  • Kullanıcı tercihlerine duyarlılık: Hook, kullanıcının mesajlarını analiz eder. Bir kanalın istenmediği belirtilirse (ör. "e-posta gönderme") o kanalı tek tur ya da sohbet boyunca atlar.

  • Tekrarlanan bildirimlerin önlenmesi: Claude aynı turda bildirimi MCP aracıyla zaten gönderdiyse hook ikinci kez göndermez.

Related MCP server: Email MCP Server

İçindekiler

Mimari

flowchart LR
    CC["Claude Code"] -- "stdio (JSON-RPC)" --> SRV["MCP sunucusu<br/>index.js"]
    SRV --> DESK["Masaüstü bildirimi<br/>node-notifier"]
    SRV --> MAIL["mailer.js"]
    CC -- "Stop hook" --> HOOK["stop-notify.js"]
    HOOK --> INTENT["prompt-intent.js<br/>tercih analizi"]
    HOOK --> BEEP["Sesli uyarı"]
    HOOK --> MAIL
    MAIL --> SMTP["Gmail SMTP<br/>port 465 / SSL"]

Bileşen

Görev

index.js

MCP sunucusu. Claude Code ile stdio üzerinden iletişim kurar ve iki araç sunar.

mailer.js

Ortak e-posta modülü. .env dosyasını her gönderimde yeniden okur.

stop-notify.js

Claude Code Stop hook'u. Sesli uyarı ve tamamlanma e-postasını koşullu olarak gönderir.

prompt-intent.js

Kullanıcı mesajlarından bildirim tercihlerini çıkaran kural tabanlı ayrıştırıcı.

Gereksinimler

Gereksinim

Açıklama

Node.js 22.22+ veya 24.15+

node-notifier ve nodemailer bu sürümleri gerektirir. Node.js 24 LTS önerilir.

Claude Code

MCP sunucusunu çalıştıran istemci.

Gmail hesabı ve uygulama şifresi

Yalnızca e-posta bildirimi için gereklidir.

Kurulum

git clone https://github.com/Harley-Quinnz/notify-mcp.git
cd notify-mcp
npm install

Yapılandırma

E-posta bildirimi için şablon dosyayı kopyalayın ve kendi bilgilerinizle doldurun:

# macOS / Linux / Git Bash
cp .env.example .env

# Windows (CMD / PowerShell)
copy .env.example .env
EMAIL_USER=ornek@gmail.com
EMAIL_PASS=xxxx xxxx xxxx xxxx

Değişken

Açıklama

EMAIL_USER

Gmail adresi. E-postalar bu adresten aynı adrese gönderilir.

EMAIL_PASS

Gmail uygulama şifresi. Hesap şifresi kabul edilmez. Boşluklar otomatik olarak temizlenir.

.env dosyası her gönderimde yeniden okunduğundan, değerler değiştirildiğinde sunucuyu yeniden başlatmak gerekmez.

Gmail uygulama şifresi oluşturma

  1. Google hesabınızda 2 Adımlı Doğrulama'yı etkinleştirin.

  2. https://myaccount.google.com/apppasswords adresine gidin.

  3. Yeni bir uygulama şifresi oluşturun ve 16 karakterlik değeri EMAIL_PASS olarak kaydedin.

Claude Code entegrasyonu

MCP sunucusu

Sunucuyu tüm projelerde kullanılabilir olacak şekilde (user scope) ekleyin. Dosya yolunu deponun bulunduğu konuma göre düzenleyin:

# Windows
claude mcp add --scope user notify -- node "C:\\Users\\<kullanici>\\notify-mcp\\index.js"

# macOS / Linux
claude mcp add --scope user notify -- node /home/<kullanici>/notify-mcp/index.js

Alternatif olarak yapılandırma dosyasına elle ekleyebilirsiniz:

{
  "mcpServers": {
    "notify": {
      "type": "stdio",
      "command": "node",
      "args": ["C:\\Users\\<kullanici>\\notify-mcp\\index.js"]
    }
  }
}

Kurulumu doğrulamak için Claude Code içinde /mcp komutunu çalıştırın. notify sunucusu connected durumunda görünmelidir. Ardından Claude'dan doğrudan bildirim isteyebilirsiniz:

Testleri çalıştır, tamamlandığında masaüstü bildirimi ve e-posta gönder.

Stop hook (isteğe bağlı)

stop-notify.js, Claude her yanıtını tamamladığında çalışır:

  • Kısa bir sesli uyarı çalar (Windows: [Console]::Beep, macOS: afplay).

  • Proje klasörü, zaman, oturum kimliği ve son yanıtın özetini (en fazla 4000 karakter) içeren bir e-posta gönderir.

Hook'u etkinleştirmek için ~/.claude/settings.json dosyasına ekleyin:

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "node",
            "args": ["C:\\Users\\<kullanici>\\notify-mcp\\stop-notify.js"],
            "async": true,
            "timeout": 60
          }
        ]
      }
    ]
  }
}

async: true ayarı bildirimlerin Claude'u bekletmemesini sağlar. Hatalar ve atlanan bildirimler proje klasöründeki stop-notify.log dosyasına kaydedilir.

Bildirim tercihleri

Stop hook, sohbetteki kullanıcı mesajlarını analiz ederek her kanal için gönderim kararı verir. Tercihler iki kapsamda uygulanır.

Tek tur

Mesajda bir kanalın istenmediği ya da yalnızca birinin istendiği belirtilirse karar yalnızca o tur için geçerlidir. Sonraki mesajda varsayılan davranışa dönülür.

Örnek mesaj

Ses

E-posta

"Testleri çalıştır"

Çalınır

Gönderilir

"Ses ve e-posta gönderme", "Bildirim gönderme"

Çalınmaz

Gönderilmez

"Ses çalma", "Sessiz çalış"

Çalınmaz

Gönderilir

"E-posta gönderme", "Mail atma"

Çalınır

Gönderilmez

"Sadece ses gönder"

Çalınır

Gönderilmez

"Sadece e-posta gönder"

Çalınmaz

Gönderilir

"Don't send an email"

Çalınır

Gönderilmez

Sohbet boyunca

Mesajda "bu sohbet boyunca", "ben söyleyene kadar", "aksini söyleyene kadar", "bundan sonra" veya "artık" gibi bir ifade bulunursa ya da "kapat" / "aç" fiilleri kullanılırsa tercih, değiştirilene kadar sohbetin geri kalanında geçerli olur.

Örnek mesaj

Etki

"Ben söyleyene kadar bildirim gönderme", "Bildirimleri kapat"

Ses ve e-posta kapatılır.

"Bu sohbet boyunca sadece ses gönder"

Yalnızca ses çalınır.

"Artık mail atma", "Sesi kapat"

Yalnızca ilgili kanal kapatılır.

"Bildirimleri tekrar aç", "Sesi aç", "Artık mail atabilirsin"

Kapatılan kanal yeniden açılır.

Davranış ayrıntıları

  • Sohbet kapsamındaki tercihler yalnızca ilgili sohbet için geçerlidir. Karar her seferinde sohbetin transcript'inden hesaplanır. Yeni bir sohbet ya da /clear sonrası varsayılan davranış geçerlidir.

  • Sohbet boyunca kapatılmış bir kanal, bir turda açıkça istenirse ("bitince mail at") o tur için gönderilir.

  • Aynı mesajda bir kanal hem istenip hem reddedilirse kanal kapalı kabul edilir.

  • Türkçe karakter kullanımı ("gonderme", "eposta") ve büyük/küçük harf farkı sonucu etkilemez. İngilizce ifadeler de desteklenir.

  • İsim olarak kullanılan ifadeler ("e-posta gönderme özelliğini düzelt") ve kod blokları içindeki metinler komut olarak değerlendirilmez.

  • Ayrıştırıcı kural tabanlıdır. Desteklenmeyen bir ifade fark edilmezse varsayılan davranış (gönderim) uygulanır.

MCP araç referansı

send_desktop_notification

Yerel, sesli bir masaüstü bildirimi gösterir.

Parametre

Tip

Açıklama

title

string

Bildirim başlığı

message

string

Bildirim metni

send_email_notification

EMAIL_USER adresine, aynı adresten düz metin e-posta gönderir (Gmail SMTP, port 465, SSL).

Parametre

Tip

Açıklama

subject

string

E-posta konusu

message

string

E-posta gövdesi (düz metin)

Proje yapısı

notify-mcp/
├── index.js           MCP sunucusu ve araç tanımları
├── mailer.js          Gmail SMTP üzerinden e-posta gönderimi
├── stop-notify.js     Claude Code Stop hook'u
├── prompt-intent.js   Bildirim tercihlerinin ayrıştırılması
├── .env.example       Ortam değişkenleri şablonu
├── package.json
├── LICENSE
└── README.md

Geliştirme

Hook kararlarını test etme

NOTIFY_DRY_RUN=1 ortam değişkeni ile hook hiçbir bildirim göndermeden verdiği kararı JSON olarak yazdırır:

echo '{"transcript_path":"<transcript.jsonl>"}' | NOTIFY_DRY_RUN=1 node stop-notify.js

stdout kullanımı

stdio transport, stdout akışını JSON-RPC iletişimi için kullanır. Sunucu kodunda console.log kullanılmamalı, tüm loglar console.error (stderr) ile yazılmalıdır.

Güvenlik

  • .env dosyası .gitignore ile depo dışında tutulur. Depoda yalnızca değer içermeyen .env.example bulunur.

  • Gmail hesap şifresi yerine her zaman uygulama şifresi kullanın. Uygulama şifreleri hesap şifresini değiştirmeden tek tek iptal edilebilir.

  • Uygulama şifresinin sızdığından şüpheleniyorsanız https://myaccount.google.com/apppasswords üzerinden iptal edip yenisini oluşturun.

  • Sunucu yerel olarak çalışır ve Gmail SMTP dışında herhangi bir dış servise veri göndermez.

Sorun giderme

Belirti

Çözüm

EMAIL_USER veya EMAIL_PASS tanımlı değil

.env dosyasının proje kök dizininde bulunduğunu ve iki değişkenin de tanımlı olduğunu doğrulayın.

Invalid login / 535-5.7.8

Hesap şifresi yerine uygulama şifresi kullanın ve 2 Adımlı Doğrulama'nın etkin olduğunu kontrol edin.

Masaüstü bildirimi görünmüyor

Windows'ta Ayarlar > Sistem > Bildirimler altında bildirim izinlerini ve "Rahatsız Etme" modunu kontrol edin.

Sunucu /mcp listesinde bağlanmıyor

node index.js komutunu elle çalıştırarak hata çıktısını inceleyin ve args içindeki yolun mutlak olduğundan emin olun.

Hook bildirimi gelmiyor

stop-notify.log dosyasını inceleyin. Bildirim kullanıcı tercihi nedeniyle atlanmış olabilir.

İstenmediği belirtildiği halde bildirim gönderiliyor

settings.json içinde koşulsuz çalışan eski bir Stop hook'u bulunmadığını doğrulayın. Değişiklikten sonra /hooks menüsünü açın ya da Claude Code'u yeniden başlatın.

Lisans

Bu proje MIT lisansı ile lisanslanmıştır. Ayrıntılar için LICENSE dosyasına bakın.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables Claude AI to directly interact with Gmail through natural language for comprehensive email management including sending, reading, searching, organizing, and managing drafts and labels. Uses secure OAuth authentication and runs locally without third-party servers.
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI-powered inbox management with natural language commands through Claude Desktop. Supports sending, reading, searching, organizing emails, and managing labels using Gmail API with automatic authentication.
      8
      MIT