语音呼叫MCP服务器

一个基于Twilio和OpenAI的模型上下文协议服务器,使AI助手能够发起和管理语音呼叫。

  • by popcornspace
  • TypeScript
  • 本地部署
  • 62 星标
  • 更新于
在 GitHub 查看 lukaskai/voice-call-mcp-server

使用说明

语音呼叫MCP服务器

一个模型上下文协议(MCP)服务器,使Claude和其他AI助手能够使用Twilio和OpenAI(GPT-4o实时模型)发起和管理语音通话。

以此为基础,启动基于人工智能的语音通话探索,节省时间,并在此基础上开发其他功能。

序列图

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) Initiate outbound call request <br>(POST /calls)
    MCP->>Twilio: 2) Place outbound call via Twilio API
    Twilio->>Phone: 3) Ring the destination phone
    Twilio->>MCP: 4) Call status updates & audio callbacks (webhooks)
    MCP->>OpenAI: 5) Forward real-time audio to OpenaAI's realtime model
    OpenAI->>MCP: 6) Return voice stream
    MCP->>Twilio: 7) Send voice stream
    Twilio->>Phone: 8) Forward voice stream
    Note over Phone: Two-way conversation continues <br>until the call ends

特性

  • 通过Twilio拨打对外电话📞
  • 使用GPT-4o实时模型实时处理呼叫音频🎙️
  • 通话时实时切换语言🌐
  • 常见通话场景(如餐厅预订)的预构建提示🍽️
  • 使用ngrok实现自动公共URL隧道🔄
  • 安全处理凭据🔒

为什么选择MCP?

模型上下文协议(MCP)弥合了人工智能助手和现实世界行为之间的差距。通过实施MCP,该服务器允许像Claude这样的AI模型:

  1. 代表用户发起实际电话
  2. 处理和响应实时音频对话
  3. 执行需要语音通信的复杂任务

这种开源实现提供了透明度和可定制性,允许开发人员扩展功能,同时保持对数据和隐私的控制。

需求

  • Node.js>=22
    • 如果你需要更新Node.js,我们建议使用 nvm (节点版本管理器):
      nvm install 22
      nvm use 22
      
  • 具有API证书的Twilio帐户
  • OpenAI API密钥
  • Ngrok身份验证令牌

安装

手动安装

  1. 克隆存储库

    git clone https://github.com/lukaskai/voice-call-mcp-server.git
    cd voice-call-mcp-server
    
  2. 安装依赖项并构建

    npm install
    npm run build
    

配置

服务器需要几个环境变量:

  • TWILIO_ACCOUNT_SID:您的Twilio帐户SID
  • TWILIO_AUTH_TOKEN:您的Twilio身份验证令牌
  • TWILIO_NUMBER:你的Twilio号码
  • OPENAI_API_KEY:您的OpenAI API密钥
  • NGROK_AUTHTOKEN:您的ngrok身份证
  • RECORD_CALLS:设置为“true”以记录通话(可选)

Claude桌面配置

要将此服务器与Claude Desktop一起使用,请将以下内容添加到配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "voice-call": {
      "command": "node",
      "args": ["/path/to/your/mcp-new/dist/start-all.cjs"],
      "env": {
        "TWILIO_ACCOUNT_SID": "your_account_sid",
        "TWILIO_AUTH_TOKEN": "your_auth_token",
        "TWILIO_NUMBER": "your_e.164_format_number",
        "OPENAI_API_KEY": "your_openai_api_key",
        "NGROK_AUTHTOKEN": "your_ngrok_authtoken"
      }
    }
  }
}

之后,重新启动Claude Desktop以重新加载配置。 如果已连接,您应该在下面看到语音通话🔨 菜单。

与Claude的互动示例

以下是通过Claude与服务器交互的一些自然方式:

  1. 简单呼叫:
Can you call +1-123-456-7890 and let them know I'll be 15 minutes late for our meeting?
  1. 餐厅预订:
Please call Delicious Restaurant at +1-123-456-7890 and make a reservation for 4 people tonight at 7:30 PM. Please speak in German.
  1. 预约时间安排:
Please call Expert Dental NYC (+1-123-456-7899) and reschedule my Monday appointment to next Friday between 4–6pm.

重要提示

  1. 电话号码格式:所有电话号码必须采用E.164格式(例如+1234567890)
  2. 速率限制:了解您的Twilio和OpenAI帐户的费率限制和定价
  3. 语音对话:人工智能将实时处理自然对话
  4. 呼叫持续时间:注意呼叫持续时间,因为它们会影响OpenAI API和Twilio成本
  5. 暴露于公开场合:请注意,ngrok隧道会公开暴露您的服务器,供Twilio访问(尽管使用随机URL并受随机秘密保护)

故障排除

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

  1. “电话号码必须采用E.164格式”

    • 确保电话号码以“+”和国家代码开头
  2. “凭据无效”

    • 仔细检查您的TWILIO_ACCOUNT_SID和TWILIO.AUTH_TOKEN。您可以从 Twilio控制台
  3. “OpenAI API错误”

    • 验证您的OPENAI_API_KEY是否正确并且有足够的信用
  4. “Ngrok隧道无法启动”

    • 确保您的NGROK_AUTHTOKEN有效且未过期
  5. “OpenAI Realtime无法检测到语音输入的结束,或者正在滞后。”

    • 有时,Twilio和接收方的网络运营商之间可能存在语音编码问题。尝试使用其他接收器。

贡献

欢迎投稿!以下是我们希望改进的一些方面:

  • 实现对当前实现之外的多个AI模型的支持
  • 添加数据库集成,在本地存储对话历史记录,并使其可供人工智能上下文访问
  • 改善延迟和响应时间,以增强通话体验
  • 增强错误处理和恢复机制
  • 为常见场景添加更多预构建的对话模板
  • 实施改进的呼叫监控和分析

如果你想贡献,请在提交pull请求之前打开一个问题来讨论你的想法。

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

安全

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

是时候执行新任务了吗?

我们正在招聘工程师,在语音人工智能的前沿进行构建,并将其打造成下一代电信公司。

好奇?前往 职业者.popcorn.space 🍿 !