Open in
Използвайте ThunderPhone като MCP сървър
Създавайте, тествайте, валидирайте и управлявайте гласови агенти на ThunderPhone от Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code или друг Streamable HTTP MCP клиент.
ThunderPhone предоставя HTTP сървър с поточно предаване за Протокола за контекст на модела на:
https://api.thunderphone.com/v1/mcpТова е обратната посока спрямо свързването на отдалечен MCP сървър с гласов агент:
| Посока | Резултат |
|---|---|
| Отдалечен MCP сървър → агент на ThunderPhone | Гласов агент може да извиква инструментите на отдалечения сървър. |
| ThunderPhone → вашият MCP клиент | Вашият агент за програмиране може да създава, тества и управлява ThunderPhone. |
Удостоверяване
Използвайте OAuth по подразбиране за клиенти от директорията: влезте, изберете организация и одобрете поисканите разрешения. Отнемете достъпа от Организация → API ключове → Упълномощени приложения.
За клиенти, конфигурирани с API ключ, създайте ключ sk_live_ от Организация → Ключове и го предоставете на вашия MCP клиент като THUNDERPHONE_API_KEY. Ключът е обвързан с една организация; идентификатор, притежаван от друга организация, се третира като несъществуващ.
Алтернативи с CLI и stdio
CLI на ThunderPhone може да запише конфигурация на клиента, като запази несвързаните сървъри:
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 изискват съответното
внедряване на API OAuth. Пътят с API ключ не го изисква. Директните HTTP конфигурации не четат
хранилището за идентификационни данни на CLI; използвайте обвивката stdio, за да използвате повторно влизането от устройство.
Това са алтернативи на ръчните конфигурации на клиенти по-долу.
Конфигуриране на клиента
Claude и ChatGPT влизат чрез OAuth; не се използва API ключ. Ако все още нямате акаунт в ThunderPhone, изберете Създаване на акаунт на страницата за вход и след потвърждаване на имейла си ще се върнете към екрана за одобрение.
Claude (уеб, настолен компютър и мобилно устройство)
- Отворете Персонализиране → Конектори (Настройки → Конектори в по-стари версии). Ако ThunderPhone се показва в директорията с конектори, изберете го. В противен случай изберете Добавяне на персонализиран конектор, наименувайте го
ThunderPhoneи въведетеhttps://api.thunderphone.com/v1/mcp. - Изберете Свързване, влезте в ThunderPhone, изберете организацията и одобрете разрешенията.
- В чат активирайте ThunderPhone от менюто с инструменти и поискайте това, от което се нуждаете, например „Изброй моите агенти“.
Claude пита, преди да използва всеки инструмент за първи път. За да пропуснете повечето от тези подкани, отворете Персонализиране → Конектори → ThunderPhone и настройте Инструменти само за четене да бъдат винаги разрешени. Тези инструменти само извличат информация: агенти, обаждания, транскрипции, салда, документация. Оставете Инструменти за записване/изтриване с изискване за одобрение, ако искате да виждате всяка промяна, преди да се извърши.
Персонализираните конектори изискват платен план за Claude. При планове Team и Enterprise собственикът първо добавя конектора в настройките за конектори на организацията, след което всеки член свързва собствения си акаунт в ThunderPhone.
ChatGPT
- Ако ThunderPhone се показва в директорията с приложения на ChatGPT, изберете го и го свържете.
- В противен случай отворете Настройки → Приложения и конектори → Разширени настройки, включете Режим за разработчици и създайте конектор с URL адрес
https://api.thunderphone.com/v1/mcpи OAuth удостоверяване. - Влезте в ThunderPhone, изберете организацията и одобрете разрешенията. Добавете ThunderPhone към чат от менюто с инструменти.
Изтриването на агент или телефонен номер, отхвърлянето на чернова, стартирането на кампания и изпращането на тестова заявка, която може да записва във външна система, изискват второ потвърждение и в двете приложения; вижте Потвърждаване на разрушителни действия.
Claude Code
claude mcp add --transport http thunderphone https://api.thunderphone.com/v1/mcp \
--header "Authorization: Bearer $THUNDERPHONE_API_KEY"Codex
Добавете това към ~/.codex/config.toml:
[mcp_servers.thunderphone]
url = "https://api.thunderphone.com/v1/mcp"
bearer_token_env_var = "THUNDERPHONE_API_KEY"Cursor
Създайте .cursor/mcp.json:
{
"mcpServers": {
"thunderphone": {
"url": "https://api.thunderphone.com/v1/mcp",
"headers": {
"Authorization": "Bearer ${env:THUNDERPHONE_API_KEY}"
}
}
}
}Claude Desktop
Добавете мост mcp-remote към конфигурацията на Claude Desktop:
{
"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:
{
"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 — взаимодействие с външния свят/мрежата. Тире означава, че няма зададена подсказка.
Връзка
| Инструмент | Основни аргументи | Анотации | Какво прави |
|---|---|---|---|
get_connection_identity | — | R, I | Валидира идентификационните данни и връща организацията и безопасни метаданни за идентификационните данни. |
Агенти
| Инструмент | Основни аргументи | Анотации | Какво прави |
|---|---|---|---|
list_agents | — | R, I | Извежда списък с агенти. |
get_agent | agent_id | R, I | Извлича един агент. |
create_agent | конфигурация на агент | — | Създава агент. |
update_agent | agent_id, променени полета | D | Подготвя полета в черновата на агента, като заменя съществуващите в черновата. Изпълнява се без стъпка за потвърждение: внедреният агент остава непроменен до deploy_agent, а discard_agent_draft връща черновата към предишното ѝ състояние. |
deploy_agent | agent_id, незадължителен if_updated_at | D, I | Публикува черновата в продукционна среда. |
discard_agent_draft | agent_id, незадължителен if_updated_at, confirmation_token при втората заявка | D, I | Отхвърля подготвените промени. В две стъпки; вижте Потвърждаване на разрушителни действия. |
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 | D, 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 | D, O | Импортира номера, които вече са притежавани при доставчика. |
update_phone_number | phone_number_id, полета за маршрутизация/етикет/webhook | D | Актуализира маршрутизацията на номера, включително назначаването на агент. |
delete_phone_number | phone_number_id, confirm, незадължителен release_at_provider, confirmation_token при втората заявка | D, I, O | Освобождава номер. В две стъпки. |
SMS
| Инструмент | Основни аргументи | Анотации | Какво прави |
|---|---|---|---|
send_sms | from_number, to, body, idempotency_key | D, I, O | Изпраща едно SMS съобщение с обикновен текст чрез свързан номер на Twilio или Telnyx. |
Обаждания
| Инструмент | Основни аргументи | Анотации | Какво прави |
|---|---|---|---|
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 | D, 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, незадължителен избор/матрица | D, 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, незадължителни метод/тяло/изчакване, integration_id с header_names, confirmation_token при втората заявка | D, O | Изпраща ограничена тестова заявка, защитена срещу SSRF. Запазените стойности на заглавките се попълват от интеграцията и се изпращат само до нейния собствен хост. POST (по подразбиране), PUT, PATCH и DELETE са в две стъпки; GET се изпълнява веднага. |
list_webhook_endpoints | — | R, I | Извежда подписаните крайни точки за уебкуки. |
list_webhook_deliveries | незадължителен agent_id, незадължителен endpoint_id | 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 | D, 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 | Извлича баланса и официалните цени на нивата; не са достъпни промени по плащанията. |
search_docs | query, незадължителен limit | R, I, O | Търси в индекса на публичната документация. |
get_doc_page | path | R, I, O | Извлича една публична страница с документация в Markdown. |
Всички продуктови инструменти използват същите REST кодови пътища като публичния API. Следователно REST валидирането, обхватът на организацията, ролите, допускането за фактуриране, квотите, потвърждението по TCPA, безопасността на доставчиците и поведението при одит се прилагат без промяна.
Потвърждаване на разрушителни действия
Инструментите, отбелязани с D, променят или премахват нещо, или започват да набират реални хора. За тези, които не могат да бъдат отменени, са необходими две заявки. Първата заявка не променя нищо и връща:
{
"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 пропуска тази стъпка, за да може текуща кампания винаги да бъде спряна незабавно, както и test_integration с GET. Някои инструменти с D се изпълняват с една заявка, тъй като D обозначава техния ефект, а не потвърждение от страна на сървъра: update_agent заменя съдържанието на черновата (discard_agent_draft го възстановява), deploy_agent заменя активната конфигурация, update_phone_number пренасочва активните обаждания, sync_mcp_server_tools заменя каталога с инструменти на отдалечен сървър, import_voip_numbers пренасочва номерата към вашия телекомуникационен доставчик, run_agent_tests може да изразходва кредит, send_sms и place_call достигат до реален човек (place_call запазва собственото си потвърждение за съгласие), а provision_phone_number купува номер. Вашият MCP клиент все пак може да поиска да ги одобрите.
Начални подкани
prompts/list предоставя пет работни процеса за многократна употреба:
create_inbound_receptionistrun_agent_testsbuy_and_attach_numberreview_low_grade_callsadd_url_to_agent_knowledge
Използвайте prompts/get с името на посочената подкана и декларираните ѝ аргументи, за да получите готово за изпълнение потребителско съобщение.
Ресурси
resources/list предоставя публични кеширани справки:
| URI | Съдържание |
|---|---|
thunderphone://docs/llms.txt | Индекс на публичната документация. |
thunderphone://docs/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 блок:
{
"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.