一个使用OpenAI的Whisper和GPT-4o模型进行高级音频转录和处理的模型上下文协议(MCP)服务器。
</div>MCP Server Whisper 提供了一种标准化的方式来通过OpenAI最新的转录和语音服务处理音频文件。通过实现模型上下文协议,它使像Claude这样的AI助手能够无缝地与音频处理能力交互。
关键特性:
注意:此项目是未经官方授权的,不隶属于、未得到OpenAI的认可或赞助。它提供了一个与OpenAI公开API接口的模型上下文协议界面。
# 克隆仓库
git clone https://github.com/arcaputo3/mcp-server-whisper.git
cd mcp-server-whisper
# 使用uv
uv sync
# 设置预提交钩子
uv run pre-commit install
基于提供的.env.example创建一个.env文件:
cp .env.example .env
编辑.env文件,填入实际值:
OPENAI_API_KEY=your_openai_api_key
AUDIO_FILES_PATH=/path/to/your/audio/files
注意:环境变量必须在运行时可用。对于本地开发与Claude,可以使用dotenv-cli工具加载它们(参见下面的使用部分)。
该项目包含一个.mcp.json配置文件,用于与Claude的本地开发。要使用它:
.env文件已配置所需的环境变量bunx dotenv-cli -- claude
这将:
.env文件中加载环境变量.mcp.json配置启动Claude.mcp.json配置:
{
"mcpServers": {
"whisper": {
"command": "uv",
"args": ["run", "mcp-server-whisper"],
"env": {
"OPENAI_API_KEY": "${OPENAI_API_KEY}",
"AUDIO_FILES_PATH": "${AUDIO_FILES_PATH}"
}
}
}
}
list_audio_files - 列出音频文件,具有全面的过滤和排序选项:
FilePathSupportParamsget_latest_audio - 获取最近修改的音频文件及其模型支持信息convert_audio - 将音频文件转换为支持的格式(mp3或wav)
AudioProcessingResultcompress_audio - 压缩超过大小限制的音频文件
AudioProcessingResulttranscribe_audio - 使用OpenAI模型进行高级转录:
whisper-1、gpt-4o-transcribe和gpt-4o-mini-transcribeTranscriptionResultchat_with_audio - 使用GPT-4o音频模型进行互动音频分析:
gpt-4o-audio-preview(推荐)和旧版本gpt-4o-mini-audio-preview在音频聊天方面有局限性,不推荐使用ChatResulttranscribe_with_enhancement - 使用专用模板进行增强转录:
detailed - 包括语气、情感和背景细节storytelling - 将转录转化为叙述形式professional - 创建正式且适合商业用途的转录analytical - 添加对语音模式和要点的分析TranscriptionResultcreate_audio - 使用OpenAI的TTS API生成文本到语音音频:
gpt-4o-mini-tts(首选)和其他语音模型TTSResult| 模型 | 支持的格式 |
|---|---|
| 转录 | flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, webm |
| 聊天 | mp3, wav |
注意:大于25MB的文件会自动压缩以满足API限制。
Claude,请转录我最新的音频文件,并提供详细的见解。
Claude将自动:
get_latest_audio找到最新的音频文件transcribe_with_enhancement处理文件Claude,列出所有时长大于5分钟且创建日期在2024年1月1日之后的音频文件,按大小排序。
Claude将:
list_audio_files和适当的过滤器:
min_duration_seconds: 300 (5分钟)min_modified_time: <2024年1月1日的时间戳>sort_by: "size"Claude,查找所有文件名中包含“interview”的MP3文件,并为每个文件创建专业转录。
Claude将:
list_audio_files和模式及格式过滤器搜索文件transcribe_with_enhancement工具(MCP原生支持并行处理)enhancement_type: "professional"并返回类型化的TranscriptionResultClaude,使用这个脚本创建音频:“欢迎来到我们的播客!今天我们将讨论2025年人工智能趋势。”使用shimmer声音。
Claude将:
create_audio工具:
text_prompt包含脚本voice: "shimmer"model: "gpt-4o-mini-tts"(默认高质量模型)instructions: "以热情的播客主持人风格讲话"(可选)speed: 1.0(默认,可调整)对于生产使用Claude Desktop(而非本地开发),请在你的claude_desktop_config.json中添加以下内容:
{
"mcpServers": {
"whisper": {
"command": "uvx",
"args": ["mcp-server-whisper"],
"env": {
"OPENAI_API_KEY": "your_openai_api_key",
"AUDIO_FILES_PATH": "/path/to/your/audio/files"
}
}
}
}
AUDIO_FILES_PATH为/Users/<user>/Movies/Omi Screen Recorder,并将<user>替换为你的用户名此项目使用现代Python开发工具,包括uv、pytest、ruff和mypy。
# 运行测试
uv run pytest
# 运行带覆盖率的测试
uv run pytest --cov=src
# 格式化代码
uv run ruff format src
# 检查代码
uv run ruff check src
# 运行类型检查(严格模式)
uv run mypy --strict src
# 运行预提交钩子
pre-commit run --all-files
该项目使用GitHub Actions进行CI/CD:
注意:Python 3.14t是无GIL的自由线程构建,用于测试真正的并行性。
发布工作流支持两种方法:
选项1:自动化发布(推荐)
推送标签以自动创建发布并发布到PyPI:
# 1. 更新pyproject.toml中的版本
# 手动编辑版本字段,例如,“1.0.0” -> “1.1.0”
# 2. 更新src/mcp_server_whisper/__init__.py中的__version__以匹配
# 3. 更新锁文件
uv lock
# 4. 提交版本更新
git add pyproject.toml src/mcp_server_whisper/__init__.py uv.lock
git commit -m "chore: bump version to 1.1.0"
# 5. 创建并推送版本标签
git tag v1.1.0
git push origin main
git push origin v1.1.0
这将:
选项2:手动发布
通过GitHub UI手动创建发布,然后可选地发布:
当你发布时,工作流将自动发布到PyPI。你也可以创建草稿发布以延迟发布。
MCP Server Whisper遵循一种扁平、类型安全的API设计,优化了MCP客户端的使用:
TranscriptionResult、ChatResult、AudioProcessingResult、TTSResult)这种设计使得AI助手更容易正确使用工具并可靠地处理结果。
有关详细架构信息,请参阅架构文档。
MCP Server Whisper基于模型上下文协议构建,该协议标准化了AI模型如何与外部工具和数据源交互。服务器:
底层使用了:
pydub用于音频文件操作(对于Python 3.13+使用audioop-lts)anyio用于结构化并发和任务组管理aioresult用于收集来自并行任务组的结果欢迎贡献!请遵循以下步骤:
git checkout -b feature/amazing-feature)uv run pytest && uv run ruff check src && uv run mypy --strict src)git commit -m '添加一些惊人的功能')git push origin feature/amazing-feature)本项目采用MIT许可证 - 详情请参阅LICENSE文件。