语音助手MCP服务器

一个集成了Twilio Voice、Deepgram AI和OpenAI的智能语音HR自动化工具,支持AI助手进行电话面试、通知传递和HR沟通。

  • by prakharbhardwaj
  • JavaScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 prakharbhardwaj/voice-agent-mcp-server

使用说明

语音助手MCP服务器

一个强大的 模型上下文协议(MCP)服务器 整合 Twilio的声音, Deepgram AI,以及 OpenAI 创建基于语音的智能人力资源自动化工具。该系统使像克劳德这样的人工智能助理能够通过自然的语音对话进行电话面试、发送通知和管理人力资源沟通。

演示视频

https://github.com/user-attachments/assets/6c47a8b7-7428-4711-bf26-00d5951ec66f

特性

核心能力

  • 人工智能语音面试:使用人工智能对候选人进行专业电话面试
  • 面试结果通知:自动给候选人打电话,告知面试结果和反馈
  • 工作机会拓展:联系潜在候选人了解新职位
  • 实时语音处理:由Deegram的语音代理API提供支持
  • MCP集成:与Claude和其他兼容MCP的AI助手无缝集成

技术特性

  • 基于WebSocket的媒体流:使用Twilio Media Streams进行实时音频处理
  • 动态快速注射:基于通话目的的上下文AI提示
  • 函数调用处理:呼叫管理高级AI功能
  • 综合录井:调试和监控的详细日志记录
  • 环境配置:安全的凭据管理

建筑

sequenceDiagram
    participant Claude as MCP Client(Claude App)
    participant MCP as MCP Server
    participant Twilio as Twilio Voice
    participant Deepgram as Deepgram
    participant AI as OpenAI

    %% Step 1: Initiate interaction
    Claude->>MCP: Initiate voice action (e.g., interview, notification)
    MCP->>Twilio: Setup voice call
    Twilio-->>MCP: Call status updates

    %% Step 2: Real-time audio processing
    Twilio->>Deepgram: Start audio stream
    Deepgram-->>AI: Transcribed text
    AI->>Deepgram: LLM response
    Deepgram->>Twilio: Stream audio

先决条件

在设置项目之前,请确保您已经:

  1. Node.js (v22或更高)
  2. Twilio帐户 与:
    • 帐户SID
    • 身份验证令牌
    • 电话号码(用于拨打电话)
  3. Deepgram帐户 使用API密钥
  4. 公共URL (ngrok或生产服务器)用于webhooks

安装

  1. 克隆存储库:

    git clone https://github.com/prakharbhardwaj/voice-agent-mcp-server.git
    cd voice-agent-mcp-server
    
  2. 安装依赖项:

    npm install
    
  3. 环境配置: 创建一个 .env 根目录中的文件:

    # Server Configuration
    PORT=3000
    SERVER_URL=your_ngrok_url_or_server_url
    
    # Twilio Credentials
    TWILIO_ACCOUNT_SID=your_twilio_account_sid
    TWILIO_AUTH_TOKEN=your_twilio_auth_token
    TWILIO_PHONE_NUMBER=+your_twilio_phone_number
    
    # Deepgram API Key
    DEEPGRAM_API_KEY=your_deepgram_api_key
    
  4. 配置MCP服务器: 更新 mcp-config.json 使用您的实际路径和凭据:

    {
      "mcpServers": {
        "voice-agent-mcp-server": {
          "type": "stdio",
          "command": "node",
          "args": ["/path/to/your/voice-agent-mcp-server/mcp-server.js"],
          "env": {
            "NODE_ENV": "production",
            "SERVER_URL": "your_ngrok_url_or_server_url",
            "TWILIO_ACCOUNT_SID": "your_twilio_account_sid",
            "TWILIO_AUTH_TOKEN": "your_twilio_auth_token",
            "TWILIO_PHONE_NUMBER": "+your_twilio_phone_number"
          }
        }
      }
    }
    

用法

启动Web服务器

npm run dev

与Claude Desktop一起使用

  1. 将MCP服务器配置添加到Claude Desktop的设置中:
    • 对于macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 对于Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. 重新启动克劳德桌面
  3. 在与Claude的对话中使用可用的工具

可用的MCP工具

1. conduct_interview

发起语音通话,对候选人进行专业面试。

参数:

  • candidatePhone (string):E.164格式的电话号码
  • candidateName (string):候选人姓名
  • position (string):他们申请的职位
  • interviewQuestions (array):要问的问题列表

例子:

Conduct an interview with John Doe at +1234567890 for the Software Engineer position.
Ask about their experience with React, their problem-solving approach, and their career goals.

2. notify_interview_result

打电话给候选人,告知他们面试结果。

参数:

  • candidatePhone (string):E.164格式的电话号码
  • candidateName (string):候选人姓名
  • position (string):他们面试的职位
  • result (enum):“接受”、“拒绝”或“next_round”
  • message (string):附加反馈消息

例子:

Call Jane Smith at +1234567890 to let her know she's been accepted for the Product Manager role.

3. discuss_job_opening

与潜在候选人联系,了解工作机会。

参数:

  • candidatePhone (string):E.164格式的电话号码
  • candidateName (string):潜在候选人的姓名
  • position (string):要讨论的职位
  • companyInfo (string):简要的公司和角色信息
  • nextSteps (string):感兴趣的下一步

4. get_call_status

获取当前语音通话的状态和系统运行状况。

5. check_twilio_config

验证Twilio配置和服务准备情况。

项目结构

├── index.js                   # Main Fastify server
├── mcp-server.js              # MCP server implementation
├── mcp-config.json            # MCP configuration
├── package.json               # Dependencies and scripts
└── src/
    ├── SettingsConfiguration.js   # Deepgram agent settings
    ├── config/
    │   └── dotenv.js              # Environment configuration
    ├── mcp/
    │   ├── logger.js              # Logging utilities
    │   ├── prompts.js             # AI prompt generators
    │   ├── server.js              # MCP server logic
    │   └── tools.js               # MCP tool definitions
    ├── routes/
    │   └── twilioRoute.js         # Twilio webhook handlers
    ├── services/
    │   ├── functionCallHandler.js # AI function call processing
    │   └── twilioService.js       # Twilio API wrapper
    └── websockets/
        └── mediaStreamHandler.js  # WebSocket media processing

配置详情

Deepgram代理设置

该系统使用Deepgram的语音代理:

  • 语音识别:Nova-3型号
  • 文本转语音:Aura-2小行星的声音
  • LLM集成:OpenAI GPT-4o-mini
  • 音频格式:8kHz的μ律编码(兼容Twilio)

Twilio集成

  • 媒体流:通过WebSocket进行实时音频流
  • TwiML:具有自定义参数的动态呼叫路由
  • 呼叫管理:状态跟踪和呼叫控制

故障排除

常见问题

  1. Twilio webhook未收到呼叫:

    • 确保您的SERVER_URL可公开访问
    • 检查ngrok是否正在运行,URL是否已更新
    • 验证TwiML配置
  2. Deepgram连接问题:

    • 验证DEEPGRAM_API_KEY
    • 检查WebSocket连接
    • 检查音频格式兼容性
  3. Claude中未加载MCP服务器:

    • 验证mcp-config.json路径是否为绝对路径
    • 检查所有环境变量是否已设置
    • 配置更改后重新启动Claude Desktop

调试

通过检查控制台输出和 src/mcp/mcp-server.log 文件。

发展

以开发模式运行

# Start web server with auto-reload
npm run dev

添加新工具

  1. 在中定义工具 src/mcp/tools.js
  2. 在中添加提示生成逻辑 src/mcp/prompts.js
  3. 在中实现工具处理程序 src/mcp/server.js

安全考虑

  • 将所有凭据存储在环境变量中
  • 在生产环境中使用HTTPS/WSS
  • 验证电话号码和输入数据
  • 对生产使用实施限速
  • 遵循Twilio安全最佳实践

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

已知问题

ES模块与Claude Desktop的兼容性

如果你遇到 SyntaxError: Unexpected identifier 当将此MCP服务器与Claude Desktop一起使用时,这是由于Claude Desktop无法访问与您的终端相同的PATH环境或工作目录上下文。

根本原因:Claude Desktop可能找不到您在终端中使用的相同Node.js二进制文件(特别是使用nvm),或者它可能无法从可以找到的项目目录运行 package.json 随着 "type": "module".

解决方案:在Claude Desktop配置中使用Node.js二进制文件的绝对路径:

{
  "mcpServers": {
    "voice-agent-mcp-server": {
      "type": "stdio",
      "command": "/Users/yourusername/.nvm/versions/node/v22.16.0/bin/node",
      "args": ["/path/to/your/project/mcp-server.js"],
      "env": {
        // ... your environment variables
      }
    }
  }
}

要点:

  • 使用Node.js二进制文件的绝对路径(使用 which node)
  • 集 cwd 到你的项目目录,这样Node.js就可以找到 package.json
  • 这确保了Claude Desktop使用正确的Node.js和项目上下文

相关问题: MCP服务器问题#64

支持

对于问题和疑问:

  1. 检查故障排除部分
  2. 查看登录 src/mcp/mcp-server.log
  3. 在存储库上打开问题

使用Twilio、Deepgram和模型上下文协议构建