ThunderPhone 2.0 正式上线。全程自助,低至2美分/分钟。查看发布公告

Connect tools & data

将 ThunderPhone 用作 MCP 服务器

通过 Claude、ChatGPT、Claude Code、Codex、Cursor、VS Code 或其他 Streamable HTTP MCP 客户端构建、测试、验证和运营 ThunderPhone 语音智能体。

ThunderPhone 在以下地址提供 Streamable HTTP Model Context Protocol 服务器:

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

这与将远程 MCP 服务器连接到语音智能体的方向相反:

方向结果
远程 MCP 服务器 → ThunderPhone 智能体语音智能体可以调用远程服务器的工具。
ThunderPhone → 您的 MCP 客户端您的编程智能体可以构建、测试和操作 ThunderPhone。

身份验证

对于目录客户端,默认使用 OAuth:登录、选择组织并批准请求的权限。在组织 → API 密钥 → 已授权应用下撤销访问权限。

对于配置了 API 密钥的客户端,请在组织 → 密钥下创建 sk_live_ 密钥,并将其作为 THUNDERPHONE_API_KEY 提供给您的 MCP 客户端。该密钥绑定到一个组织;属于其他组织的 ID 会被视为未找到。

CLI 和 stdio 替代方案

ThunderPhone CLI 可以写入客户端配置,同时保留 无关的服务器:

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 中的凭据,并刷新已过期的令牌,随后通过 mcp-remote 使用 OAuth。设备登录和 OAuth 需要启用相应的 API OAuth 功能。API 密钥路径不需要。直接 HTTP 配置不会读取 CLI 凭据存储;请使用 stdio 封装器以复用设备登录。

这些是下方手动客户端配置的替代方案。

客户端配置

Claude 和 ChatGPT 通过 OAuth 登录;无需 API 密钥。如果您尚未拥有 ThunderPhone 账户,请在登录页面选择 创建账户,验证邮箱后您将返回授权确认页面。

Claude(网页版、桌面版和移动版)

  1. 打开 自定义 → 连接器(旧版本中为 设置 → 连接器)。如果 ThunderPhone 显示在连接器目录中,请选择它。否则,请选择 添加自定义连接器,将其命名为 ThunderPhone,并输入 https://api.thunderphone.com/v1/mcp。
  2. 选择 连接,登录 ThunderPhone,选择组织,然后批准权限。
  3. 在聊天中,从工具菜单启用 ThunderPhone,并提出您的需求,例如“列出我的智能体”。

Claude 在首次使用每个工具前都会请求确认。如需跳过大多数此类提示,请打开 自定义 → 连接器 → ThunderPhone,并将 只读工具 设为始终允许。这些工具仅用于查询:智能体、通话、转录文本、余额和文档。如果您希望在每项更改发生前查看,请将 写入/删除工具 保持为需确认。

自定义连接器需要付费 Claude 套餐。在 Team 和 Enterprise 套餐中,所有者需先在组织的连接器设置中添加连接器,然后每位成员再连接自己的 ThunderPhone 账户。

ChatGPT

  1. 如果 ThunderPhone 显示在 ChatGPT 应用目录中,请选择并连接它。
  2. 否则,打开 设置 → 应用与连接器 → 高级设置,开启 开发者模式,然后创建一个使用 URL https://api.thunderphone.com/v1/mcp 和 OAuth 身份验证的连接器。
  3. 登录 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_agentagent_idR, I获取一个智能体。
create_agent智能体配置—创建智能体。
update_agentagent_id、已更改字段D在智能体草稿中暂存字段,替换草稿中原有的内容。无需确认即可运行:在执行 deploy_agent 前,已部署的智能体不会更改;discard_agent_draft 会还原草稿。
deploy_agentagent_id、可选 if_updated_atD, I将草稿提升至生产环境。
discard_agent_draftagent_id、可选 if_updated_at、第二次请求时的 confirmation_tokenD, I丢弃暂存的更改。分两步操作,参见确认破坏性操作。
duplicate_agentagent_id、可选 name—在组织内复制智能体。
delete_agentagent_id、第二次请求时的 confirmation_tokenD, I永久删除智能体。分两步操作。
list_agent_versionsagent_idR, I列出已部署的配置版本。

电话号码和运营商

工具主要参数注释功能
list_phone_numbers—R, I列出组织号码及路由。
get_phone_number_limits—R, I获取托管号码的使用情况和限制。
provision_phone_number可选 area_code、city、state、idempotency_keyD, O购买由 ThunderPhone 托管的入站号码。
list_voip_connections—R, I列出已连接的客户运营商。
search_voip_numbersconnection_id、country、type、可选 area_codeR, I, O搜索运营商号码库存。
import_voip_numbersconnection_id、numbersD, O导入已在运营商处拥有的号码。
update_phone_numberphone_number_id、路由/标签/webhook 字段D更新号码路由,包括智能体分配。
delete_phone_numberphone_number_id、confirm、可选 release_at_provider、第二次请求时的 confirmation_tokenD, I, O释放号码。分两步执行。

短信

工具主要参数注解功能说明
send_smsfrom_number, to, body, idempotency_keyD, I, O通过已连接的 Twilio 或 Telnyx 号码发送一条纯文本短信。

通话

工具主要参数注释功能说明
list_calls可选筛选条件、limit、offsetR、I使用 REST 通话记录筛选条件列出通话。
get_callcall_idR、I获取通话状态和元数据。
get_call_transcriptcall_id、可选 liveR、I获取通话转录文本。
get_call_audio_urlcall_id、可选 downloadR、I、O返回已签名的音频 URL;绝不会通过 MCP 流式传输音频。
get_call_gradecall_idR、I获取最新的通话评分。
place_callagent_id、from_number、to_numberD、O发起一次非幂等的外呼通话。
export_calls通话筛选条件、export_formatR、I以 JSON 或 CSV 格式导出,数量上限为 REST 端点的上限。

测试和验证

工具主要参数注释功能
list_test_scenariosagent_idR、I列出测试场景。
create_test_scenarioagent_id、title、scenario_prompt、可选条件—创建场景。
generate_test_scenariosagent_id、可选 count、include_edge_cases、localeO根据智能体提示词生成场景。
run_agent_testsagent_id、channel、consent_to_charge、可选选择条件/矩阵D、O通过网页或电话执行场景。
get_test_runagent_id、batch_idR、I获取批次状态和各场景结果。
list_validation_runsagent_idR、I列出最近的草稿验证运行。
get_validation_statusagent_idR、I获取最新验证状态和草稿匹配情况。

知识库

工具主要参数注释功能
list_knowledge_bases—R, I列出知识库。
create_knowledge_basename、可选的 description—创建知识库。
add_knowledge_documentknowledge_base_id、name、content—添加文本或 Markdown。
import_knowledge_urlurl、可选的 nameO将公开页面加入队列以进行安全摄取。
search_knowledgeknowledge_base_id、queryR, I通过生产环境检索进行搜索。

集成、webhook 和远程 MCP 服务器

工具主要参数注释功能说明
list_integrations—R, I列出 HTTP 函数集成。
create_integrationdisplay_name、函数 spec、可选端点字段—创建 HTTP 工具。在控制台中添加身份验证标头。
test_integrationurl、可选方法/正文/超时、带有 header_names 的 integration_id、第二次请求时的 confirmation_tokenD, O发送受限且受 SSRF 保护的测试请求。已保存的标头值将从集成中填充,并且仅发送到其所属主机。POST(默认)、PUT、PATCH 和 DELETE 采用两步流程;GET 会立即执行。
list_webhook_endpoints—R, I列出已签名的 webhook 端点。
list_webhook_deliveries可选 agent_id、可选 endpoint_idR, I列出最近不含载荷的 webhook 交付结果。
create_webhook_endpointlabel、url、可选事件/状态O创建已签名的 webhook 端点。
test_webhook_endpointendpoint_idO通过常规交付发送合成事件。
list_mcp_servers—R, I列出可由语音智能体调用的远程服务器。
create_mcp_serverdisplay_name、urlO注册并同步远程服务器。需要身份验证标头的服务器请在控制台中添加。
sync_mcp_server_toolsserver_idD, O刷新远程服务器的工具目录。

营销活动

工具主要参数注释功能
list_campaigns—R, I列出外呼营销活动。
create_campaign营销活动字段—创建营销活动草稿。
add_campaign_contactscampaign_id、contacts—最多添加 5,000 个 JSON 联系人。
campaign_actioncampaign_id、action、可选的 consent_to_charge、第二次请求中的 confirmation_tokenD, O执行 start、pause、resume 或 stop。start 和 resume 需分两步执行;pause 和 stop 会立即执行。
get_campaign_statscampaign_idR, I获取计数器和最近结果。

语音、计费和文档

工具主要参数注释功能
list_voices—R, I列出语音和支持的语言。
preview_voicevoice, language, textO生成示例并返回签名 URL。
list_voice_clones—R, I列出自定义语音克隆。
get_billing_summary—R, I获取余额和权威的套餐价格;不提供任何支付变更操作。
search_docsquery、可选 limitR, I, O搜索公开文档索引。
get_doc_pagepathR, I, O获取一个公开的 Markdown 文档页面。

所有产品工具均使用与公开 API 相同的 REST 代码路径。因此,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 分钟,且仅适用于一个组织、一个工具和一组完全相同的参数,因此删除三个智能体需要三次确认。使用 pause 或 stop 的 campaign_action 会跳过此步骤,以便始终可以立即停止正在运行的营销活动;使用 GET 的 test_integration 也是如此。某些 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_receptionist
  • run_agent_tests
  • 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快速入门 Markdown。
thunderphone://pricing当前公开定价 Markdown。

使用 resources/read 读取单个资源。公开获取使用较短的超时时间、2 MiB 限制以及 10 分钟的进程内缓存。

协议和错误

服务器支持协议版本 2025-06-18 和 2025-03-26;它会回显受支持的客户端版本,否则选择 2025-06-18。它实现了 initialize、ping、工具、提示词、资源和通知。通知返回 202 Accepted。此无状态服务器不提供 SSE 监听器或会话删除功能,因此 GET 和 DELETE 会返回带有 Allow: POST 的 405 Method Not Allowed。

工具失败仍会以成功的 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."
}

place_call 保留了独特的 outbound_tcpa_confirmation_required: 前缀。未知的 JSON-RPC 方法会在 HTTP 200 响应中返回 -32601。MCP 2025-06-18 不支持 JSON-RPC 批处理,并会返回明确的 -32600 无效请求错误。