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
- Adicione
https://mcp.meetstream.ai/mcpà sua ferramenta de IA. Não adicione uma chave. - Clique em Conectar (no Claude Code: execute
/mcp, depois escolha Autenticar). Seu navegador abreapp.meetstream.ai. - 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.
- 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
| URL | Use para |
|---|---|
https://mcp.meetstream.ai/mcp | Todos 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/sse | Apenas 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 docreate_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:

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
| Ferramenta | O que faz |
|---|---|
create_bot | Envia (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_bots | Lista todos os bots da conta (paginado). |
get_bot_status | Status atual do ciclo de vida - um de Joining, InWaitingRoom, InMeeting, Recording, Leaving, Stopped, NotAllowed, Denied, Error, Done. |
get_bot_detail | Metadados 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_summary | Resumo de reunião com IA integrado da MeetStream - nenhuma chamada LLM externa necessária. |
remove_bot | Faz o bot sair de uma reunião ativa imediatamente. Os dados gravados são mantidos. |
delete_bot_data | Exclui 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
| Ferramenta | O que faz |
|---|---|
get_transcript | Busca 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_transcriptions | Lista 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
| Ferramenta | O que faz |
|---|---|
get_media_urls | URLs 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_participants | Todos detectados na reunião - nome de exibição, nome completo, status, IDs de stream. |
get_chats | Mensagens de chat da reunião capturadas durante a chamada. |
get_speaker_timeline | Quem falou e quando, como uma linha do tempo de segmentos de fala. |
Interação ao vivo na reunião
| Ferramenta | O que faz |
|---|---|
send_chat_message | Publica uma mensagem de chat na reunião ao vivo através do bot. |
send_image | Exibe uma imagem ou GIF como o quadro de vídeo do bot. img_url deve ser publicamente acessível (sem base64). |
Calendário
| Ferramenta | O que faz |
|---|---|
list_calendar_events | Pró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_bot | Agenda (action: "schedule") ou remove ("unschedule") um bot para um evento de calendário específico. |
Referência
| Ferramenta | O que faz |
|---|---|
webhook_events_guide | Retorna 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 carregabot_eventcom o nome específico. Leiaeventpara rotear,bot_eventpara detalhes. - Os terminais têm duas camadas: cada encerramento chega uma vez com
event: "bot.stopped", ebot_eventdiz o motivo (bot.stopped,bot.kicked,bot.notallowed,bot.denied,bot.failed). Timeouts de lobby, negações e falhas carregamstatus_code: 500. Ramifique embot_event, não embot_status- uma expulsão e uma saída limpa ambos relatamStopped. - 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ãotranscription.processednunca dispara.bot.doneainda dispara. Uma busca de transcrição pós-chamada para eles retorna202indefinidamente, então limite seu polling. transcript_idnunca está em um payload de webhook -get_transcripto resolve automaticamente para você, em vez de fazer o modelo adivinhar.- Padrões seguros em todos os lugares: timeouts de
automatic_leaveem cada chamadacreate_bot, erecording_permission_denied_timeoutcom 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
| Sintoma | Correção |
|---|---|
| A página de login diz que o link expirou | Os links de login duram 15 minutos. Inicie a conexão novamente pelo seu cliente |
401 do mcp.meetstream.ai | Entre 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 API | A 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: false | A 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/erros | Nenhum calendário está conectado ainda - conecte um via meetstream calendar connect no CLI primeiro |
| Seu cliente só suporta o transporte SSE antigo | Use 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