返回 MCP 目录
public公开dns本地运行

voice-call-mcp-server

基于Twilio和OpenAI的语音通话MCP服务器,实现AI助手发起和管理实时语音通话

article

README

🚀 语音呼叫 MCP 服务器

语音呼叫 MCP 服务器是一个模型上下文协议(MCP)服务器,它能让 Claude 和其他人工智能助手借助 Twilio 和 OpenAI(GPT - 4o 实时模型)发起并管理语音电话。借助该服务器,你可以快速开启 AI 驱动语音通话的探索之旅,节省时间并在此基础上开发更多功能。

演示

🚀 快速开始

本项目可帮助你快速开启 AI 驱动语音通话的探索,你可以基于此项目节省时间并开发更多功能。

✨ 主要特性

  • 通过 Twilio 发起电话呼叫 📞
  • 使用 GPT - 4o 实时模型处理实时语音 🎙️
  • 呼叫期间的实时语言切换 🌐
  • 预建常见呼叫场景提示(如餐厅预订) ⍽️
  • 自动公共 URL 隧道与 ngrok 🔄
  • 安全处理凭证 🔒

📚 详细文档

序列图

sequenceDiagram
    participant AI as AI Assistant (e.g., Claude)
    participant MCP as MCP Server
    participant Twilio as Twilio
    participant Phone as Destination Phone
    participant OpenAI as OpenAI
    
    AI->>MCP: 1) 发起外呼请求(POST /calls)
    MCP->>Twilio: 2) 通过Twilio API放置外呼
    Twilio->>Phone: 3) 拨打目标电话
    Twilio->>MCP: 4) 呼叫状态更新及音频回调(webhooks)
    MCP->>OpenAI: 5) 将实时音频转发到OpenaAI的实时模型
    OpenAI->>MCP: 6) 返回语音流
    MCP->>Twilio: 7) 发送语音流
    Twilio->>Phone: 8) 转发语音流
    Note over Phone: 双向对话继续进行<br>直到通话结束

重要说明

⚠️ 重要提示

  1. 电话号码格式:所有电话号码必须为 E.164 格式(例如,+11234567890)
  2. 速率限制:注意 Twilio 和 OpenAI 账户的速率限制和定价
  3. 语音对话:人工智能将实时处理自然对话
  4. 呼叫时长:注意呼叫时长,因为它们会影响 OpenAI API 和 Twilio 费用
  5. 公开暴露:ngrok 隧道会公开暴露您的服务器(尽管带有随机 URL 并受随机密钥保护)

故障排除

常见错误消息及解决方案:

  1. "电话号码必须为 E.164 格式"
    • 确保电话号码以"+"开头,并包含国家代码
  2. "无效凭证"
    • 检查 TWILIO_ACCOUNT_SID 和 TWILIO_AUTH_TOKEN。您可以在Twilio 控制台中复制它们
  3. "OpenAI API 错误"
    • 验证 OPENAI_API_KEY 是否正确且有足够的积分
  4. "Ngrok 隧道启动失败"
    • 确保 NGROK_AUTHTOKEN 有效且未过期
  5. "OpenAI 实时无法检测到语音输入的结束,或存在延迟。"
    • 有时,Twilio 和接收方网络运营商之间可能存在语音编码问题。尝试使用不同的接收方。

贡献

欢迎贡献!以下是希望改进的领域:

  • 实现对多个 AI 模型(当前仅支持 GPT - 4o)的支持
  • 添加数据库集成以存储本地对话历史并使其可供 AI 访问
  • 改进延迟和响应时间以提升通话体验
  • 增强错误处理和恢复机制
  • 添加更多预构建的常见场景对话模板
  • 实现改进的呼叫监控和分析

如果您希望贡献,请在提交拉取请求之前打开问题讨论您的想法。

安全

⚠️ 重要提示

请勿在 GitHub 问题或拉取请求中包含任何敏感信息(如电话号码或 API 凭证)。此服务器处理敏感通信;负责任地部署,并确保所有凭证安全。

📄 许可证

该项目根据 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端