Paxa Labs MCP

IA de fala em tailandês e inglês para o seu agente: fale em voz alta, leia em voz alta, traduza para tailandês, OCR.

Documentação

@paxalabs/mcp

npm CI node license Claude Desktop bundle

Add to Cursor Install in VS Code

Servidor oficial MCP para a API Paxa Labs: IA de fala em tailandês e inglês para seu agente, incluindo reprodução de áudio local.

Um agente conectado a este servidor pode falar em voz alta pelos alto-falantes da sua máquina, ler conteúdo longo em voz alta como uma fila de reprodução gerenciada, salvar fala em arquivos de áudio, traduzir qualquer idioma para tailandês e ler PDFs e imagens com OCR.

Beta. O conjunto de ferramentas está completo e testado de ponta a ponta, mas os nomes das ferramentas e o comportamento podem mudar antes da versão 1.0 conforme o feedback chega. Relate problemas em https://github.com/paxalabs/mcp/issues.

Início rápido

Você precisa de uma chave de API Paxa em paxalabs.com. Novas contas incluem créditos gratuitos.

Claude Code

claude mcp add paxa -e PAXA_API_KEY=pxa_your_key_here -- npx -y @paxalabs/mcp

Claude Desktop, Cursor e outros clientes MCP

Adicione à configuração MCP do seu cliente (para Claude Desktop: claude_desktop_config.json):

{
  "mcpServers": {
    "paxa": {
      "command": "npx",
      "args": ["-y", "@paxalabs/mcp"],
      "env": {
        "PAXA_API_KEY": "pxa_your_key_here"
      }
    }
  }
}

Um clique para Cursor ou VS Code: os botões instalam a mesma entrada em ~/.cursor/mcp.json ou nas configurações MCP do VS Code. Depois, substitua pxa_your_key_here na entrada paxa pela sua chave.

Add to Cursor Install in VS Code

Ferramentas

FerramentaO que fazCréditos
speakSintetiza uma linha curta e a reproduz pelos alto-falantes, bloqueando até terminar15 por 1000 caracteres
queue_speechLê conteúdo longo em voz alta: divide automaticamente em partes, sintetiza antecipadamente enquanto reproduz, retorna imediatamente15 por 1000 caracteres
control_playbackControla a fila de áudio compartilhada: status, pause, resume, skip, cleargrátis
play_audioReproduz um arquivo de áudio local pelos alto-falantesgrátis
text_to_speechSintetiza fala em um arquivo de áudio (mp3, opus, wav) sem reproduzi-lo15 por 1000 caracteres
translate_to_thaiTraduz qualquer idioma para tailandês, com controles de formalidade, glossário e contexto25 por 1000 caracteres
ocr_documentOCR de PDF, PNG, JPEG ou WebP local para Markdown ou blocos estruturados6,5 por página
list_voicesO elenco de vozes TTS com notas de personagemgrátis
list_modelsModelos disponíveis, limites e preçosgrátis
get_accountSaldo de créditos, plano e limites de taxagrátis

Todo o áudio flui por uma fila ordenada, então os sons nunca se sobrepõem: speak linhas entram na frente dos segmentos longos enfileirados, e queue_speech mantém um livro ou artigo fluindo sem lacunas, sintetizando o próximo segmento enquanto o atual é reproduzido.

Com um player compatível com streaming instalado (veja abaixo), a fala começa nos primeiros bytes da API em vez de após o download completo: cerca de 0,3 s até a primeira palavra, independentemente do comprimento, versus 0,7 s para uma linha curta e 2,5 s para um parágrafo longo quando armazenado em buffer.

Modo de voz para Claude Code

Três partes transformam o Claude Code em algo do qual você pode se afastar: ele fala quando tem novidades e chama você quando precisa de você.

1. Instale o servidor (Início rápido acima).

2. Diga ao Claude quando falar. Adicione isto a ~/.claude/CLAUDE.md, ou ao CLAUDE.md de um projeto:

## Voice

I have the Paxa MCP server (tools: speak, queue_speech, control_playback).
I am often away from the screen, so use voice like this:

- At the end of a turn where you did real work, call speak with a one or
  two sentence summary before writing the final message: what you did,
  what is next, and anything you need from me.
- When you need a decision from me, speak the question too.
- Keep it short and conversational. Never read code, file paths, logs, or
  long lists aloud. Those stay in text.
- Do not speak for quick back-and-forth or trivial answers.
- If I ask to hear something long, use queue_speech.
- Speak in the language I write in.

3. Seja avisado quando o Claude precisar de você. Quando o Claude Code espera por uma permissão ou uma resposta, o modelo não está em execução, então ele não pode chamar speak. O Claude Code dispara um hook nesses momentos, e paxa say transforma o hook em uma frase falada, como "Permissão necessária." Coloque o comando paxa no seu PATH:

npm install -g @paxalabs/mcp

Depois, adicione a ~/.claude/settings.json:

{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt|idle_prompt|agent_needs_input",
        "hooks": [{ "type": "command", "command": "paxa say" }]
      }
    ]
  }
}

paxa say pega a chave de PAXA_API_KEY, ou da entrada paxa em ~/.claude.json quando aquela não está definida, então o passo 1 é toda a configuração necessária. Um hook Stop configurado da mesma forma fala "Concluído." no final de cada turno.

As frases integradas são sintetizadas uma vez por voz e mantidas no diretório de cache do usuário (~/Library/Caches/paxa/say no macOS, ~/.cache/paxa/say no Linux, %LOCALAPPDATA%\paxa\cache\say no Windows). Após essa primeira reprodução, que custa bem menos de um crédito, uma notificação é reproduzida do disco: sem ida e volta à rede e sem créditos.

Para mudar as palavras, escreva seu próprio texto no comando do hook e adicione --cache para que ele receba o mesmo tratamento. Uma entrada por evento, já que o matcher seleciona o evento:

{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt",
        "hooks": [{ "type": "command", "command": "paxa say --cache \"Hey, need your OK\"" }]
      },
      {
        "matcher": "idle_prompt|agent_needs_input",
        "hooks": [{ "type": "command", "command": "paxa say --cache --voice cookie \"Your turn\"" }]
      }
    ]
  }
}

Sem --cache, nada que você digitar ou canalizar para paxa say é gravado em disco, e mensagens transportadas dentro de um payload de hook nunca são.

No macOS, o afplay integrado precisa de cerca de meio segundo apenas para iniciar e parar, o que é a maior parte do atraso que você ouve em uma frase curta. Com brew install mpg123 (ou ffmpeg) instalado, frases em cache são reproduzidas por ele: mpg123 inicia em cerca de 50 ms, ffplay em cerca de 300 ms.

paxa say também funciona sozinho:

paxa say "Build finished"
paxa say --voice cookie "Deploy is live"

Se seu editor ou aplicativo de desktop não foi iniciado a partir de um terminal, seu PATH pode não incluir o diretório bin do node, e o hook falhará silenciosamente. Use o caminho absoluto para paxa no comando do hook se isso acontecer.

Variáveis de ambiente

VariávelObrigatóriaPadrãoFinalidade
PAXA_API_KEYsimSua chave de API. O servidor inicia sem ela, mas toda ferramenta que chama a API falha com instruções de configuração que o agente pode repassar
PAXA_OUTPUT_DIRnãodiretório de trabalhoOnde text_to_speech salva arquivos
PAXA_DEFAULT_VOICEnãonomyenVoz usada quando uma chamada de ferramenta não escolhe uma. Texto em inglês geralmente soa melhor com uma voz em inglês (donut, cookie, toast, latte)
PAXA_BASE_URLnãohttps://api.paxalabs.comSubstituição da origem da API

Suporte a reprodução

PlataformaPlayer de arquivoPlayer de streamingPausar/retomar
macOSafplay (integrado)ffplay, mpv ou mpg123 se instaladosim
Linuxffplay, mpv, mpg123, paplay ou aplayffplay, mpv ou mpg123sim
Windowsffplay se instalado, senão PowerShell (wav)ffplay se instaladonão

Streaming precisa de um player que leia de stdin. No macOS, brew install ffmpeg (or mpv) o habilita; sem ele, a fala ainda é reproduzida por afplay após o download ser concluído. Se nenhum player for encontrado, as ferramentas de fala relatam isso claramente e text_to_speech ainda funciona.

Extensão Claude Desktop

Cada versão no GitHub inclui um pacote .mcpb. Baixe-o, abra-o com o Claude Desktop e insira sua chave de API nas configurações da extensão. O pacote carrega sua própria cópia do servidor e suas dependências, então funciona sem Node.js ou npm na máquina.

Desenvolvimento

pnpm install
pnpm build        # compile to dist/
pnpm typecheck
pnpm mcpb         # build release/paxalabs-mcp-<version>.mcpb for Claude Desktop

# live smoke test (spends a few credits, plays audio out loud)
PAXA_API_KEY=pxa_... TEST_OUT_DIR=/tmp/paxa-out node scripts/e2e.mjs