MCP Server Whisper
Transcrição e processamento avançado de áudio usando os modelos Whisper e GPT-4o da OpenAI.
Documentação
MCP Server Whisper
Um servidor Model Context Protocol (MCP) para transcrição e processamento avançado de áudio usando os modelos Whisper e GPT-4o da OpenAI.
[!WARNING] Este projeto foi movido. O desenvolvimento ativo migrou para TJC-LP/sanzaru. Este repositório não é mais mantido e será arquivado. Atualize suas dependências e issues para o novo repositório.
Visão Geral
O MCP Server Whisper fornece uma forma padronizada de processar arquivos de áudio através dos serviços mais recentes de transcrição e fala da OpenAI. Ao implementar o Model Context Protocol, ele permite que assistentes de IA como o Claude interajam perfeitamente com capacidades de processamento de áudio.
Principais recursos:
- 🔍 Busca avançada de arquivos com padrões regex, filtragem de metadados de arquivos e capacidades de ordenação
- ⚡ Processamento paralelo nativo do MCP - chame múltiplas ferramentas simultaneamente
- 🔄 Conversão de formato entre tipos de áudio suportados
- 📦 Compressão automática para arquivos grandes demais
- 🎯 Transcrição multi-modelo com suporte para todos os modelos de áudio da OpenAI
- 🗣️ Chat de áudio interativo com modelos de áudio GPT-4o
- ✏️ Transcrição aprimorada com prompts especializados e suporte a timestamps
- 🎙️ Geração de texto-para-fala com vozes, instruções e velocidade personalizáveis
- 📊 Metadados abrangentes incluindo duração, tamanho do arquivo e suporte a formatos
- 🚀 Cache de alto desempenho para operações repetidas
- 🔒 Respostas type-safe com modelos Pydantic para todas as saídas das ferramentas
Nota: Este projeto é não oficial e não é afiliado, endossado ou patrocinado pela OpenAI. Ele fornece uma interface Model Context Protocol para as APIs publicamente disponíveis da OpenAI.
Instalação
# Clone the repository
git clone https://github.com/arcaputo3/mcp-server-whisper.git
cd mcp-server-whisper
# Using uv
uv sync
# Set up pre-commit hooks
uv run pre-commit install
Configuração de Ambiente
Crie um arquivo .env com base no .env.example fornecido:
cp .env.example .env
Edite o .env com seus valores reais:
OPENAI_API_KEY=your_openai_api_key
AUDIO_FILES_PATH=/path/to/your/audio/files
Nota: As variáveis de ambiente devem estar disponíveis em tempo de execução. Para desenvolvimento local com Claude, use uma ferramenta como dotenv-cli para carregá-las (veja a seção Uso abaixo).
Uso
Desenvolvimento Local com Claude
O projeto inclui um arquivo de configuração .mcp.json para desenvolvimento local com Claude. Para usá-lo:
- Garanta que seu arquivo
.envesteja configurado com as variáveis de ambiente necessárias - Inicie o Claude com as variáveis de ambiente carregadas:
bunx dotenv-cli -- claude
Isso irá:
- Carregar variáveis de ambiente do seu arquivo
.env - Iniciar o Claude com o servidor MCP configurado conforme
.mcp.json - Habilitar hot-reload durante o desenvolvimento
A configuração .mcp.json:
{
"mcpServers": {
"whisper": {
"command": "uv",
"args": ["run", "mcp-server-whisper"],
"env": {
"OPENAI_API_KEY": "${OPENAI_API_KEY}",
"AUDIO_FILES_PATH": "${AUDIO_FILES_PATH}"
}
}
}
}
Ferramentas MCP Expostas
Gerenciamento de Arquivos de Áudio
list_audio_files- Lista arquivos de áudio com opções abrangentes de filtragem e ordenação:- Filtrar por correspondência de padrão regex nos nomes de arquivos
- Filtrar por tamanho do arquivo, duração, hora de modificação ou formato
- Ordenar por nome, tamanho, duração, hora de modificação ou formato
- Retorna
FilePathSupportParamstype-safe com metadados completos
get_latest_audio- Obtém o arquivo de áudio modificado mais recentemente com informações de suporte do modelo
Processamento de Áudio
convert_audio- Converte arquivos de áudio para formatos suportados (mp3 ou wav)- Retorna
AudioProcessingResultcom o caminho de saída
- Retorna
compress_audio- Comprime arquivos de áudio que excedem os limites de tamanho- Retorna
AudioProcessingResultcom o caminho de saída
- Retorna
Transcrição
-
transcribe_audio- Transcrição avançada usando os modelos da OpenAI:- Suporta
whisper-1,gpt-4o-transcribeegpt-4o-mini-transcribe - Prompts personalizados para transcrição guiada
- Granularidades opcionais de timestamp para temporização em nível de palavra e segmento
- Opção de formato de resposta JSON
- Retorna
TranscriptionResultcom texto, dados de uso e timestamps opcionais
- Suporta
-
chat_with_audio- Análise interativa de áudio usando modelos de áudio GPT-4o:- Suporta
gpt-4o-audio-preview(recomendado) e versões datadas - Nota:
gpt-4o-mini-audio-previewtem limitações com chat de áudio e não é recomendado - Prompts de sistema e usuário personalizados
- Fornece respostas conversacionais ao conteúdo de áudio
- Retorna
ChatResultcom o texto da resposta
- Suporta
-
transcribe_with_enhancement- Transcrição aprimorada com templates especializados:detailed- Inclui detalhes de tom, emoção e contextostorytelling- Transforma a transcrição em forma narrativaprofessional- Cria transcrições formais e apropriadas para negóciosanalytical- Adiciona análise de padrões de fala e pontos-chave- Retorna
TranscriptionResultcom saída aprimorada
Texto-para-Fala
create_audio- Gera áudio de texto-para-fala usando a API TTS da OpenAI:- Suporta
gpt-4o-mini-tts(preferido) e outros modelos de fala - Múltiplas opções de voz (alloy, ash, ballad, coral, echo, sage, shimmer, verse, marin, cedar)
- Ajuste de velocidade e instruções personalizadas
- Caminhos de arquivo de saída personalizáveis
- Lida com textos de qualquer tamanho dividindo e unindo automaticamente segmentos de áudio
- Retorna
TTSResultcom o caminho de saída
- Suporta
Formatos de Áudio Suportados
| Modelo | Formatos Suportados |
|---|---|
| Transcribe | flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, webm |
| Chat | mp3, wav |
Nota: Arquivos maiores que 25MB são automaticamente comprimidos para atender aos limites da API.
Exemplo de Uso com Claude
Transcrição Básica de Áudio
Claude, please transcribe my latest audio file with detailed insights.
O Claude irá automaticamente:
- Encontrar o arquivo de áudio mais recente usando
get_latest_audio - Determinar o método de transcrição apropriado
- Processar o arquivo com
transcribe_with_enhancementusando o template "detailed" - Retornar a transcrição aprimorada
Busca Avançada e Filtragem de Arquivos de Áudio
Claude, list all my audio files that are longer than 5 minutes and were created after January 1st, 2024, sorted by size.
O Claude irá:
- Converter a data em um timestamp
- Usar
list_audio_filescom filtros apropriados:min_duration_seconds: 300(5 minutos)min_modified_time: <timestamp for Jan 1, 2024>sort_by: "size"
- Retornar uma lista ordenada de arquivos de áudio correspondentes com metadados abrangentes
Processamento em Lote de Múltiplos Arquivos
Claude, find all MP3 files with "interview" in the filename and create professional transcripts for each one.
O Claude irá:
- Buscar arquivos usando
list_audio_filescom filtros de padrão e formato - Fazer múltiplas chamadas paralelas de ferramenta
transcribe_with_enhancement(o MCP lida com paralelismo nativamente) - Cada chamada usa
enhancement_type: "professional"e retorna umTranscriptionResulttipado - Retornar todas as transcrições com metadados completos em uma saída bem formatada
Gerando Áudio de Texto-para-Fala
Claude, create audio with this script: "Welcome to our podcast! Today we'll be discussing artificial intelligence trends in 2025." Use the shimmer voice.
O Claude irá:
- Usar a ferramenta
create_audiocom:text_promptcontendo o scriptvoice: "shimmer"model: "gpt-4o-mini-tts"(modelo padrão de alta qualidade)instructions: "Speak in an enthusiastic, podcast host style"(opcional)speed: 1.0(padrão, pode ser ajustado)
- Gerar o arquivo de áudio e salvá-lo no diretório de áudio configurado
- Fornecer o caminho para o arquivo de áudio gerado
Configuração com Claude Desktop
Para uso em produção com Claude Desktop (em oposição ao desenvolvimento local), adicione isto ao seu claude_desktop_config.json:
UVX
{
"mcpServers": {
"whisper": {
"command": "uvx",
"args": ["mcp-server-whisper"],
"env": {
"OPENAI_API_KEY": "your_openai_api_key",
"AUDIO_FILES_PATH": "/path/to/your/audio/files"
}
}
}
}
Recomendação (Somente Mac OS)
- Instale o Screen Recorder By Omi (gratuito)
- Defina
AUDIO_FILES_PATHcomo/Users/<user>/Movies/Omi Screen Recordere substitua<user>pelo seu nome de usuário - Ao gravar áudio com o aplicativo, você pode transcrever múltiplos arquivos em paralelo com o Claude
Desenvolvimento
Este projeto usa ferramentas modernas de desenvolvimento Python, incluindo uv, pytest, ruff e mypy.
# Run tests
uv run pytest
# Run with coverage
uv run pytest --cov=src
# Format code
uv run ruff format src
# Lint code
uv run ruff check src
# Run type checking (strict mode)
uv run mypy --strict src
# Run the pre-commit hooks
pre-commit run --all-files
Fluxo de Trabalho CI/CD
O projeto usa GitHub Actions para CI/CD:
- Lint e Verificação de Tipos: Garante a qualidade do código com ruff e verificação estrita de tipos com mypy
- Testes: Executa testes em múltiplas versões do Python (3.10, 3.11, 3.12, 3.13, 3.14, 3.14t)
- Release e Publicação: Fluxo de trabalho com gatilho duplo para gerenciamento flexível de releases
Nota: Python 3.14t é a versão free-threaded (sem GIL) para testar paralelismo real.
Criando um Novo Release
O fluxo de trabalho de release suporta duas abordagens:
Opção 1: Release Automatizado (Recomendado)
Envie uma tag para criar automaticamente um release e publicar no PyPI:
# 1. Update version in pyproject.toml
# Edit the version field manually, e.g., "1.0.0" -> "1.1.0"
# 2. Update __version__ in src/mcp_server_whisper/__init__.py to match
# 3. Update the lock file
uv lock
# 4. Commit the version bump
git add pyproject.toml src/mcp_server_whisper/__init__.py uv.lock
git commit -m "chore: bump version to 1.1.0"
# 5. Create and push the version tag
git tag v1.1.0
git push origin main
git push origin v1.1.0
Isso irá:
- Verificar se a versão da tag corresponde ao pyproject.toml
- Compilar o pacote
- Criar um release no GitHub com notas geradas automaticamente
- Publicar automaticamente no PyPI
Opção 2: Release Manual
Crie um release manualmente pela interface do GitHub e depois publique opcionalmente:
- Vá para Releases no GitHub
- Clique em "Draft a new release"
- Crie uma nova tag ou selecione uma existente
- Preencha os detalhes do release
- Clique em "Publish release"
Quando você publicar o release, o fluxo de trabalho publicará automaticamente no PyPI. Você também pode criar um release de rascunho para adiar a publicação.
Filosofia de Design da API
O MCP Server Whisper segue um design de API plano e type-safe otimizado para clientes MCP:
- Argumentos Planos: Todas as ferramentas aceitam parâmetros planos em vez de objetos aninhados para chamadas mais simples e intuitivas
- Respostas Type-Safe: Cada ferramenta retorna um modelo Pydantic fortemente tipado (
TranscriptionResult,ChatResult,AudioProcessingResult,TTSResult) - Operações de Item Único: Uma chamada processa um arquivo, com o protocolo MCP lidando com paralelismo nativamente
- Tratamento de Erros por Arquivo: Falhas são isoladas em operações individuais, não em lotes inteiros
- Autodocumentável: Type hints fornecem autocompletar e validação em IDEs e modelos de IA
Este design torna significativamente mais fácil para assistentes de IA usar as ferramentas corretamente e lidar com os resultados de forma confiável.
Como Funciona
Para informações detalhadas de arquitetura, veja a Documentação de Arquitetura.
O MCP Server Whisper é construído sobre o Model Context Protocol, que padroniza como modelos de IA interagem com ferramentas externas e fontes de dados. O servidor:
- Expõe Capacidades de Processamento de Áudio: Através de interfaces padronizadas de ferramentas MCP com APIs planas e type-safe
- Implementa Processamento Paralelo: Usando concorrência estruturada do anyio; clientes MCP lidam com paralelismo nativamente
- Gerencia Operações de Arquivo: Lida com detecção, validação, conversão e compressão
- Fornece Transcrição Rica: Via diferentes modelos da OpenAI e templates de aprimoramento
- Otimiza o Desempenho: Com mecanismos de cache para operações repetidas
- Garante Type Safety: Todas as respostas usam modelos Pydantic para validação e suporte a IDE
Por baixo dos panos, ele usa:
pydubpara manipulação de arquivos de áudio (comaudioop-ltspara Python 3.13+)anyiopara concorrência estruturada e gerenciamento de grupos de tarefasaioresultpara coletar resultados de grupos de tarefas paralelas- Os modelos de transcrição mais recentes da OpenAI (incluindo gpt-4o-transcribe)
- Os modelos de áudio GPT-4o da OpenAI para compreensão aprimorada
- O gpt-4o-mini-tts da OpenAI para síntese de fala de alta qualidade
- FastMCP para implementação simplificada do servidor MCP
- Type hints e validação estrita com mypy em todo o código
Contribuindo
Contribuições são bem-vindas! Por favor, siga estes passos:
- Faça um fork do repositório
- Crie um novo branch para sua funcionalidade (
git checkout -b feature/amazing-feature) - Faça suas alterações
- Execute os testes e o linting (
uv run pytest && uv run ruff check src && uv run mypy --strict src) - Faça commit das suas alterações (
git commit -m 'Add some amazing feature') - Envie para o branch (
git push origin feature/amazing-feature) - Abra um Pull Request
Licença
Este projeto é licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Agradecimentos
- Model Context Protocol (MCP) - Para a especificação do protocolo
- pydub - Para processamento de áudio
- OpenAI Whisper - Para transcrição de áudio
- FastMCP - Para implementação do servidor MCP
- Anthropic Claude - Para interação em linguagem natural
- MCP Review - Este servidor MCP é certificado pela MCP Review