MeetStream

Envie bots de IA para Zoom, Google Meet e Microsoft Teams para gravar, transcrever e resumir reuniões. 19 ferramentas que cobrem ciclo de vida dos bots, transcrições e resumos com IA, áudio por participante, linhas do tempo dos falantes, chat ao vivo e agendamento de calendário.

Servidor MCP hospedado

npx add-mcp 'https://mcp.meetstream.ai/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

Servidor MCP MeetStream

Dê ao Claude - ou a qualquer cliente compatível com MCP - acesso direto à API do bot de reuniões MeetStream. Adicione uma URL, faça login, e seu assistente pode executar todo o ciclo de vida do bot (criar, gravar, transcrever, resumir, interagir ao vivo, gerenciar entrada automática no calendário) por meio de 19 ferramentas.

https://mcp.meetstream.ai/mcp

A MeetStream hospeda o servidor. Não há nada para instalar ou executar na sua máquina, e ele está sempre na versão atual.

Início rápido

Connect MeetStream in 4 steps: add the URL, click Connect, sign in and click Allow, then ask

  1. Adicione https://mcp.meetstream.ai/mcp à sua ferramenta de IA. Não adicione uma chave.
  2. Clique em Conectar (no Claude Code: execute /mcp, depois escolha Autenticar). Seu navegador abre app.meetstream.ai.
  3. Faça login na MeetStream e clique em Permitir. A MeetStream cria uma chave de API para esta conexão. Você não vê nem copia a chave.
  4. Pergunte à sua ferramenta de IA: "liste meus bots do meetstream". Uma lista, ou uma lista vazia, significa que você está conectado.

As etapas exatas para cada ferramenta estão em Conectar.

Qual URL usar

URLUse para
https://mcp.meetstream.ai/mcpTodos os clientes atuais. HTTP Streamable. As respostas são transmitidas como eventos enviados pelo servidor (SSE), então você não precisa de uma configuração SSE separada.
https://mcp.meetstream.ai/sseApenas clientes que suportam apenas o transporte HTTP+SSE mais antigo (2024-11-05). O login e a chave de API funcionam da mesma forma.
Your AI tool ──HTTPS + OAuth sign-in──► mcp.meetstream.ai ──► api.meetstream.ai

O pacote npm antigo @meetstream/mcp (npx @meetstream/mcp) está congelado na versão 0.3.0 e não é mais mantido. Ele é anterior aos padrões e correções atuais do create_bot. Use a URL hospedada em vez disso.


Conectar

Adicione a URL sem chave. Seu cliente encontra o login da MeetStream, abre app.meetstream.ai no seu navegador, e você clica em Permitir. O painel cria uma chave de API para essa conexão, chamada MCP · <app name> · <date> · <number>. Para desconectar, exclua essa chave na página de chaves de API.

Esta é a página que abre no seu navegador. Se você não estiver conectado à MeetStream, faça login primeiro, e então verá esta página:

MeetStream consent page: Connect Claude Code to MeetStream, with Cancel and Allow buttons

A página mostra o nome do aplicativo que pediu para conectar. Se você não reconhecer o aplicativo, clique em Cancelar. O link de login é válido por 15 minutos.

Claude Code

claude mcp add --transport http meetstream https://mcp.meetstream.ai/mcp
# then run /mcp in Claude Code and choose Authenticate

Claude (web e desktop)

Personalizar → Conectores → + → Adicionar conector personalizado. Nomeie como meetstream, defina a URL como https://mcp.meetstream.ai/mcp, deixe os campos OAuth em branco e clique em Conectar.

Cursor

~/.cursor/mcp.json (ou instale o plugin MeetStream Cursor), depois clique em Conectar ao lado de meetstream em Configurações do Cursor → MCP:

{
  "mcpServers": {
    "meetstream": { "url": "https://mcp.meetstream.ai/mcp" }
  }
}

VS Code

.vscode/mcp.json, depois inicie o servidor e faça login quando o VS Code solicitar:

{
  "servers": {
    "meetstream": { "type": "http", "url": "https://mcp.meetstream.ai/mcp" }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json. O Cascade pede que você faça login no primeiro uso. Se a sua versão do Windsurf não conseguir concluir o login, use um cabeçalho de chave de API (abaixo):

{
  "mcpServers": {
    "meetstream": { "serverUrl": "https://mcp.meetstream.ai/mcp" }
  }
}

Codex

~/.codex/config.toml, depois execute codex mcp login meetstream:

[mcp_servers.meetstream]
url = "https://mcp.meetstream.ai/mcp"

Qualquer outro cliente MCP

Aponte para https://mcp.meetstream.ai/mcp como um servidor remoto (HTTP Streamable). Clientes que suportam autorização MCP fazem login sozinhos: metadados de recurso protegido (RFC 9728), metadados do servidor de autorização (RFC 8414), registro dinâmico de cliente (RFC 7591) e o fluxo de código de autorização com PKCE. Os tokens de acesso duram uma hora e são renovados automaticamente.

Ou use uma chave de API

Para clientes sem OAuth, ou para scripts e CI, crie uma chave em app.meetstream.ai/api-keys e envie-a como cabeçalho:

{
  "mcpServers": {
    "meetstream": {
      "url": "https://mcp.meetstream.ai/mcp",
      "headers": { "Authorization": "Bearer ms_YOUR_API_KEY" }
    }
  }
}
  • Claude Code: claude mcp add --transport http meetstream https://mcp.meetstream.ai/mcp --header "Authorization: Bearer $MEETSTREAM_API_KEY"
  • Codex: adicione bearer_token_env_var = "MEETSTREAM_API_KEY" ao bloco [mcp_servers.meetstream].
  • X-MeetStream-Api-Key: <key> também funciona. Para UIs de conectores que não podem definir cabeçalhos, https://mcp.meetstream.ai/mcp?key=<key>. O servidor nunca registra strings de consulta, mas uma chave em uma URL pode acabar no histórico do lado do cliente, então prefira OAuth ou um cabeçalho.

Clientes mais antigos (HTTP+SSE)

/mcp é o endpoint principal, e suas respostas já são transmitidas como eventos enviados pelo servidor (text/event-stream). Clientes que falam apenas o transporte HTTP+SSE mais antigo de 2024-11-05 conectam-se a https://mcp.meetstream.ai/sse com as mesmas opções de login ou chave. O primeiro evento do stream nomeia o endpoint de mensagem por sessão; a chave nunca aparece nele.

Verifique se está conectado

Pergunte ao seu cliente algo como "liste meus bots do meetstream" - se ele retornar dados (ou uma lista vazia limpa) em vez de um erro, você está conectado.


Então é só perguntar

"Entre na minha reunião diária às https://meet.google.com/abc-defg-hij,, grave com transcrição Deepgram e me dê a transcrição quando terminar."

"Liste meus bots de hoje e me dê o resumo de IA da chamada de cliente das 15h."

"Envie 'vamos acompanhar por e-mail' para a reunião em que o bot está, e depois mostre nosso logotipo."

"Agende um bot para a reunião do conselho de amanhã no meu calendário."


Lista completa de capacidades - 19 ferramentas

Ciclo de vida do bot

FerramentaO que faz
create_botEnvia (ou agenda, via join_at) um bot para uma reunião Zoom / Google Meet / Microsoft Teams. Somente áudio por padrão; record_video ativa o vídeo e o grava em visualização do apresentador, a menos que video_layout: "grid_view" seja solicitado, e o vídeo por participante permanece desligado, a menos que solicitado. Configurável: provedor de transcrição + idioma, callback_url para webhooks, gravação de vídeo, streams de áudio/vídeo por participante, agente conversacional MIA, entradas autenticadas (google_login_domain / teams_login_domain, opcional sign_in_email / strict_email, para domínios já registrados na sua conta), entradas autenticadas no Zoom (zoom_zak_url / zoom_obf_url), atributos personalizados, janela de retenção, chave de idempotência (repetições seguras - uma chamada repetida retorna o bot original, nunca um duplicado). Retorna bot_id e transcript_id (quando um provedor está definido).
list_botsLista todos os bots da conta (paginado).
get_bot_statusStatus atual do ciclo de vida - um de Joining, InWaitingRoom, InMeeting, Recording, Leaving, Stopped, NotAllowed, Denied, Error, Done.
get_bot_detailMetadados completos da sessão: plataforma, tempos, linha do tempo de status, o transcript_id canônico, caption_file (para o provedor meeting_captions) e o payload da solicitação original.
get_bot_summaryResumo de reunião com IA integrado da MeetStream - nenhuma chamada LLM externa necessária.
remove_botFaz o bot sair de uma reunião ativa imediatamente. Os dados gravados são mantidos.
delete_bot_dataExclui permanentemente o áudio, o vídeo e as transcrições de um bot. Requer confirm: true - chame apenas quando o usuário tiver solicitado explicitamente a exclusão de dados. Irreversível.

Transcrição

FerramentaO que faz
get_transcriptBusca uma transcrição por bot_id. Resolve automaticamente o transcript_id (nunca é entregue em webhooks) via /detail → /transcriptions. Defina wait: true para fazer polling até estar pronto; raw: true para saída não processada do provedor. Os segmentos retornam como { speaker, transcript, start_time, end_time }.
list_transcriptionsLista todas as execuções de transcrição de um bot - provedor, status e URLs de download pré-assinadas (válidas por 1h).
transcribe_audio(Re)transcreve o áudio gravado de um bot com um provedor escolhido - útil para tentar novamente com um provedor ou idioma diferente após a reunião.

Mídia e dados da reunião

FerramentaO que faz
get_media_urlsURLs pré-assinadas para audio (1h), video (10min), audio_streams/video_streams (por participante - requer separate_audio_streams/separate_video_streams na criação) ou screenshots.
get_participantsTodos detectados na reunião - nome de exibição, nome completo, status, IDs de stream.
get_chatsMensagens de chat da reunião capturadas durante a chamada.
get_speaker_timelineQuem falou e quando, como uma linha do tempo de segmentos de fala.

Interação ao vivo na reunião

FerramentaO que faz
send_chat_messagePublica uma mensagem de chat na reunião ao vivo através do bot.
send_imageExibe uma imagem ou GIF como o quadro de vídeo do bot. img_url deve ser publicamente acessível (sem base64).

Calendário

FerramentaO que faz
list_calendar_eventsPróximos eventos de um Google Calendar conectado. (Conectar um calendário - POST /calendar/create_calendar com credenciais OAuth - é uma configuração única geralmente feita via CLI MeetStream ou painel.)
schedule_calendar_botAgenda (action: "schedule") ou remove ("unschedule") um bot para um evento de calendário específico.

Referência

FerramentaO que faz
webhook_events_guideRetorna a referência de webhook - formato do envelope (event e bot_event), o modelo terminal de duas camadas bot.stopped, códigos de status e ressalvas do provedor de streaming, verificado contra entregas de produção capturadas. Peça ao seu modelo para chamar isso antes de escrever qualquer código de manipulador de webhook.

O que torna isso diferente de apenas ler a documentação

Cada descrição de ferramenta e o webhook_events_guide incorporam verdade de base verificada ao vivo, confirmada contra execuções reais de bots em produção, que a documentação pública da API atualmente apresenta incorretamente:

  • Cada entrega carrega event, e a maioria também carrega bot_event com o nome específico. Leia event para rotear, bot_event para detalhes.
  • Os terminais têm duas camadas: cada encerramento chega uma vez com event: "bot.stopped", e bot_event diz o motivo (bot.stopped, bot.kicked, bot.notallowed, bot.denied, bot.failed). Timeouts de lobby, negações e falhas carregam status_code: 500. Ramifique em bot_event, não em bot_status - uma expulsão e uma saída limpa ambos relatam Stopped.
  • Provedores de transcrição somente streaming (deepgram_streaming, assemblyai_streaming, jigsawstack_streaming, meetstream_streaming, meeting_captions) não produzem transcrição pós-chamada, então transcription.processed nunca dispara. bot.done ainda dispara. Uma busca de transcrição pós-chamada para eles retorna 202 indefinidamente, então limite seu polling.
  • transcript_id nunca está em um payload de webhook - get_transcript o resolve automaticamente para você, em vez de fazer o modelo adivinhar.
  • Padrões seguros em todos os lugares: timeouts de automatic_leave em cada chamada create_bot, e recording_permission_denied_timeout com piso de 60 (a API rejeita valores menores com um 400).

Como funciona

O servidor não possui chave de API própria: cada solicitação (ou sessão SSE) carrega a chave do chamador ou um token OAuth que a envolve. Uma solicitação sem credenciais recebe um 401 com instruções de configuração e um cabeçalho WWW-Authenticate apontando clientes OAuth para o fluxo de login. HTTP Streamable é sem estado, então o serviço escala horizontalmente sem estado compartilhado; os tokens OAuth são valores criptografados e autocontidos, então também não há banco de dados de tokens.

A MeetStream executa o servidor; ele é escrito em Go e seu código-fonte não é publicado. Este repositório contém a documentação do usuário e a entrada do Registro MCP (server.json). Para relatar um problema, abra uma issue aqui.

Solução de problemas

SintomaCorreção
A página de login diz que o link expirouOs links de login duram 15 minutos. Inicie a conexão novamente pelo seu cliente
401 do mcp.meetstream.aiEntre pelo seu cliente (OAuth) ou envie Authorization: Bearer <key> / X-MeetStream-Api-Key - o servidor não tem chave própria
A chamada de ferramenta retorna um 401 da APIA chave é inválida ou foi revogada (para conexões OAuth, a chave nomeada após o aplicativo foi excluída). Reconecte-se ou gere uma nova chave em app.meetstream.ai/api-keys
get_transcript retorna ready: falseA reunião ainda não terminou o processamento ou (para provedores de streaming) não há transcrição pós-chamada - verifique get_bot_status primeiro
As ferramentas de calendário retornam vazio/errosNenhum calendário está conectado ainda - conecte um via meetstream calendar connect no CLI primeiro
Seu cliente só suporta o transporte SSE antigoUse https://mcp.meetstream.ai/sse

Prefere um terminal? Veja o CLI do MeetStream. Documentação: docs.meetstream.ai · Especificação da API: openapi.json · Migrando do Recall.ai: @meetstream/migrate

Privacidade e telemetria

O servidor hospedado registra contagens anônimas de quais ferramentas são chamadas e se cada chamada foi bem-sucedida. Ele nunca registra sua chave de API, tokens OAuth, URLs de reuniões, transcrições ou qualquer outro conteúdo. Os logs do servidor contêm apenas o caminho da solicitação, nunca a string de consulta.

MIT © MeetStream.ai