---
title: "MCP Sunucusu - Yapay Zekâ Ajanlarından Bildirim ve Arama"
sidebarTitle: MCP Sunucusu
description: "Claude Code, Codex, Cursor, ChatGPT ve diğer yapay zekâ ajanlarını Echobell'in resmi MCP sunucusuna bağlayın; push bildirimi veya arama alın."
---

# Yapay Zekâ Ajanları için MCP Sunucusu

Echobell resmi bir [Model Context Protocol](https://modelcontextprotocol.io) (MCP) sunucusu çalıştırır. Bunu yapay zekâ ajanınıza bağlayın — Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude, ChatGPT ya da başka herhangi bir MCP istemcisi — ve ajan, Echobell kanallarınızdan biri üzerinden bildirim gönderen tek bir araç kazanır: `notify`.

Uzun bir yeniden düzenleme, bir test çalıştırması ya da bir dağıtım başlatın, bilgisayarın başından kalkın ve ajandan iş bitince size haber vermesini isteyin. İş bittiğinde telefonunuz titrer, ajanın size ihtiyacı olduğunda zaman duyarlı bir uyarı gösterir, bir şeyler ciddi biçimde ters gittiğinde ise bir telefon araması gibi çalar.

## Nasıl Çalışır

- Bu, `https://mcp.echobell.one/mcp` adresinde, Streamable HTTP taşıma katmanını kullanan **uzak** bir MCP sunucusudur. Kurulacak bir şey yoktur: npm paketi yok, `npx` yok, yerel süreç yok.
- Her MCP URL'si **tek bir kanala** aittir. Ajan `notify` aracını çağırdığında, o kanala abone olan herkes bildirimi kendi seçtiği [bildirim türüyle](/docs/notification) alır.
- Kimlik bilgisi, kanalın **tetikleyici belirtecidir** — kanalın webhook URL'sinin sonundaki belirtecin aynısı. MCP sunucusu, kanalın [webhook'u](/docs/webhook) gibi çalışır; tek farkı, ajanın nasıl çağıracağını bildiği bir araç olmasıdır.

<Callout type="info">
  Ajanlarınız için "AI Agents" gibi ayrı bir kanal oluşturun ve bu kanala
  **Arama** türüyle abone olun. Böylece ajanlarınız aramaya kadar herhangi bir
  seviyeyi seçebilir; kanalı aynı uyarıları isteyen ekip arkadaşlarınızla da
  paylaşabilirsiniz.
</Callout>

## MCP URL'nizi Alın

### Uygulamadan

1. Echobell uygulamasını açın ve ajanınızın kullanacağı kanala dokunun.
2. Kanal ayrıntılarında **Yapay Zekâ Ajanı Bağla** bölümünü bulun.
3. **MCP Sunucu URL**'sini ya da ajanınız için hazırlanmış kurulum parçacığını kopyalayın.

### Webhook URL'sinden

MCP URL'si, kanalın webhook URL'siyle aynı belirteci kullanır. Belirteci webhook URL'sinin sonundan alın ve `https://mcp.echobell.one/mcp/` adresinin arkasına ekleyin:

```
Webhook URL: https://hook.echobell.one/t/<channel-token>
MCP URL:     https://mcp.echobell.one/mcp/<channel-token>
```

<Callout type="warn">
  MCP URL'si kanalınızın tetikleyici belirtecini içerir. Ona sahip olan herkes
  kanalın abonelerine bildirim gönderebilir; bu yüzden onu bir parola kadar gizli
  tutun. Bkz. [Güvenlik](#güvenlik).
</Callout>

## Ajanınızı Kurun

Aşağıdaki tüm parçacıklar URL biçimini kullanır. `<channel-token>` yerine kanalınızın tetikleyici belirtecini yazın ya da belirteci zaten doldurulmuş olan, uygulamanın verdiği parçacığı yapıştırın.

### Claude Code

```bash
claude mcp add --transport http echobell https://mcp.echobell.one/mcp/<channel-token>
```

Sunucuyu yalnızca mevcut projede değil, tüm projelerde kullanmak için `--scope user` ekleyin.

### Codex

Şunu `~/.codex/config.toml` dosyasına ekleyin:

```toml
[mcp_servers.echobell]
url = "https://mcp.echobell.one/mcp/<channel-token>"
```

### Cursor

Şunu `~/.cursor/mcp.json` dosyasına ya da bir projedeki `.cursor/mcp.json` dosyasına ekleyin:

```json
{
  "mcpServers": {
    "echobell": {
      "url": "https://mcp.echobell.one/mcp/<channel-token>"
    }
  }
}
```

### VS Code (GitHub Copilot)

Şunu çalışma alanınızdaki `.vscode/mcp.json` dosyasına ekleyin, ardından aracı Copilot Chat'te ajan modunda kullanın:

```json
{
  "servers": {
    "echobell": {
      "type": "http",
      "url": "https://mcp.echobell.one/mcp/<channel-token>"
    }
  }
}
```

`.vscode/mcp.json` deponuza commit ediliyorsa, belirtecin dosyada yer almaması için bunun yerine [girdi istemli başlık biçimini](#başlık-biçimi) kullanın.

### Windsurf

Şunu `~/.codeium/windsurf/mcp_config.json` dosyasına ekleyin:

```json
{
  "mcpServers": {
    "echobell": {
      "serverUrl": "https://mcp.echobell.one/mcp/<channel-token>"
    }
  }
}
```

### Gemini CLI

Şunu `~/.gemini/settings.json` dosyasına ekleyin:

```json
{
  "mcpServers": {
    "echobell": {
      "httpUrl": "https://mcp.echobell.one/mcp/<channel-token>"
    }
  }
}
```

### Claude Desktop ve claude.ai

1. **Settings → Connectors** bölümünü açın.
2. **Add custom connector** seçeneğini seçin.
3. Ad olarak `Echobell`, URL olarak `https://mcp.echobell.one/mcp/<channel-token>` girin ve ekleyin.

Bağlayıcı hem web'deki Claude'da hem de masaüstü uygulamasında kullanılabilir.

### ChatGPT

1. ChatGPT ayarlarında geliştirici modunu açın.
2. **Settings → Connectors** bölümünü açın ve **Create** seçeneğini seçin.
3. URL olarak `https://mcp.echobell.one/mcp/<channel-token>` girin ve kimlik doğrulamayı **No authentication** olarak ayarlayın — kimlik bilgisi URL'deki belirteçtir.

### Diğer MCP İstemcileri

Streamable HTTP taşıma katmanını destekleyen her istemci çalışır. İstemciye `https://mcp.echobell.one/mcp/<channel-token>` URL'sini verin ya da aşağıdaki başlık biçimini kullanın.

### Başlık Biçimi

Belirteci URL'ye koymak yerine bir `Authorization` başlığında gönderebilirsiniz. İki biçim de birbirine denktir.

```
URL:            https://mcp.echobell.one/mcp
Authorization:  Bearer <channel-token>
```

Claude Code ile:

```bash
claude mcp add --transport http echobell https://mcp.echobell.one/mcp \
  --header "Authorization: Bearer <channel-token>"
```

VS Code'da bir girdi istemi belirteci `.vscode/mcp.json` dışında tutar, böylece dosyayı gönül rahatlığıyla commit edebilirsiniz. VS Code, sunucu ilk kez başladığında belirteci sorar ve güvenli biçimde saklar:

```json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "echobell-token",
      "description": "Echobell channel trigger token",
      "password": true
    }
  ],
  "servers": {
    "echobell": {
      "type": "http",
      "url": "https://mcp.echobell.one/mcp",
      "headers": {
        "Authorization": "Bearer ${input:echobell-token}"
      }
    }
  }
}
```

## `notify` Aracı

Sunucu tek bir araç sunar: `notify`. Ajanınız, isteminize göre bu aracı nasıl dolduracağına kendisi karar verir.

| Argüman | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `title` | string | Evet | Bildirim başlığı. |
| `body` | string | Hayır | Bildirim metni. |
| `link` | string (URL) | Hayır | Bildirime dokunduğunuzda açılan bağlantı; örneğin bir pull request, bir derleme günlüğü veya bir pano. |
| `urgency` | string | Hayır | `normal`, `time-sensitive` veya `calling`. Her abonenin kendi seviyesini kullanmak için boş bırakın. Bkz. [Aciliyet](#aciliyet). |

## Aciliyet

Bir kanala abone olan herkes uygulamada o kanal için bir bildirim türü seçer: Normal, Zaman Duyarlı veya Arama. Bu seçim, kanalın o kişiye ulaşabileceği **en yüksek** seviyedir.

- Ajan `urgency` göndermediğinde her abone kendi seçtiği seviyeyi alır.
- Ajan `urgency` gönderdiğinde, bir abonenin seviyesini yalnızca **düşürebilir**, asla yükseltemez. Arama türüyle abone olduysanız `"urgency": "normal"` normal bir bildirim olarak gelir. Normal türüyle abone olduysanız `"urgency": "calling"` yine normal bir bildirim olarak gelir.

Böylece tek bir kanal her şeyi karşılar. Arama türüyle abone olun, ardından ajana rutin güncellemeleri `normal` olarak göndermesini ve `calling` seviyesini yalnızca bir şey bozulduğunda kullanmasını söyleyin.

Webhook isteklerindeki `notificationType` alanının aksine `urgency`, özel şablon kullanan kanallarda da çalışır.

### Arama için Echobell Premium Gerekir

Arama bildirimleri bir Echobell Premium özelliğidir. Ajan `calling` istediğinde, Premium'u olmayan bir abone bunun yerine **zaman duyarlı** bir bildirim alır — uygulamada ve webhook'larda olanın aynısı.

### Kanal Başına Dakikada Bir Arama

Bir kanal her aboneyi dakikada en fazla bir kez arar. Ajan o dakika içinde başka bir arama isterse — örneğin bir yeniden deneme döngüsüne takılıp kaldığı için — abone bunun yerine **zaman duyarlı** bir bildirim alır; bu bildirim yine de odak modlarını aşar. Webhook ve e-posta tetikleyicileri de aynı kurala uyar.

Ajan her iki durumdan da haberdar edilir. Araç sonucu her geri düşüşü listeler; böylece ajan telefonun çalmadığını bilir ve sizi aradığını varsaymak yerine bunu söyleyebilir.

## Ajana Ne Döner

Her `notify` çağrısı, ajan için kısa bir metin özeti ve yapılandırılmış veri döndürür:

```json
{
  "notificationTriggered": true,
  "reason": null,
  "requestedUrgency": "calling",
  "recipients": 1,
  "deliveredUrgency": { "normal": 0, "time-sensitive": 1, "calling": 0 },
  "fallbacks": [
    {
      "from": "calling",
      "to": "time-sensitive",
      "reason": "premium-required",
      "recipients": 1
    }
  ]
}
```

| Alan | Anlamı |
|---|---|
| `notificationTriggered` | Bir bildirim gönderildiğinde `true`. |
| `reason` | Neden hiçbir şey gönderilmediği: `conditions-not-met` (kanalın [koşulları](/docs/conditions) eşleşmedi) veya `no-subscribers` (kanala kimse abone değil). Bildirim gönderildiğinde `null`. |
| `requestedUrgency` | Ajanın istediği `urgency` ya da boş bıraktıysa `null`. |
| `recipients` | Kaç aboneye bildirim gönderildiği. |
| `deliveredUrgency` | Her seviyeyi kaç abonenin aldığı. |
| `fallbacks` | İstenenden daha düşük bir seviye alan aboneler ve nedeni: `premium-required` (arama için Premium gerekir), `subscriber-setting` (abonenin bu kanal için kendi seviyesi daha düşük) veya `call-cooldown` (kanal bu aboneyi son bir dakika içinde zaten aradı). |

## Doğrudan Aktarım ve Şablonlu Kanallar

MCP sunucusu her iki kanal türüyle de çalışır:

- **Doğrudan aktarım kanalları** (varsayılan), `title` ve `body` alanlarını ajanın gönderdiği haliyle gösterir.
- **Şablonlu kanallar** (**Gelişmiş Ayarlar** altında **Özel Şablon** açık olanlar), bildirimi [şablonlarınızdan](/docs/template) oluşturur. `title`, `body`, `link`, `externalLink` ve `urgency` şablon değişkeni olarak kullanılabilir ve kanalın [koşulları](/docs/conditions) geçerliliğini korur. Koşullar eşleşmediğinde hiçbir şey gönderilmez ve ajan `reason: "conditions-not-met"` alır.

## Örnek İstemler

Sunucu bağlandıktan sonra bildirimleri sade bir dille isteyin:

- "Tüm test paketini çalıştır ve bitince bana Echobell ile bildirim gönder."
- "Ödeme modülünü yeniden düzenle. Benden bir karar gerekirse bana zaman duyarlı bir Echobell uyarısı gönder."
- "Staging'e dağıt. Dağıtım başarısız olursa beni ara, olmazsa URL'yi içeren normal bir bildirim gönder."
- "Migration bitince bana bir özet ve pull request bağlantısıyla bildirim gönder."

Bunu alışkanlık haline getirmek için ajanınızın talimat dosyasına (`CLAUDE.md`, `AGENTS.md`, `.cursorrules` vb.) şuna benzer bir satır ekleyin:

```
When a task takes longer than a few minutes, call the Echobell notify tool when it finishes.
Use urgency "calling" only when something is broken and needs me right away.
```

## Güvenlik

- **Belirteç, kimlik bilgisidir.** MCP URL'sine (veya belirtece) sahip olan herkes kanalın abonelerine bildirim gönderebilir. Belirteçle hiçbir şey okunamaz, hesabınız değiştirilemez — yapabileceği tek şey bildirim göndermektir.
- **Paylaşılan dosyalara koymayın.** URL biçimini içeren bir yapılandırma dosyasını commit etmeyin. Proje düzeyindeki yapılandırmalar için girdi istemi ya da ortam değişkeniyle birlikte [başlık biçimini](#başlık-biçimi) kullanın.
- **Erişimi tetikleyici belirteci sıfırlayarak iptal edin.** Kanalı uygulamada açın ve tetikleyici belirtecini sıfırlayın. Eski MCP URL'si hemen çalışmayı bırakır (istekler `401 Unauthorized` alır), eski webhook URL'si de öyle. Ajanlarınızı ve webhook çağıranlarınızı yeni belirteçle güncelleyin.

## Sınırlar ve Hatalar

- **Hız sınırı**: Her belirteç dakikada en fazla 120 MCP isteği kabul eder. MCP isteklerinin, kanalın webhook isteklerinden ayrı kendi kotası vardır.
- **401 Unauthorized**: Belirteç eksik, yanlış ya da sıfırlanmış.

## İlgili Sayfalar

- [Webhook'lar](/docs/webhook) — aynı kanalı betiklerden, CI'dan ve diğer servislerden tetikleyin
- [Bildirim türleri](/docs/notification) — Normal, Zaman Duyarlı ve Arama arasındaki farklar
- [Şablonlar](/docs/template) ve [Koşullar](/docs/conditions) — bildirimleri biçimlendirin ve filtreleyin
