关于 Voxplo
Voxplo 是供 AI Agent 使用的 MCP 服务,可发起外呼并围绕目标开展对话、返回通话结果;也支持电话预约,并提供摘要、转录文本和结构化提取字段。
主要功能
- 01发起目标导向的外呼
- 02通过电话安排预约
- 03获取通话状态和结果
- 04查看摘要、转录文本及提取字段
适用场景
- 01通过外呼确认事项
- 02与联系人安排会议
- 03查看通话转录和提取数据
MCP 相关
向 MCP 客户端提供 `place_call`、`set_appointment`、`get_call` 和 `list_calls` 工具。可使用托管的 Streamable HTTP 服务或本地 stdio 服务。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.voxplo.ai/mcpclaude mcp add --transport http voxplo https://mcp.voxplo.ai/mcp{"mcpServers":{"voxplo":{"type":"http","url":"https://mcp.voxplo.ai/mcp"}}}在 Cursor 中打开{"servers":{"voxplo":{"type":"http","url":"https://mcp.voxplo.ai/mcp"}}}在 VS Code 中打开{"mcpServers":{"voxplo":{"type":"http","url":"https://mcp.voxplo.ai/mcp"}}}{"mcpServers":{"voxplo":{"serverUrl":"https://mcp.voxplo.ai/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
4| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| to | string | 是 | 采用 E.164 格式的目标电话号码,例如 +14155550123。 |
| fields | array | 否 | 要从通话中提取的结构化字段。 |
| context | string | 否 | 助手的背景上下文。 |
| navMode | enum | 否 | 如何导航远端 IVR:auto(实时检测按键菜单或对话式助手)、keypad(保持静音并按键)或 speech(交谈)。auto | keypad | speech |
| callerId | string | 否 | 可选的来电显示号码;必须是你账户中的号码。 |
| objective | string | 是 | 通话需要达成的目标。 |
| webhookUrl | string | 否 | 用于接收签名结果的 HTTPS URL(可选)。 |
| listenFirst | boolean | 否 | 如果为 true,则保持静默,直到被呼叫方/IVR 先开口,然后再回应。向电话树发起任何外呼时都建议启用。 |
| accountNumber | string | 否 | enter_account_number 工具确定性地按键输入的账户/电话号码(仅限按键字符)。 |
| toolAllowlist | array | 否 | 此通话可使用的工具,例如 ["send_digits","reached_human","add_participant","enter_account_number"]。省略则使用默认集合。 |
| callbackNumber | string | 否 | 我们的回拨 DID 数字,enter_callback_number 工具将按键输入这些数字(回拨至 AI 模式)。 |
详细介绍
voxplo-mcp
为你的 AI Agent 配备一部电话。此 MCP 服务可让任何 MCP 客户端(Claude、Cursor、ChatGPT 开发者模式等)通过 Voxplo 拨打真实的外呼 AI 电话:AI 会致电他人,围绕目标进行对话,并返回摘要、文字记录和结构化提取字段。
- 托管(远程)服务:
https://mcp.voxplo.ai/mcp(Streamable HTTP + OAuth,无需安装) - 本地(stdio)服务:
npx voxplo-mcp(此软件包) - 文档: https://voxplo.ai/docs/agent-api/mcp
- 工具:
place_call、set_appointment、get_call、list_calls
选项 A:托管服务(推荐)
无需安装。在你的客户端中将 https://mcp.voxplo.ai/mcp 添加为远程 MCP 服务:
{
"mcpServers": {
"voxplo": { "type": "streamable-http", "url": "https://mcp.voxplo.ai/mcp" }
}
}
在 Claude 中:依次选择 Settings、Connectors 和“Add custom connector”,然后粘贴 https://mcp.voxplo.ai/mcp。浏览器会打开 Voxplo 的授权页面;粘贴 开发者页面中的 Agent API 密钥并批准。客户端不会看到密钥本身,只会看到 OAuth 令牌。
选项 B:本地服务(此软件包)
前提条件:Node 18+,以及 Voxplo Agent API 密钥(以 bys_ak_ 开头,可在你的开发者页面获取)。
Claude Desktop
将以下内容添加到 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或你操作系统上的对应文件中:
{
"mcpServers": {
"voxplo": {
"command": "npx",
"args": ["-y", "voxplo-mcp"],
"env": { "VOXPLO_API_KEY": "bys_ak_your_key_here" }
}
}
}
Cursor
将相同的代码块添加到项目中的 .cursor/mcp.json(或全局文件 ~/.cursor/mcp.json)。
若要连接暂存环境或可自托管的实例,请在 env 代码块中添加 "VOXPLO_API_BASE": "https://staging.example.com"。
工具
place_call
为实现特定目标发起 AI 外呼。会立即返回 callId;通话将异步进行。使用该 callId 轮询 get_call,直到状态进入终态。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
to | string | 是 | E.164 格式的目标号码(例如 +14155550123) |
objective | string | 是 | 通话需要实现的目标 |
context | string | 否 | 助手的背景信息 |
fields | array | 否 | 要提取的结构化字段(最多 20 项:{ name, type?, description? }) |
webhookUrl | string | 否 | 通话结束时接收已签名结果的 HTTPS URL |
callerId | string | 否 | 覆盖主叫号码;必须是你账户中的号码 |
返回: { callId, status },成功时 status 为 queued。
set_appointment
发起 AI 外呼以安排会议。助手会致电对方并商定时间,结果(通过 get_call 轮询)会包含 outcome(appointment_set | callback_requested | declined | no_answer | failed);若已安排,还会包含预约详情(startISO、timezone、durationMinutes、attendee、subject)。会立即返回 callId。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
to | string | 是 | 要拨打的号码,格式为 E.164 |
subject | string | 是 | 会议主题 |
durationMinutes | number | 否 | 会议时长,单位为分钟(默认值为 30) |
timePreference | string | 否 | 自然语言描述的时间范围,例如“下周工作日的上午” |
slots | array | 否 | 要提供的具体开始时间:[{ startISO }],采用带偏移量的 ISO-8601 格式 |
timezone | string | 否 | 预约所用的 IANA 时区,例如 Asia/Jerusalem |
autoBook | boolean | 否 | 也在已连接的日历中预订商定的时间 |
webhookUrl | string | 否 | 接收已签名结果的 HTTPS URL |
callerId | string | 否 | 覆盖主叫号码;必须是你账户中的号码 |
get_call
获取通话的当前状态和结果。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
callId | string | 是 | place_call 或 set_appointment 返回的 callId |
返回: { id, status, summary, transcript, extracted, recordingUrl, to, objective, startedAt, endedAt, durationSec, error? }
list_calls
列出你的账户拨打的近期电话(按时间从近到远排序)。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
limit | number | 否 | 返回的电话数量上限(默认值为 20,最大值为 100) |
返回: { calls: [ { id, to, objective, status, summary, createdAt, startedAt, endedAt, durationSec, error? } ] }
电话状态
| 状态 | 是否为终态? | 含义 |
|---|---|---|
queued | 否 | 已接受呼叫,尚未拨号 |
ringing | 否 | 正在拨打目标号码 |
in_progress | 否 | 通话正在进行 |
completed | 是 | 通话正常结束 |
no_answer | 是 | 目标号码无人接听 |
voicemail | 是 | 接入语音信箱 |
declined | 是 | 对方拒绝接听 |
failed | 是 | 技术故障 |
拨打你的第一个电话
- 按上述说明配置 MCP 客户端。
- 对助手说:“拨打 +14155550123,目标是确认明天下午 2 点的会议时间。”
- 助手调用
place_call并获得callId。 - 询问:“检查一下电话
<callId>——是否已完成?” - 助手调用
get_call并返回状态、摘要和提取出的任何字段。
安全
系统会在服务端筛查外呼目标号码(屏蔽高资费、卫星及其他高风险线路);应要求时,通话会进行 AI 披露;拨打电话的工具已标注 openWorldHint: true,因此客户端会在拨号前请求确认。详情:https://voxplo.ai/security
开发
运行测试:
node --test
冒烟测试(使用虚拟密钥,应该会向 stderr 输出 "ready on stdio"):
VOXPLO_API_KEY=bys_ak_test node src/server.js
链接
- Voxplo:https://voxplo.ai
- Agent API 参考:https://voxplo.ai/docs/agent-api
- OpenAPI 规范:https://www.voxplo.ai/openapi.json
- 托管的 MCP 服务卡片:https://mcp.voxplo.ai/.well-known/mcp/server-card.json
- 许可证:MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。