Voice Call Mcp Server

Voice Call Mcp Server

一个模型上下文协议服务器,它使像 Claude 这样的人工智能助手能够使用 Twilio 和 OpenAI 的语音模型来发起和管理实时语音通话。

lukaskai

通信
访问服务器

README

语音通话 MCP 服务器

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

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

演示

序列图

sequenceDiagram
    participant AI as AI 助手 (例如,Claude)
    participant MCP as MCP 服务器
    participant Twilio as Twilio
    participant Phone as 目标电话
    participant OpenAI as OpenAI
    
    AI->>MCP: 1) 发起呼出请求 <br>(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>直到通话结束

特性

  • 通过 Twilio 拨打呼出电话 📞
  • 使用 OpenAI 实时处理通话音频 🎙️
  • 针对常见通话场景(如餐厅预订)的预构建提示 🍽️
  • 使用 ngrok 自动进行公共 URL 隧道 🔄
  • 安全处理凭据 🔒

为什么选择 MCP?

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

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

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

要求

  • Node.js >= 22
    • 如果您需要更新 Node.js,我们建议使用 nvm (Node Version Manager):
      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 Desktop 配置

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

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

Windows: %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. 简单通话:
你能给 +11234567890 打电话,告诉他们我开会要迟到 15 分钟吗?
  1. 餐厅预订:
请致电 +11234567890 的美味餐厅,预订今晚 7:30 的 4 人座位。
  1. 预约安排:
打电话给我的牙医 +11234567890,安排下周一至周四下午 4 点到 6 点之间的清洁预约。

重要提示

  1. 电话号码格式:所有电话号码必须采用 E.164 格式(例如,+11234567890)
  2. 速率限制:请注意您的 Twilio 和 OpenAI 帐户的速率限制和定价
  3. 语音对话:AI 将实时处理自然对话
  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 模型的支持
  • 添加数据库集成以在本地存储对话历史记录,并使其可用于 AI 上下文
  • 提高延迟和响应时间以增强通话体验
  • 增强错误处理和恢复机制
  • 为常见场景添加更多预构建的对话模板
  • 实施改进的呼叫监控和分析

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

许可证

该项目已获得 MIT 许可证的许可 - 有关详细信息,请参阅 LICENSE 文件。

安全

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

正在寻找新的机会?

🍿 我们正在招聘有才华的开发人员加入我们的团队,在 AI 语音和电信领域进行创新,并与我们一起努力。

访问 careers.popcorn.space 查看我们的空缺职位!

推荐服务器

graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Apple MCP Server

Apple MCP Server

通过 MCP 协议与 Apple 应用(如“信息”、“备忘录”和“通讯录”)进行交互,从而使用自然语言发送消息、搜索和打开应用内容。

精选
本地
TypeScript
MCP Server Trello

MCP Server Trello

通过 Trello API 促进与 Trello 看板的交互,提供速率限制、类型安全、输入验证和错误处理等功能,以实现对卡片、列表和看板活动的无缝管理。

精选
TypeScript
@kazuph/mcp-gmail-gas

@kazuph/mcp-gmail-gas

用于 Gmail 集成的模型上下文协议 (Model Context Protocol, MCP) 服务器。它允许 Claude Desktop(或任何 MCP 客户端)通过 Google Apps Script 与您的 Gmail 帐户进行交互。

精选
JavaScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Composio MCP Server

Composio MCP Server

一个服务器实现,提供与 MCP 兼容的 Composio 应用(如 Gmail 和 Linear)的访问,允许通过结构化的接口与语言模型进行交互。

官方
TypeScript
Folderr

Folderr

一个模型上下文协议 (MCP) 服务器,它提供与 Folderr API 交互的工具,专门用于管理 Folderr 助手并与之通信。

官方
JavaScript
mcp-google

mcp-google

一个专门的模型上下文协议(MCP)服务器,它将 Google 服务(Gmail、日历等)集成到您的 AI 工作流程中。该服务器通过 MCP 实现对 Google 服务的无缝访问,从而允许 AI 代理与 Gmail、Google 日历和其他 Google 服务进行交互。

本地
TypeScript
MCP-JIRA-Python Server

MCP-JIRA-Python Server

一个基于 Python 的服务器,允许与 JIRA 无缝集成,通过自定义 API 管理和交互项目。

本地
Python
Email sending MCP 💌

Email sending MCP 💌

使用此电子邮件发送 MCP 服务器,直接从 Cursor 发送电子邮件

本地
TypeScript