---
title: "Koristite ThunderPhone kao MCP poslužitelj"
description: "Izrađujte, testirajte, provjeravajte i upravljajte glasovnim agentima ThunderPhonea iz Claudea, ChatGPT-a, Claude Codea, Codexa, Cursora, VS Codea ili drugog Streamable HTTP MCP klijenta."
---

ThunderPhone nudi Streamable HTTP poslužitelj za Model Context Protocol na adresi:

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

Ovo je suprotan smjer od [povezivanja udaljenog MCP poslužitelja s glasovnim agentom](/hr/guides/mcp-servers):

| Smjer | Rezultat |
| --- | --- |
| Udaljeni MCP poslužitelj → ThunderPhone agent | Glasovni agent može pozivati alate udaljenog poslužitelja. |
| ThunderPhone → vaš MCP klijent | Vaš agent za programiranje može izgraditi, testirati i upravljati ThunderPhoneom. |

## Provjera autentičnosti

Za klijente iz direktorija prema zadanim postavkama upotrebljavajte [OAuth](/hr/guides/oauth): prijavite se, odaberite organizaciju i odobrite zatražene dozvole. Opozovite pristup u odjeljku **Organizacija → API ključevi → Ovlaštene aplikacije**.

Za klijente konfigurirane s API ključem izradite `sk_live_` ključ u odjeljku **Organizacija → Ključevi** i učinite ga dostupnim svojem MCP klijentu kao `THUNDERPHONE_API_KEY`. Ključ je vezan uz jednu organizaciju; ID u vlasništvu druge organizacije ponaša se kao da nije pronađen.

<Warning>
  Ključ `sk_live_` može čitati podatke organizacije i izvršavati produkcijske radnje kao što su objavljivanje agenata, upućivanje poziva, kupnja brojeva, pokretanje kampanja i brisanje resursa. Nemojte ga stavljati u kôd preglednika, repozitorije, snimke zaslona ni zapisnike razgovora. Upotrijebite spremište tajni ili podršku klijenta za varijable okruženja te odmah opozovite izloženi ključ.
</Warning>

## CLI i stdio alternative

[ThunderPhone CLI](/hr/guides/cli) može zapisati konfiguraciju klijenta bez mijenjanja
nepovezanih poslužitelja:

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

Nakon globalne instalacije paketa `@thunderphone/mcp`, upotrijebite `thunderphone-mcp setup` s
istim opcijama. Postavljanje podržava Claude Code, Codex, Cursor, VS Code, Gemini, Claude
Desktop i Windsurf. Izravni HTTP ima prednost; Desktop upotrebljava stdio.

Za svaki klijent koji podržava stdio konfigurirajte `command: "npx"` s
`args: ["-y", "@thunderphone/mcp"]`. Omotač najprije upotrebljava `THUNDERPHONE_API_KEY`,
zatim vjerodajnice iz `thunderphone login`, uz osvježavanje isteklih tokena, a potom
OAuth putem `mcp-remote`. Prijava uređajem i OAuth zahtijevaju odgovarajuću aktivaciju API
OAutha. Put API ključa to ne zahtijeva. Izravne HTTP konfiguracije ne čitaju
spremište vjerodajnica CLI-ja; upotrijebite stdio omotač za ponovnu upotrebu prijave uređajem.

Ovo su alternative ručnim konfiguracijama klijenta u nastavku.

## Konfiguracija klijenta

Claude i ChatGPT prijavljuju se putem [OAutha](/hr/guides/oauth); API ključ nije potreban. Ako još nemate ThunderPhone račun, na stranici za prijavu odaberite **Izradite račun**; nakon potvrde e-pošte vratit ćete se na zaslon za odobravanje.

### Claude (web, stolno računalo i mobilni uređaji)

1. Otvorite **Postavke → Konektori**. Ako se ThunderPhone prikazuje u katalogu konektora, odaberite ga. U suprotnom odaberite **Dodajte prilagođeni konektor**, nazovite ga `ThunderPhone` i unesite `https://api.thunderphone.com/v1/mcp`.
2. Odaberite **Poveži**, prijavite se u ThunderPhone, odaberite organizaciju i odobrite dozvole.
3. U chatu omogućite ThunderPhone u izborniku alata i zatražite ono što vam je potrebno, na primjer "Prikaži moje agente".

Prilagođeni konektori zahtijevaju plaćeni Claude paket. U paketima Team i Enterprise vlasnik najprije dodaje konektor u postavkama konektora organizacije, a zatim svaki član povezuje vlastiti ThunderPhone račun.

### ChatGPT

1. Ako se ThunderPhone prikazuje u katalogu aplikacija ChatGPT-a, odaberite ga i povežite se.
2. U suprotnom otvorite **Postavke → Aplikacije i konektori → Napredne postavke**, uključite **Način rada za razvojne programere** i izradite konektor s URL-om `https://api.thunderphone.com/v1/mcp` i OAuth autentifikacijom.
3. Prijavite se u ThunderPhone, odaberite organizaciju i odobrite dozvole. Dodajte ThunderPhone u chat iz izbornika alata.

Brisanje agenta ili telefonskog broja, odbacivanje skice i pokretanje kampanje zahtijevaju dodatnu potvrdu u obje aplikacije; pogledajte [Potvrđivanje destruktivnih radnji](#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

Dodajte ovo u `~/.codex/config.toml`:

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

### Cursor

Izradite `.cursor/mcp.json`:

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

### Claude Desktop

Dodajte most `mcp-remote` u konfiguraciju Claude Desktopa:

```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

Izradite `.vscode/mcp.json` i unesite ključ putem upita za unos u VS Codeu:

```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}"
      }
    }
  }
}
```

## Alati

Svaki alat ima MCP napomene. U tablicama **R** znači samo za čitanje, **D** destruktivno, **I** idempotentno, a **O** interakciju s otvorenim svijetom/mrežom. Crtica znači da nije postavljena nikakva naznaka.

### Agenti

| Alat | Glavni argumenti | Napomene | Što radi |
| --- | --- | --- | --- |
| `list_agents` | — | R, I | Navodi agente. |
| `get_agent` | `agent_id` | R, I | Dohvaća jednog agenta. |
| `create_agent` | konfiguracija agenta | — | Stvara agenta. |
| `update_agent` | `agent_id`, promijenjena polja | — | Postavlja polja u radnu verziju agenta. |
| `deploy_agent` | `agent_id`, neobavezni `if_updated_at` | I | Promiče radnu verziju u produkciju. |
| `discard_agent_draft` | `agent_id`, neobavezni `if_updated_at`, `confirmation_token` u drugom zahtjevu | D, I | Odbacuje postavljene promjene. U dva koraka, pogledajte [Potvrđivanje destruktivnih radnji](#confirming-destructive-actions). |
| `duplicate_agent` | `agent_id`, neobavezni `name` | — | Kopira agenta unutar organizacije. |
| `delete_agent` | `agent_id`, `confirmation_token` u drugom zahtjevu | D, I | Trajno briše agenta. U dva koraka. |
| `list_agent_versions` | `agent_id` | R, I | Navodi implementirane verzije konfiguracije. |

### Telefonski brojevi i operateri

| Alat | Glavni argumenti | Napomene | Što radi |
| --- | --- | --- | --- |
| `list_phone_numbers` | — | R, I | Navodi brojeve organizacije i usmjeravanje. |
| `get_phone_number_limits` | — | R, I | Dohvaća upotrebu i ograničenja upravljanih brojeva. |
| `provision_phone_number` | neobavezni `area_code`, `city`, `state`, `idempotency_key` | O | Kupuje dolazni broj kojim upravlja ThunderPhone. |
| `list_voip_connections` | — | R, I | Navodi povezane operatere korisnika. |
| `search_voip_numbers` | `connection_id`, `country`, `type`, neobavezni `area_code` | R, I, O | Pretražuje inventar operatera. |
| `import_voip_numbers` | `connection_id`, `numbers` | O | Uvozi brojeve koji su već u vlasništvu kod operatera. |
| `update_phone_number` | `phone_number_id`, polja usmjeravanja/oznake/webhooka | — | Ažurira usmjeravanje broja, uključujući dodjelu agenta. |
| `delete_phone_number` | `phone_number_id`, `confirm`, neobavezni `release_at_provider`, `confirmation_token` u drugom zahtjevu | D, I, O | Oslobađa broj. U dva koraka. |

### Pozivi

| Alat | Glavni argumenti | Napomene | Što radi |
| --- | --- | --- | --- |
| `list_calls` | neobavezni filtri, `limit`, `offset` | R, I | Navodi pozive s filtrima REST povijesti poziva. |
| `get_call` | `call_id` | R, I | Dohvaća status i metapodatke poziva. |
| `get_call_transcript` | `call_id`, neobavezni `live` | R, I | Dohvaća transkript poziva. |
| `get_call_audio_url` | `call_id`, neobavezni `download` | R, I, O | Vraća potpisani URL zvuka; nikada ne prenosi zvuk putem MCP-a. |
| `get_call_grade` | `call_id` | R, I | Dohvaća najnoviju ocjenu poziva. |
| `place_call` | `agent_id`, `from_number`, `to_number` | O | Upućuje jedan neidempotentni odlazni poziv. |
| `export_calls` | filtri poziva, `export_format` | R, I | Izvozi do ograničenja REST krajnje točke kao JSON ili CSV. |

### Testiranje i provjera valjanosti

| Alat | Glavni argumenti | Napomene | Što radi |
| --- | --- | --- | --- |
| `list_test_scenarios` | `agent_id` | R, I | Navodi scenarije testiranja. |
| `create_test_scenario` | `agent_id`, `title`, `scenario_prompt`, neobavezni uvjeti | — | Stvara scenarij. |
| `generate_test_scenarios` | `agent_id`, neobavezni `count`, `include_edge_cases`, `locale` | O | Generira scenarije iz upute za agenta. |
| `run_agent_tests` | `agent_id`, `channel`, `consent_to_charge`, neobavezni odabir/matrica | O | Izvršava scenarije putem weba ili telefonije. |
| `get_test_run` | `agent_id`, `batch_id` | R, I | Dohvaća status skupine i rezultate po scenariju. |
| `list_validation_runs` | `agent_id` | R, I | Navodi nedavna pokretanja provjere valjanosti radne verzije. |
| `get_validation_status` | `agent_id` | R, I | Dohvaća najnovije stanje provjere valjanosti i podudaranje radne verzije. |

### Baza znanja

| Alat | Glavni argumenti | Napomene | Što radi |
| --- | --- | --- | --- |
| `list_knowledge_bases` | — | R, I | Navodi baze znanja. |
| `create_knowledge_base` | `name`, neobavezni `description` | — | Stvara bazu znanja. |
| `add_knowledge_document` | `knowledge_base_id`, `name`, `content` | — | Dodaje tekst ili Markdown. |
| `import_knowledge_url` | `url`, neobavezni `name` | O | Stavlja javnu stranicu u red za sigurno uvođenje. |
| `search_knowledge` | `knowledge_base_id`, `query` | R, I | Pretražuje produkcijski sustav dohvaćanja. |

### Integracije, webhookovi i udaljeni MCP poslužitelji

| Alat | Glavni argumenti | Napomene | Što radi |
| --- | --- | --- | --- |
| `list_integrations` | — | R, I | Navodi integracije HTTP funkcija. |
| `create_integration` | `display_name`, funkcijski `spec`, neobavezna polja krajnje točke | — | Stvara HTTP alat. |
| `test_integration` | `url`, neobavezni method/headers/body/timeout | O | Šalje ograničeni testni zahtjev zaštićen od SSRF-a. |
| `list_webhook_endpoints` | — | R, I | Navodi potpisane krajnje točke webhooka. |
| `create_webhook_endpoint` | `label`, `url`, neobavezni events/status | O | Stvara potpisanu krajnju točku webhooka. |
| `test_webhook_endpoint` | `endpoint_id` | O | Šalje sintetički događaj putem uobičajene isporuke. |
| `list_mcp_servers` | — | R, I | Navodi udaljene poslužitelje koje mogu pozivati glasovni agenti. |
| `create_mcp_server` | `display_name`, `url`, neobavezni headers | O | Registrira i sinkronizira udaljeni poslužitelj. |
| `sync_mcp_server_tools` | `server_id` | O | Osvježava katalog alata udaljenog poslužitelja. |

### Kampanje

| Alat | Glavni argumenti | Napomene | Što radi |
| --- | --- | --- | --- |
| `list_campaigns` | — | R, I | Navodi odlazne kampanje. |
| `create_campaign` | polja kampanje | — | Stvara radnu verziju kampanje. |
| `add_campaign_contacts` | `campaign_id`, `contacts` | — | Dodaje do 5.000 JSON kontakata. |
| `campaign_action` | `campaign_id`, `action`, neobavezni `consent_to_charge`, `confirmation_token` u drugom zahtjevu | D, O | Pokreće `start`, `pause`, `resume` ili `stop`. `start` i `resume` izvode se u dva koraka; `pause` i `stop` izvršavaju se odmah. |
| `get_campaign_stats` | `campaign_id` | R, I | Dohvaća brojače i nedavne ishode. |

### Glasovi, naplata, uvozi i dokumentacija

| Alat | Glavni argumenti | Napomene | Što radi |
| --- | --- | --- | --- |
| `list_voices` | — | R, I | Navodi glasove i podržane jezike. |
| `preview_voice` | `voice`, `language`, `text` | O | Generira uzorak i vraća potpisani URL. |
| `list_voice_clones` | — | R, I | Navodi prilagođene klonove glasa. |
| `get_billing_summary` | — | R, I | Dohvaća saldo i mjerodavne cijene razreda; izmjene plaćanja nisu dostupne. |
| `create_agent_import` | `vendor`, `vendor_key` | O | Pokreće šifrirani uvoz iz Vapi, Retell, ElevenLabs ili Bland. |
| `get_agent_import` | `public_id` | R, I | Dohvaća predloženu razliku uvoza. |
| `commit_agent_import` | `public_id` | — | Potvrđuje odabrane agente iz pregledanog plana. |
| `search_docs` | `query`, neobavezni `limit` | R, I, O | Pretražuje javni indeks dokumentacije. |
| `get_doc_page` | `path` | R, I, O | Dohvaća jednu javnu Markdown stranicu dokumentacije. |

Svi alati proizvoda koriste iste REST putanje koda kao javni API. REST provjera valjanosti, opseg organizacije, uloge, odobravanje naplate, kvote, TCPA potvrda, sigurnost pružatelja usluga i ponašanje revizije stoga se primjenjuju nepromijenjeno.

## Potvrđivanje destruktivnih radnji

Alati označeni s D mijenjaju ili uklanjaju nešto što se ne može vratiti ili započinju biranje stvarnih ljudi. Za njih su potrebna dva zahtjeva. Prvi zahtjev ništa ne mijenja i vraća:

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

Asistent korisniku prikazuje na što to utječe i traži potvrdu. Zatim ponavlja zahtjev s istim argumentima te s `confirmation_token`. Token vrijedi 10 minuta i obuhvaća jednu organizaciju, jedan alat i jedan točan skup argumenata, pa su za brisanje tri agenta potrebne tri potvrde. `campaign_action` s `pause` ili `stop` preskače ovaj korak kako bi se aktivna kampanja uvijek mogla odmah zaustaviti.

## Početni upiti

`prompts/list` nudi šest višekratno upotrebljivih radnih tijekova:

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

Upotrijebite `prompts/get` s navedenim nazivom upita i njegovim deklariranim argumentima da biste primili korisničku poruku spremnu za pokretanje.

## Resursi

`resources/list` izlaže javne, predmemorirane reference:

| URI | Sadržaj |
| --- | --- |
| `thunderphone://docs/llms.txt` | Indeks javne dokumentacije. |
| `thunderphone://docs/quickstart` | Markdown za brzi početak. |
| `thunderphone://pricing` | Markdown s trenutačnim javnim cijenama. |

Pročitajte resurs pomoću `resources/read`. Javna dohvaćanja koriste kratko vremensko ograničenje, ograničenje od 2 MiB i desetominutnu predmemoriju unutar procesa.

## Protokol i pogreške

Poslužitelj podržava verzije protokola `2025-06-18` i `2025-03-26`; vraća podržanu verziju klijenta, a u suprotnom odabire `2025-06-18`. Implementira `initialize`, `ping`, alate, upite, resurse i obavijesti. Obavijesti vraćaju `202 Accepted`. Ovaj poslužitelj bez stanja ne izlaže SSE slušatelj ni brisanje sesije, stoga `GET` i `DELETE` vraćaju `405 Method Not Allowed` s `Allow: POST`.

Neuspjesi alata i dalje su uspješni JSON-RPC odgovori s `isError: true`. Njihov tekst sadrži kratku rečenicu nakon koje slijedi JSON blok:

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

Prepoznatljivi prefiks `outbound_tcpa_confirmation_required:` zadržava se za `place_call`. Nepoznate JSON-RPC metode vraćaju `-32601` u HTTP odgovoru `200`. MCP `2025-06-18` ne podržava JSON-RPC pakete te vraća čistu pogrešku nevaljanog zahtjeva `-32600`.
