---
title: "ThunderPhone'u MCP sunucusu olarak kullanın"
description: "Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code veya başka bir Streamable HTTP MCP istemcisi üzerinden ThunderPhone sesli AI ajanları oluşturun, test edin, doğrulayın ve işletin."
---

ThunderPhone, aşağıdaki adreste Akışlanabilir HTTP Model Bağlam Protokolü sunucusu sağlar:

```text
https://api.thunderphone.com/v1/mcp
```

Bu, [uzak bir MCP sunucusunu sesli AI ajanına bağlama](/tr/guides/mcp-servers) işleminin ters yönüdür:

| Yön | Sonuç |
| --- | --- |
| Uzak MCP sunucusu → ThunderPhone ajanı | Sesli AI ajanı, uzak sunucunun araçlarını çağırabilir. |
| ThunderPhone → MCP istemciniz | Kodlama ajanınız ThunderPhone'u oluşturabilir, test edebilir ve çalıştırabilir. |

## Kimlik doğrulama

Dizin istemcileri için varsayılan olarak [OAuth](/tr/guides/oauth) kullanın: oturum açın, bir kuruluş seçin ve istenen izinleri onaylayın. Erişimi **Kuruluş → API anahtarları → Yetkili uygulamalar** altında iptal edin.

API anahtarıyla yapılandırılmış istemciler için **Kuruluş → Anahtarlar** altında bir `sk_live_` anahtarı oluşturun ve bunu MCP istemcinize `THUNDERPHONE_API_KEY` olarak sağlayın. Anahtar bir kuruluşa bağlıdır; başka bir kuruluşa ait bir kimlik bulunamadı gibi davranır.

<Warning>
  Bir `sk_live_` anahtarı kuruluş verilerini okuyabilir ve ajanları yayına alma, arama yapma, numara satın alma, kampanya başlatma ve kaynak silme gibi üretim işlemlerini gerçekleştirebilir. Bu anahtarı tarayıcı kodlarından, depolardan, ekran görüntülerinden ve sohbet günlüklerinden uzak tutun. İstemcinizin gizli anahtar deposunu veya ortam desteğini kullanın ve açığa çıkan bir anahtarı hemen iptal edin.
</Warning>

## CLI ve stdio alternatifleri

[ThunderPhone CLI](/tr/guides/cli), ilgisiz sunucuları koruyarak istemci yapılandırmasını yazabilir:

```bash
npx -y @thunderphone/mcp setup --client cursor --api-key-env THUNDERPHONE_API_KEY
npx thunderphone mcp setup --client claude-desktop --scope user
```

`@thunderphone/mcp` genel olarak yüklendikten sonra, aynı seçeneklerle
`thunderphone-mcp setup` kullanın. Kurulum Claude Code, Codex, Cursor, VS Code, Gemini, Claude
Desktop ve Windsurf'ü destekler. Doğrudan HTTP tercih edilir; Desktop stdio kullanır.

stdio destekleyen tüm istemciler için `command: "npx"` ayarını
`args: ["-y", "@thunderphone/mcp"]` ile yapılandırın. Sarmalayıcı önce `THUNDERPHONE_API_KEY` kullanır,
ardından `thunderphone login` kimlik bilgilerini kullanır, süresi dolmuş belirteçleri yeniler ve son olarak
`mcp-remote` üzerinden OAuth kullanır. Cihazla oturum açma ve OAuth, karşılık gelen API
OAuth yayınını gerektirir. API anahtarı yolu gerektirmez. Doğrudan HTTP yapılandırmaları
CLI kimlik bilgisi deposunu okumaz; cihazla oturum açmayı yeniden kullanmak için stdio sarmalayıcısını kullanın.

Bunlar, aşağıdaki manuel istemci yapılandırmalarına alternatiftir.

## İstemci yapılandırması

Claude ve ChatGPT, [OAuth](/tr/guides/oauth) ile oturum açar; API anahtarı gerekmez. Henüz ThunderPhone hesabınız yoksa oturum açma sayfasında **Hesap oluştur** seçeneğini belirleyin; e-postanızı doğruladıktan sonra onay ekranına dönersiniz.

### Claude (web, masaüstü ve mobil)

1. **Özelleştir → Bağlayıcılar** bölümünü açın (eski sürümlerde **Ayarlar → Bağlayıcılar**). ThunderPhone bağlayıcı dizininde görünüyorsa seçin. Aksi takdirde **Özel bağlayıcı ekle** seçeneğini belirleyin, adını `ThunderPhone` olarak girin ve `https://api.thunderphone.com/v1/mcp` adresini ekleyin.
2. **Bağlan** seçeneğini belirleyin, ThunderPhone oturumu açın, kuruluşu seçin ve izinleri onaylayın.
3. Bir sohbette, araçlar menüsünden ThunderPhone'u etkinleştirin ve örneğin "Ajanlarımı listele" gibi ihtiyacınız olanı isteyin.

Claude, her aracı ilk kez kullanmadan önce izin ister. Bu istemlerin çoğunu atlamak için **Özelleştir → Bağlayıcılar → ThunderPhone** bölümünü açın ve **Salt okunur araçlar** ayarını her zaman izin verecek şekilde belirleyin. Bu araçlar yalnızca bilgi arar: ajanlar, aramalar, transkriptler, bakiyeler, belgeler. Her değişikliği gerçekleşmeden önce görmek istiyorsanız **Yazma/silme araçları** ayarını onay gerektirecek şekilde bırakın.

Özel bağlayıcılar ücretli bir Claude planı gerektirir. Team ve Enterprise planlarında, bir sahip önce bağlayıcıyı kuruluşun bağlayıcı ayarlarından ekler; ardından her üye kendi ThunderPhone hesabını bağlar.

### ChatGPT

1. ThunderPhone, ChatGPT uygulama dizininde görünüyorsa seçin ve bağlayın.
2. Aksi takdirde **Ayarlar → Uygulamalar ve Bağlayıcılar → Gelişmiş ayarlar** bölümünü açın, **Geliştirici modu** seçeneğini etkinleştirin ve `https://api.thunderphone.com/v1/mcp` URL'si ile OAuth kimlik doğrulamasını kullanarak bir bağlayıcı oluşturun.
3. ThunderPhone oturumu açın, kuruluşu seçin ve izinleri onaylayın. Araçlar menüsünden ThunderPhone'u bir sohbete ekleyin.

Bir ajanı veya telefon numarasını silmek, taslağı iptal etmek, kampanya başlatmak ve harici bir sisteme yazabilen test isteği göndermek, her iki uygulamada da ikinci bir onay gerektirir; bkz. [Yıkıcı işlemleri onaylama](#confirming-destructive-actions).

### Claude Code

```bash
claude mcp add --transport http thunderphone https://api.thunderphone.com/v1/mcp \
  --header "Authorization: Bearer $THUNDERPHONE_API_KEY"
```

### Codex

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

```toml
[mcp_servers.thunderphone]
url = "https://api.thunderphone.com/v1/mcp"
bearer_token_env_var = "THUNDERPHONE_API_KEY"
```

### Cursor

`.cursor/mcp.json` dosyasını oluşturun:

```json
{
  "mcpServers": {
    "thunderphone": {
      "url": "https://api.thunderphone.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${env:THUNDERPHONE_API_KEY}"
      }
    }
  }
}
```

### Claude Desktop

Claude Desktop yapılandırmasına bir `mcp-remote` köprüsü ekleyin:

```json
{
  "mcpServers": {
    "thunderphone": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.thunderphone.com/v1/mcp",
        "--header",
        "Authorization: Bearer ${THUNDERPHONE_API_KEY}"
      ],
      "env": {
        "THUNDERPHONE_API_KEY": "sk_live_YOUR_API_KEY"
      }
    }
  }
}
```

### VS Code

`.vscode/mcp.json` dosyasını oluşturun ve anahtarı VS Code'un giriş istemi aracılığıyla girin:

```json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "thunderphone-api-key",
      "description": "ThunderPhone organization API key",
      "password": true
    }
  ],
  "servers": {
    "thunderphone": {
      "type": "http",
      "url": "https://api.thunderphone.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${input:thunderphone-api-key}"
      }
    }
  }
}
```

## Araçlar

Her araç MCP ek açıklamaları taşır. Tablolarda **R** salt okunur, **D** yıkıcı, **I** idempotent ve **O** açık dünya/ağ etkileşimi anlamına gelir. Tire işareti, hiçbir ipucunun ayarlanmadığı anlamına gelir.

### Bağlantı

| Araç | Ana bağımsız değişkenler | Ek açıklamalar | Ne yapar |
| --- | --- | --- | --- |
| `get_connection_identity` | — | R, I | Kimlik bilgisini doğrular ve kuruluşunu ve güvenli kimlik bilgisi meta verilerini döndürür. |

### Ajanlar

| Araç | Ana bağımsız değişkenler | Ek açıklamalar | Ne yapar |
| --- | --- | --- | --- |
| `list_agents` | — | R, I | Ajanları listeler. |
| `get_agent` | `agent_id` | R, I | Tek bir ajanı getirir. |
| `create_agent` | ajan yapılandırması | — | Bir ajan oluşturur. |
| `update_agent` | `agent_id`, değiştirilen alanlar | D | Ajan taslağındaki alanları, taslakta bulunanların yerine koyarak hazırlar. Onay adımı olmadan çalışır: yayınlanan ajan `deploy_agent` kullanılana kadar değişmez ve `discard_agent_draft` taslağı geri alır. |
| `deploy_agent` | `agent_id`, isteğe bağlı `if_updated_at` | D, I | Taslağı üretim ortamına yükseltir. |
| `discard_agent_draft` | `agent_id`, isteğe bağlı `if_updated_at`, ikinci istekte `confirmation_token` | D, I | Hazırlanan değişiklikleri iptal eder. İki adımlıdır, bkz. [Yıkıcı işlemleri onaylama](#confirming-destructive-actions). |
| `duplicate_agent` | `agent_id`, isteğe bağlı `name` | — | Bir ajanı kuruluş içinde kopyalar. |
| `delete_agent` | `agent_id`, ikinci istekte `confirmation_token` | D, I | Bir ajanı kalıcı olarak siler. İki adımlıdır. |
| `list_agent_versions` | `agent_id` | R, I | Yayınlanan yapılandırma sürümlerini listeler. |

### Telefon numaraları ve operatörler

| Araç | Ana bağımsız değişkenler | Ek açıklamalar | İşlevi |
| --- | --- | --- | --- |
| `list_phone_numbers` | — | R, I | Kuruluş numaralarını ve yönlendirmeyi listeler. |
| `get_phone_number_limits` | — | R, I | Yönetilen numara kullanımını ve sınırlarını getirir. |
| `provision_phone_number` | isteğe bağlı `area_code`, `city`, `state`, `idempotency_key` | D, O | ThunderPhone tarafından yönetilen bir gelen numara satın alır. |
| `list_voip_connections` | — | R, I | Bağlı müşteri operatörlerini listeler. |
| `search_voip_numbers` | `connection_id`, `country`, `type`, isteğe bağlı `area_code` | R, I, O | Operatör envanterinde arama yapar. |
| `import_voip_numbers` | `connection_id`, `numbers` | D, O | Operatörde hâlihazırda sahip olunan numaraları içe aktarır. |
| `update_phone_number` | `phone_number_id`, yönlendirme/etiket/webhook alanları | D | Yapay zeka ajanı ataması dâhil olmak üzere numara yönlendirmesini günceller. |
| `delete_phone_number` | `phone_number_id`, `confirm`, isteğe bağlı `release_at_provider`, ikinci istekte `confirmation_token` | D, I, O | Bir numarayı serbest bırakır. İki adımlıdır. |

### SMS

| Araç | Ana bağımsız değişkenler | Açıklamalar | Ne yapar |
| --- | --- | --- | --- |
| `send_sms` | `from_number`, `to`, `body`, `idempotency_key` | D, I, O | Bağlı bir Twilio veya Telnyx numarası üzerinden tek bir düz metin SMS gönderir. |

### Aramalar

| Araç | Ana bağımsız değişkenler | Açıklamalar | İşlevi |
| --- | --- | --- | --- |
| `list_calls` | isteğe bağlı filtreler, `limit`, `offset` | R, I | REST çağrı geçmişi filtreleriyle çağrıları listeler. |
| `get_call` | `call_id` | R, I | Çağrı durumunu ve meta verileri alır. |
| `get_call_transcript` | `call_id`, isteğe bağlı `live` | R, I | Çağrı dökümünü alır. |
| `get_call_audio_url` | `call_id`, isteğe bağlı `download` | R, I, O | İmzalı bir ses URL'si döndürür; sesi hiçbir zaman MCP üzerinden akıtmaz. |
| `get_call_grade` | `call_id` | R, I | En son çağrı değerlendirmesini alır. |
| `place_call` | `agent_id`, `from_number`, `to_number` | D, O | İdempotent olmayan tek bir giden çağrı başlatır. |
| `export_calls` | çağrı filtreleri, `export_format` | R, I | REST uç noktasının sınırına kadar olan çağrıları JSON veya CSV olarak dışa aktarır. |

### Test ve doğrulama

| Araç | Ana bağımsız değişkenler | Açıklamalar | Ne yapar |
| --- | --- | --- | --- |
| `list_test_scenarios` | `agent_id` | R, I | Test senaryolarını listeler. |
| `create_test_scenario` | `agent_id`, `title`, `scenario_prompt`, isteğe bağlı koşullar | — | Bir senaryo oluşturur. |
| `generate_test_scenarios` | `agent_id`, isteğe bağlı `count`, `include_edge_cases`, `locale` | O | Ajan isteminden senaryolar oluşturur. |
| `run_agent_tests` | `agent_id`, `channel`, `consent_to_charge`, isteğe bağlı seçim/matris | D, O | Senaryoları web veya telefon üzerinden yürütür. |
| `get_test_run` | `agent_id`, `batch_id` | R, I | Toplu işlem durumunu ve senaryo başına sonuçları alır. |
| `list_validation_runs` | `agent_id` | R, I | Son taslak doğrulama çalıştırmalarını listeler. |
| `get_validation_status` | `agent_id` | R, I | En güncel doğrulama durumunu ve taslak eşleşmesini alır. |

### Bilgi

| Araç | Ana bağımsız değişkenler | Ek açıklamalar | Ne yapar |
| --- | --- | --- | --- |
| `list_knowledge_bases` | — | R, I | Bilgi tabanlarını listeler. |
| `create_knowledge_base` | `name`, isteğe bağlı `description` | — | Bir bilgi tabanı oluşturur. |
| `add_knowledge_document` | `knowledge_base_id`, `name`, `content` | — | Metin veya Markdown ekler. |
| `import_knowledge_url` | `url`, isteğe bağlı `name` | O | Güvenli alma işlemi için herkese açık bir sayfayı kuyruğa alır. |
| `search_knowledge` | `knowledge_base_id`, `query` | R, I | Üretim alma sistemi üzerinden arama yapar. |

### Entegrasyonlar, webhook'lar ve uzak MCP sunucuları

| Araç | Ana bağımsız değişkenler | Ek açıklamalar | İşlevi |
| --- | --- | --- | --- |
| `list_integrations` | — | R, I | HTTP işlev entegrasyonlarını listeler. |
| `create_integration` | `display_name`, işlev `spec`, isteğe bağlı uç nokta alanları | — | Bir HTTP aracı oluşturur. Kimlik doğrulama üst bilgilerini panodan ekleyin. |
| `test_integration` | `url`, isteğe bağlı yöntem/gövde/zaman aşımı, `header_names` içeren `integration_id`, ikinci istekte `confirmation_token` | D, O | Sınırlı, SSRF korumalı bir test isteği gönderir. Kaydedilen üst bilgi değerleri entegrasyondan doldurulur ve yalnızca kendi ana makinesine gönderilir. `POST` (varsayılan), `PUT`, `PATCH` ve `DELETE` iki aşamalıdır; `GET` hemen çalışır. |
| `list_webhook_endpoints` | — | R, I | İmzalı webhook uç noktalarını listeler. |
| `list_webhook_deliveries` | isteğe bağlı `agent_id`, isteğe bağlı `endpoint_id` | R, I | Son yük içermeyen webhook teslim sonuçlarını listeler. |
| `create_webhook_endpoint` | `label`, `url`, isteğe bağlı olaylar/durum | O | İmzalı bir webhook uç noktası oluşturur. |
| `test_webhook_endpoint` | `endpoint_id` | O | Normal teslim yoluyla sentetik bir olay gönderir. |
| `list_mcp_servers` | — | R, I | Sesli AI ajanlarının çağırabileceği uzak sunucuları listeler. |
| `create_mcp_server` | `display_name`, `url` | O | Uzak bir sunucuyu kaydeder ve senkronize eder. Kimlik doğrulama üst bilgilerine ihtiyaç duyan sunucular panodan eklenir. |
| `sync_mcp_server_tools` | `server_id` | D, O | Uzak bir sunucunun araç kataloğunu yeniler. |

### Kampanyalar

| Araç | Ana bağımsız değişkenler | Ek açıklamalar | Ne yapar |
| --- | --- | --- | --- |
| `list_campaigns` | — | R, I | Giden arama kampanyalarını listeler. |
| `create_campaign` | kampanya alanları | — | Taslak bir kampanya oluşturur. |
| `add_campaign_contacts` | `campaign_id`, `contacts` | — | En fazla 5.000 JSON kişisi ekler. |
| `campaign_action` | `campaign_id`, `action`, isteğe bağlı `consent_to_charge`, ikinci istekte `confirmation_token` | D, O | `start`, `pause`, `resume` veya `stop` çalıştırır. `start` ve `resume` iki adımlıdır; `pause` ve `stop` hemen çalışır. |
| `get_campaign_stats` | `campaign_id` | R, I | Sayaçları ve son sonuçları getirir. |

### Sesler, faturalandırma ve dokümantasyon

| Araç | Ana parametreler | Notlar | İşlevi |
| --- | --- | --- | --- |
| `list_voices` | — | R, I | Sesleri ve desteklenen dilleri listeler. |
| `preview_voice` | `voice`, `language`, `text` | O | Bir örnek oluşturur ve imzalı bir URL döndürür. |
| `list_voice_clones` | — | R, I | Özel ses klonlarını listeler. |
| `get_billing_summary` | — | R, I | Bakiyeyi ve resmi katman fiyatlarını getirir; ödeme değişikliği işlemleri sunulmaz. |
| `search_docs` | `query`, isteğe bağlı `limit` | R, I, O | Herkese açık dokümantasyon dizininde arama yapar. |
| `get_doc_page` | `path` | R, I, O | Herkese açık bir Markdown dokümantasyon sayfasını getirir. |

Tüm ürün araçları, herkese açık API ile aynı REST kod yollarını kullanır. Bu nedenle REST doğrulaması, kuruluş kapsamlandırması, roller, faturalandırma kabulü, kotalar, TCPA onayı, sağlayıcı güvenliği ve denetim davranışı değişmeden uygulanır.

## Yıkıcı işlemleri onaylama

D ile işaretlenmiş araçlar bir şeyi değiştirir veya kaldırır ya da gerçek kişileri aramaya başlar. Geri alınamayan işlemler iki istek gerektirir. İlk istek hiçbir şeyi değiştirmez ve şunu döndürür:

```json
{
  "status": "confirmation_required",
  "action": "Delete agent",
  "target": { "id": 195, "name": "Front Desk Receptionist" },
  "confirmation_token": "…",
  "expires_in_seconds": 600,
  "next_step": "…"
}
```

Yapay zeka ajanı, kullanıcıya neyin etkilendiğini gösterir ve onay ister. Ardından aynı bağımsız değişkenlerle, ayrıca `confirmation_token` ekleyerek isteği tekrarlar. Bir belirteç 10 dakika boyunca geçerlidir ve tek bir kuruluşu, tek bir aracı ve tam olarak tek bir bağımsız değişken kümesini kapsar; bu nedenle üç ajanı silmek için üç onay gerekir. `pause` veya `stop` içeren `campaign_action`, çalışan bir kampanyanın her zaman anında durdurulabilmesi için bu adımı atlar; `GET` içeren `test_integration` da aynısını yapar. Bazı D araçları tek istekte çalışır; çünkü D, sunucu tarafı onayı değil, etkilerini belirtir: `update_agent` taslaktaki içeriği değiştirir (`discard_agent_draft` bunu geri alır), `deploy_agent` canlı yapılandırmayı değiştirir, `update_phone_number` canlı çağrıları yeniden yönlendirir, `sync_mcp_server_tools` uzak bir sunucunun araç kataloğunu değiştirir, `import_voip_numbers` numaraları operatörünüze yeniden yönlendirir, `run_agent_tests` kredi harcayabilir, `send_sms` ve `place_call` gerçek bir kişiye ulaşır (`place_call` kendi onay doğrulamasını korur) ve `provision_phone_number` bir numara satın alır. MCP istemciniz yine de bunları onaylamanızı isteyebilir.

## Başlangıç istemleri

`prompts/list`, yeniden kullanılabilir beş iş akışını sunar:

- `create_inbound_receptionist`
- `run_agent_tests`
- `buy_and_attach_number`
- `review_low_grade_calls`
- `add_url_to_agent_knowledge`

Çalıştırmaya hazır bir kullanıcı mesajı almak için listelenen istem adı ve bildirilen bağımsız değişkenleriyle `prompts/get` kullanın.

## Kaynaklar

`resources/list`, herkese açık, önbelleğe alınmış başvuruları sunar:

| URI | İçerik |
| --- | --- |
| `thunderphone://docs/llms.txt` | Herkese açık dokümantasyon dizini. |
| `thunderphone://docs/quickstart` | Hızlı başlangıç Markdown'ı. |
| `thunderphone://pricing` | Güncel herkese açık fiyatlandırma Markdown'ı. |

Birini `resources/read` ile okuyun. Herkese açık getirme işlemleri kısa bir zaman aşımı, 2 MiB sınırı ve işlem içi on dakikalık önbellek kullanır.

## Protokol ve hatalar

Sunucu, `2025-06-18` ve `2025-03-26` protokol sürümlerini destekler; desteklenen bir istemci sürümünü yansıtır, aksi durumda `2025-06-18` sürümünü seçer. `initialize`, `ping`, araçlar, istemler, kaynaklar ve bildirimleri uygular. Bildirimler `202 Accepted` döndürür. Bu durumsuz sunucu bir SSE dinleyicisi veya oturum silme işlemi sunmaz; bu nedenle `GET` ve `DELETE`, `Allow: POST` ile birlikte `405 Method Not Allowed` döndürür.

Araç hataları, `isError: true` içeren başarılı JSON-RPC yanıtları olarak kalır. Metinleri, ardından bir JSON bloğu gelen kısa bir cümle içerir:

```json
{
  "code": "insufficient_balance",
  "detail": "There is not enough prepaid balance.",
  "next_step": "Call get_billing_summary, add funds in Organization > Billing, then retry."
}
```

Ayırt edici `outbound_tcpa_confirmation_required:` öneki `place_call` için korunur. Bilinmeyen JSON-RPC yöntemleri, HTTP `200` yanıtında `-32601` döndürür. JSON-RPC toplu istekleri MCP `2025-06-18` tarafından desteklenmez ve temiz bir `-32600` geçersiz istek hatası döndürür.
