MCPO语音助手
一个支持语音的人工智能助手,可以转换 MCP(模型上下文协议)服务器 进入 OpenAI API工具格式 并通过FastRTC和Ollama提供实时语音交互。
🚀 这有什么作用
该项目通过以下方式连接MCP服务器和OpenAI兼容的LLM:
- 将MCP服务器转换为OpenAI工具 -采用MCP服务器并将其作为OpenAI函数调用格式公开
- 语音接口 -使用FastRTC实现实时语音转文本和文本转语音
- 工具集成 -通过语音命令无缝调用MCP工具
- 多服务器支持 -同时运行多个MCP服务器
🏗️ 建筑
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Voice Input │───▶│ FastRTC STT │───▶│ Ollama │
│ (Microphone) │ │ │ │ (LLM Model) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Voice Output │◀───│ FastRTC TTS │◀───│ MCPO Adapter │
│ (Speakers) │ │ │ │ (MCP→OpenAI) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌─────────────────────────────┐
│ MCP Servers │
│ ┌─────────────────────┐ │
│ │ Time Server │ │
│ │ (Timezone ops) │ │
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ Airbnb Server │ │
│ │ (Property search) │ │
│ └─────────────────────┘ │
└─────────────────────────────┘🛠️ 设置
先决条件
- Python 3.12+
- Ollama已安装并正在运行
- FastRTC 依赖关系
安装
- 克隆存储库
git clone https://github.com/dwain-barnes/fastrtc-mcpo-voice-assistant.git
cd fastrtc-mcpo-voice-assistant- 安装Python依赖项
pip install -r requirements.txt或手动安装:
pip install "fastrtc[vad,stt,tts]"
pip install ollama-mcpo-adapter
pip install ollama requests- 启动Ollama
ollama serve
ollama pull mistral-small3.2:latest🚀 用法
步骤1:启动MCPO服务
MCPO服务将MCP服务器转换为OpenAI API格式:
python mcpo_service_only.py这将在上启动服务 http://127.0.0.1:8000 具有端点:
- 时间工具:
/time/get_current_time,/time/convert_time - Airbnb工具:
/airbnb/*(各种搜索端点) - 文档:
/docs(API文件)
步骤2:启动语音助手
在新终端中:
python fastrtc_mcpo_voice.py这将打开一个web界面 http://127.0.0.1:7860 您可以在哪里:
- 点击“开始”开始语音交互
- 与助理自然交谈
- 通过工具集成获得语音响应
🎯 语音命令示例
时间查询
- *“伦敦现在几点了?”*
- *“将伦敦时间下午3点转换为纽约时间”*
- *“东京现在几点了?”*
Airbnb搜索
- *“在巴黎为一个人找到Airbnb”*
- *“搜索巴塞罗那的公寓”*
- *“给我看看罗马的住宿”*
合并请求
- *“东京现在几点了,在那里找酒店”*
📁 项目结构
├── mcpo_service_only.py # MCPO service runner
├── fastrtc_mcpo_voice.py # Voice assistant with tool integration
└── README.md # This file🔧 配置
MCP服务器配置
编辑 mcp_config 在……里面 mcpo_service_only.py:
mcp_config = {
"mcpServers": {
"time": {
"command": "uvx",
"args": ["mcp-server-time", "--local-timezone=Europe/London"]
},
"airbnb": {
"command": "npx",
"args": ["-y", "@openbnb/mcp-server-airbnb", "--ignore-robots-txt"]
},
# Add more MCP servers here
}
}语音模型
语音助手使用:
- 单目标跟踪:
moonshine/base(语音转文本) - 文本转语音:
kokoro(文本转语音) - LLM:
mistral-small3.2:latest(通过Ollama)
🎛️ 特性
语音处理
- 实时STT/TTS 使用FastRTC
- 自然对话流 具有暂停检测功能
- 干净的文本处理 删除格式以获得更好的语音输出
工具集成
- 自动工具发现 来自MCPO服务
- 智能结果格式化 用于语音友好响应
- 错误处理 优美的后撤
MCP服务器支持
- 多服务器支持 -运行任意数量的MCP服务器
- 动态刀具加载 -LLM自动可用的工具
- OpenAI兼容性 -标准函数调用格式
🔍 MCP到OpenAI转换的工作原理
- MCP服务器 以MCP格式公开工具
- MCPO适配器 从MCP服务器中发现可用工具
- 工具转换 将MCP工具模式转换为OpenAI函数格式
- Ollama集成 接收标准OpenAI函数调用格式的工具
- 执行桥 将函数调用路由回相应的MCP服务器
🛡️ 错误处理
- 优雅降级 -在没有MCPO服务的情况下工作
- 连接监控 -检查服务可用性
- 语音反馈 -通过语音宣布错误
- 干净关闭 -使用Ctrl+C进行正确的信号处理
🎨 定制
添加新的MCP服务器
- 安装MCP服务器
- 增添
mcp_config在……里面mcpo_service_only.py - 重新启动MCPO服务
修改语音行为
编辑 SYSTEM_PROMPT 在……里面 fastrtc_mcpo_voice.py:
SYSTEM_PROMPT = """You are a helpful voice assistant...
# Customize behavior here
"""🙏 致谢
- https://github.com/tappi287/ollama-mcpo-adapter
- FastRTC 用于实时语音处理
- 没有 为本地法学硕士服务
- OpenAI 函数调用标准
______________________________________________________________________
准备好与您的工具对话了吗?启动服务并打招呼! 🎤
