---
title: "Користите ThunderPhone као MCP сервер"
description: "Правите, тестирајте, проверавајте и користите ThunderPhone гласовне агенте из Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code или другог Streamable HTTP MCP клијента."
---

ThunderPhone пружа Streamable HTTP сервер за Model Context Protocol на адреси:

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

Ово је супротан смер од [повезивања удаљеног MCP сервера са гласовним агентом](/sr/guides/mcp-servers):

| Смер | Резултат |
| --- | --- |
| Удаљени MCP сервер → ThunderPhone агент | Гласовни агент може да позива алате удаљеног сервера. |
| ThunderPhone → Ваш MCP клијент | Ваш агент за програмирање може да изграђује, тестира и користи ThunderPhone. |

## Потврда идентитета

Подразумевано користите [OAuth](/sr/guides/oauth) за клијенте из директоријума: пријавите се, изаберите организацију и одобрите затражене дозволе. Опозовите приступ у оквиру **Организација → API кључеви → Овлашћене апликације**.

За клијенте конфигурисане са API кључем, креирајте `sk_live_` кључ у оквиру **Организација → Кључеви** и изложите га MCP клијенту као `THUNDERPHONE_API_KEY`. Кључ је везан за једну организацију; идентификатор у власништву друге организације понаша се као да није пронађен.

<Warning>
  `sk_live_` кључ може да чита податке организације и извршава продукционе радње као што су постављање агената, упућивање позива, куповина бројева, покретање кампања и брисање ресурса. Не чувајте га у коду прегледача, репозиторијумима, снимцима екрана и дневницима ћаскања. Користите складиште тајни или подршку за променљиве окружења свог клијента и одмах опозовите изложени кључ.
</Warning>

## Алтернативе за CLI и stdio

[ThunderPhone CLI](/sr/guides/cli) може да упише конфигурацију клијента уз очување
неповезаних сервера:

```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`, користите `thunderphone-mcp setup` са
истим опцијама. Подешавање подржава Claude Code, Codex, Cursor, VS Code, Gemini, Claude
Desktop и Windsurf. Директни HTTP је пожељнији; Desktop користи stdio.

За сваки клијент који подржава stdio, конфигуришите `command: "npx"` са
`args: ["-y", "@thunderphone/mcp"]`. Омотач прво користи `THUNDERPHONE_API_KEY`,
затим акредитиве из `thunderphone login`, освежавајући истекле токене, а потом
OAuth преко `mcp-remote`. Пријава путем уређаја и OAuth захтевају одговарајуће увођење
OAuth-а за API. Путања са API кључем то не захтева. Конфигурације за директни HTTP не читају
CLI складиште акредитива; користите stdio омотач да бисте поново користили пријаву путем уређаја.

Ово су алтернативе ручним конфигурацијама клијента у наставку.

## Конфигурација клијента

Claude и ChatGPT се пријављују преко [OAuth-а](/sr/guides/oauth); API кључ није потребан. Ако још немате ThunderPhone налог, на страници за пријављивање изаберите **Направите налог**; након потврде имејл адресе вратићете се на екран за одобравање.

### Claude (веб, рачунар и мобилни уређаји)

1. Отворите **Подешавања → Конектори**. Ако се ThunderPhone појављује у директоријуму конектора, изаберите га. У супротном, изаберите **Додајте прилагођени конектор**, назовите га `ThunderPhone` и унесите `https://api.thunderphone.com/v1/mcp`.
2. Изаберите **Повежите**, пријавите се на ThunderPhone, одаберите организацију и одобрите дозволе.
3. У ћаскању омогућите ThunderPhone из менија алатки и затражите оно што Вам је потребно, на пример „Прикажи моје агенте“.

Прилагођени конектори захтевају плаћени Claude пакет. У пакетима Team и Enterprise власник најпре додаје конектор у подешавањима конектора организације, а затим сваки члан повезује сопствени ThunderPhone налог.

### ChatGPT

1. Ако се ThunderPhone појављује у директоријуму ChatGPT апликација, изаберите га и повежите.
2. У супротном, отворите **Подешавања → Апликације и конектори → Напредна подешавања**, укључите **Режим за програмере** и направите конектор са URL адресом `https://api.thunderphone.com/v1/mcp` и OAuth аутентификацијом.
3. Пријавите се на ThunderPhone, одаберите организацију и одобрите дозволе. Додајте ThunderPhone у ћаскање из менија алатки.

Брисање агента или броја телефона, одбацивање нацрта и покретање кампање захтевају другу потврду у обе апликације; погледајте [Потврђивање деструктивних радњи](#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

Додајте ово у `~/.codex/config.toml`:

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

### Cursor

Направите `.cursor/mcp.json`:

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

### Claude Desktop

Додајте `mcp-remote` мост у конфигурацију Claude Desktop-а:

```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` и унесите кључ путем упита за унос у VS Code-у:

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

## Алатке

Свака алатка има MCP напомене. У табелама, **R** означава само за читање, **D** деструктивно, **I** идемпотентно, а **O** интеракцију са отвореним светом/мрежом. Цртица означава да напомена није постављена.

### Агенти

| Алатка | Главни аргументи | Напомене | Шта ради |
| --- | --- | --- | --- |
| `list_agents` | — | R, I | Приказује листу агената. |
| `get_agent` | `agent_id` | R, I | Преузима једног агента. |
| `create_agent` | конфигурација агента | — | Креира агента. |
| `update_agent` | `agent_id`, измењена поља | — | Поставља поља у радну верзију агента. |
| `deploy_agent` | `agent_id`, опциони `if_updated_at` | I | Промовише радну верзију у продукцију. |
| `discard_agent_draft` | `agent_id`, опциони `if_updated_at`, `confirmation_token` у другом захтеву | D, I | Одбацује припремљене измене. У два корака, погледајте [Потврђивање деструктивних радњи](#confirming-destructive-actions). |
| `duplicate_agent` | `agent_id`, опциони `name` | — | Копира агента унутар организације. |
| `delete_agent` | `agent_id`, `confirmation_token` у другом захтеву | D, I | Трајно брише агента. У два корака. |
| `list_agent_versions` | `agent_id` | R, I | Приказује листу верзија конфигурације у продукцији. |

### Бројеви телефона и оператери

| Алатка | Главни аргументи | Напомене | Шта ради |
| --- | --- | --- | --- |
| `list_phone_numbers` | — | R, I | Приказује листу бројева организације и усмеравања. |
| `get_phone_number_limits` | — | R, I | Преузима коришћење и ограничења управљаних бројева. |
| `provision_phone_number` | опциони `area_code`, `city`, `state`, `idempotency_key` | O | Купује долазни број којим управља ThunderPhone. |
| `list_voip_connections` | — | R, I | Приказује листу повезаних оператера клијента. |
| `search_voip_numbers` | `connection_id`, `country`, `type`, опциони `area_code` | R, I, O | Претражује инвентар оператера. |
| `import_voip_numbers` | `connection_id`, `numbers` | O | Увози бројеве који су већ у власништву код оператера. |
| `update_phone_number` | `phone_number_id`, поља за усмеравање/ознаку/веб-закачку | — | Ажурира усмеравање броја, укључујући доделу агента. |
| `delete_phone_number` | `phone_number_id`, `confirm`, опциони `release_at_provider`, `confirmation_token` у другом захтеву | D, I, O | Ослобађа број. У два корака. |

### Позиви

| Алатка | Главни аргументи | Напомене | Шта ради |
| --- | --- | --- | --- |
| `list_calls` | опциони филтери, `limit`, `offset` | R, I | Приказује листу позива помоћу REST филтера за историју позива. |
| `get_call` | `call_id` | R, I | Преузима статус и метаподатке позива. |
| `get_call_transcript` | `call_id`, опциони `live` | R, I | Преузима транскрипт позива. |
| `get_call_audio_url` | `call_id`, опциони `download` | R, I, O | Враћа потписани URL за аудио; никада не стримује аудио преко MCP-а. |
| `get_call_grade` | `call_id` | R, I | Преузима најновију оцену позива. |
| `place_call` | `agent_id`, `from_number`, `to_number` | O | Успоставља један неидемпотентни одлазни позив. |
| `export_calls` | филтери позива, `export_format` | R, I | Извози до ограничења REST крајње тачке као JSON или CSV. |

### Тестирање и валидација

| Алатка | Главни аргументи | Напомене | Шта ради |
| --- | --- | --- | --- |
| `list_test_scenarios` | `agent_id` | R, I | Приказује листу сценарија за тестирање. |
| `create_test_scenario` | `agent_id`, `title`, `scenario_prompt`, опциони услови | — | Креира сценарио. |
| `generate_test_scenarios` | `agent_id`, опциони `count`, `include_edge_cases`, `locale` | O | Генерише сценарије из упита агента. |
| `run_agent_tests` | `agent_id`, `channel`, `consent_to_charge`, опциони избор/матрица | O | Извршава сценарије преко веба или телефоније. |
| `get_test_run` | `agent_id`, `batch_id` | R, I | Преузима статус пакета и резултате по сценарију. |
| `list_validation_runs` | `agent_id` | R, I | Приказује листу недавних покретања валидације радне верзије. |
| `get_validation_status` | `agent_id` | R, I | Преузима најновије стање валидације и подударање радне верзије. |

### Знање

| Алатка | Главни аргументи | Напомене | Шта ради |
| --- | --- | --- | --- |
| `list_knowledge_bases` | — | R, I | Приказује листу база знања. |
| `create_knowledge_base` | `name`, опциони `description` | — | Креира базу знања. |
| `add_knowledge_document` | `knowledge_base_id`, `name`, `content` | — | Додаје текст или Markdown. |
| `import_knowledge_url` | `url`, опциони `name` | O | Ставља јавну страницу у ред за безбедно уношење. |
| `search_knowledge` | `knowledge_base_id`, `query` | R, I | Претражује продукциони систем за преузимање знања. |

### Интеграције, веб-закачке и удаљени MCP сервери

| Алатка | Главни аргументи | Напомене | Шта ради |
| --- | --- | --- | --- |
| `list_integrations` | — | R, I | Приказује листу интеграција HTTP функција. |
| `create_integration` | `display_name`, функцијски `spec`, опциона поља крајње тачке | — | Креира HTTP алатку. |
| `test_integration` | `url`, опциони метод/заглавља/тело/временско ограничење | O | Шаље ограничен тест захтев заштићен од SSRF-а. |
| `list_webhook_endpoints` | — | R, I | Приказује листу потписаних крајњих тачака веб-закачки. |
| `create_webhook_endpoint` | `label`, `url`, опциони догађаји/статус | O | Креира потписану крајњу тачку веб-закачке. |
| `test_webhook_endpoint` | `endpoint_id` | O | Шаље синтетички догађај путем уобичајене испоруке. |
| `list_mcp_servers` | — | R, I | Приказује листу удаљених сервера које гласовни агенти могу да позивају. |
| `create_mcp_server` | `display_name`, `url`, опциона заглавља | O | Региструје и синхронизује удаљени сервер. |
| `sync_mcp_server_tools` | `server_id` | O | Освежава каталог алатки удаљеног сервера. |

### Кампање

| Алатка | Главни аргументи | Напомене | Шта ради |
| --- | --- | --- | --- |
| `list_campaigns` | — | R, I | Приказује листу одлазних кампања. |
| `create_campaign` | поља кампање | — | Креира радну верзију кампање. |
| `add_campaign_contacts` | `campaign_id`, `contacts` | — | Додаје до 5.000 JSON контаката. |
| `campaign_action` | `campaign_id`, `action`, опциони `consent_to_charge`, `confirmation_token` у другом захтеву | D, O | Покреће `start`, `pause`, `resume` или `stop`. `start` и `resume` су у два корака; `pause` и `stop` покрећу се одмах. |
| `get_campaign_stats` | `campaign_id` | R, I | Преузима бројаче и недавне исходе. |

### Гласови, наплата, увози и документација

| Алатка | Главни аргументи | Напомене | Шта ради |
| --- | --- | --- | --- |
| `list_voices` | — | R, I | Приказује листу гласова и подржаних језика. |
| `preview_voice` | `voice`, `language`, `text` | O | Генерише узорак и враћа потписани URL. |
| `list_voice_clones` | — | R, I | Приказује листу прилагођених клонова гласова. |
| `get_billing_summary` | — | R, I | Преузима стање и званичне цене нивоа; нису доступне измене плаћања. |
| `create_agent_import` | `vendor`, `vendor_key` | O | Покреће шифровани увоз из Vapi, Retell, ElevenLabs или Bland. |
| `get_agent_import` | `public_id` | R, I | Преузима предложену разлику увоза. |
| `commit_agent_import` | `public_id` | — | Потврђује изабране агенте из прегледаног плана. |
| `search_docs` | `query`, опциони `limit` | R, I, O | Претражује јавни индекс документације. |
| `get_doc_page` | `path` | R, I, O | Преузима једну јавну Markdown страницу документације. |

Све алатке производа користе исте REST путање кода као јавни API. REST валидација, опсег организације, улоге, одобравање наплате, квоте, TCPA потврда, безбедност добављача и понашање ревизије стога се примењују непромењено.

## Потврђивање деструктивних радњи

Алатке означене са D мењају или уклањају нешто што се не може вратити, или започињу позивање стварних људи. Захтевају два захтева. Први захтев ништа не мења и враћа:

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

Асистент приказује кориснику шта је обухваћено и тражи потврду. Затим понавља захтев са истим аргументима и додатим `confirmation_token`. Токен важи 10 минута и покрива једну организацију, једну алатку и један тачан скуп аргумената, па је за брисање три агента потребно три потврде. `campaign_action` са `pause` или `stop` прескаче овај корак како би активна кампања увек могла одмах да се заустави.

## Почетни упити

`prompts/list` нуди шест вишекратно употребљивих токова рада:

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

Користите `prompts/get` са наведеним именом упита и његовим декларисаним аргументима да бисте добили поруку корисника спремну за покретање.

## Ресурси

`resources/list` излаже јавне, кеширане референце:

| URI | Садржај |
| --- | --- |
| `thunderphone://docs/llms.txt` | Индекс јавне документације. |
| `thunderphone://docs/quickstart` | Quickstart Markdown. |
| `thunderphone://pricing` | Тренутни јавни Markdown са ценама. |

Прочитајте један помоћу `resources/read`. Јавна преузимања користе кратко временско ограничење, ограничење од 2 MiB и кеш унутар процеса у трајању од десет минута.

## Протокол и грешке

Сервер подржава верзије протокола `2025-06-18` и `2025-03-26`; враћа подржану верзију клијента, а у супротном бира `2025-06-18`. Имплементира `initialize`, `ping`, алатке, упите, ресурсе и обавештења. Обавештења враћају `202 Accepted`. Овај сервер без стања не излаже SSE слушач нити брисање сесије, па `GET` и `DELETE` враћају `405 Method Not Allowed` са `Allow: POST`.

Неуспеси алатки остају успешни JSON-RPC одговори са `isError: true`. Њихов текст садржи кратку реченицу након које следи JSON блок:

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

Посебан префикс `outbound_tcpa_confirmation_required:` задржава се за `place_call`. Непознате JSON-RPC методе враћају `-32601` у HTTP `200` одговору. JSON-RPC пакети нису подржани у MCP `2025-06-18` и враћају чисту грешку неважећег захтева `-32600`.
