MeetStream

Envía bots de IA a Zoom, Google Meet y Microsoft Teams para grabar, transcribir y resumir reuniones. 19 herramientas que cubren el ciclo de vida de los bots, transcripciones y resúmenes con IA, audio por participante, líneas de tiempo de oradores, chat en vivo y programación de calendario.

Servidor MCP alojado

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

Se instala en Claude Code, Codex, Cursor y más

Documentación

Servidor MCP de MeetStream

Dale a Claude - o a cualquier cliente compatible con MCP - acceso directo a la API del bot de reuniones de MeetStream. Agrega una URL, inicia sesión, y tu asistente puede ejecutar el ciclo de vida completo del bot (crear, grabar, transcribir, resumir, interactuar en vivo, gestionar la unión automática al calendario) a través de 19 herramientas.

https://mcp.meetstream.ai/mcp

MeetStream aloja el servidor. No hay nada que instalar o ejecutar en tu máquina, y siempre es la versión actual.

Inicio rápido

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

  1. Agrega https://mcp.meetstream.ai/mcp a tu herramienta de IA. No agregues una clave.
  2. Haz clic en Conectar (en Claude Code: ejecuta /mcp, luego elige Autenticar). Tu navegador abre app.meetstream.ai.
  3. Inicia sesión en MeetStream y luego haz clic en Permitir. MeetStream crea una clave de API para esta conexión. No ves ni copias la clave.
  4. Pregunta a tu herramienta de IA: "lista mis bots de meetstream". Una lista, o una lista vacía, significa que estás conectado.

Los pasos exactos para cada herramienta están en Conectar.

Qué URL usar

URLÚsala para
https://mcp.meetstream.ai/mcpTodos los clientes actuales. HTTP transmisible. Las respuestas se transmiten como eventos enviados por el servidor (SSE), por lo que no necesitas una configuración SSE separada.
https://mcp.meetstream.ai/sseSolo clientes que admiten el transporte HTTP+SSE más antiguo (2024-11-05). El inicio de sesión y la clave de API funcionan de la misma manera.
Your AI tool ──HTTPS + OAuth sign-in──► mcp.meetstream.ai ──► api.meetstream.ai

El antiguo paquete npm @meetstream/mcp (npx @meetstream/mcp) está congelado en 0.3.0 y ya no se mantiene. Es anterior a los valores predeterminados y correcciones actuales de create_bot. Usa la URL alojada en su lugar.


Conectar

Agrega la URL sin clave. Tu cliente encuentra el inicio de sesión de MeetStream, abre app.meetstream.ai en tu navegador y haces clic en Permitir. El panel crea una clave de API para esa conexión, llamada MCP · <app name> · <date> · <number>. Para desconectarte, elimina esa clave en la página de claves de API.

Esta es la página que se abre en tu navegador. Si no has iniciado sesión en MeetStream, primero inicias sesión y luego ves esta página:

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

La página muestra el nombre de la aplicación que solicitó conectarse. Si no reconoces la aplicación, haz clic en Cancelar. El enlace de inicio de sesión es válido durante 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 y escritorio)

Personalizar → Conectores → + → Agregar conector personalizado. Nómbralo meetstream, establece la URL a https://mcp.meetstream.ai/mcp, deja los campos OAuth en blanco y haz clic en Conectar.

Cursor

~/.cursor/mcp.json (o instala el plugin de MeetStream para Cursor), luego haz clic en Conectar junto a meetstream en Configuración de Cursor → MCP:

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

VS Code

.vscode/mcp.json, luego inicia el servidor e inicia sesión cuando VS Code lo solicite:

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

Windsurf

~/.codeium/windsurf/mcp_config.json. Cascade te pide que inicies sesión en el primer uso. Si tu versión de Windsurf no puede completar el inicio de sesión, usa un encabezado de clave de API (abajo):

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

Codex

~/.codex/config.toml, luego ejecuta codex mcp login meetstream:

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

Cualquier otro cliente MCP

Apúntalo a https://mcp.meetstream.ai/mcp como un servidor remoto (HTTP transmisible). Los clientes que admiten la autorización MCP inician sesión por sí mismos: metadatos de recursos protegidos (RFC 9728), metadatos del servidor de autorización (RFC 8414), registro dinámico de clientes (RFC 7591) y el flujo de código de autorización con PKCE. Los tokens de acceso duran una hora y se actualizan automáticamente.

O usa una clave de API

Para clientes sin OAuth, o para scripts y CI, crea una clave en app.meetstream.ai/api-keys y envíala como encabezado:

{
  "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: agrega bearer_token_env_var = "MEETSTREAM_API_KEY" al bloque [mcp_servers.meetstream].
  • X-MeetStream-Api-Key: <key> también funciona. Para interfaces de conectores que no pueden establecer encabezados, https://mcp.meetstream.ai/mcp?key=<key>. El servidor nunca registra cadenas de consulta, pero una clave en una URL puede terminar en el historial del lado del cliente, así que prefiere OAuth o un encabezado.

Clientes más antiguos (HTTP+SSE)

/mcp es el endpoint principal, y sus respuestas ya se transmiten como eventos enviados por el servidor (text/event-stream). Los clientes que solo hablan el transporte HTTP+SSE más antiguo de 2024-11-05 se conectan a https://mcp.meetstream.ai/sse con las mismas opciones de inicio de sesión o clave. El primer evento de la transmisión nombra el endpoint de mensajes por sesión; la clave nunca aparece en él.

Verifica que esté conectado

Pregunta a tu cliente algo como "lista mis bots de meetstream" - si devuelve datos (o una lista vacía limpia) en lugar de un error, estás conectado.


Luego solo pregunta

"Únete a mi standup a las https://meet.google.com/abc-defg-hij,, grábala con transcripción de Deepgram y dame la transcripción cuando termine."

"Lista mis bots de hoy y dame el resumen de IA de la llamada de cliente de las 3pm."

"Envía 'te seguiremos por correo electrónico' a la reunión en la que está el bot, luego muéstrales nuestro logotipo."

"Programa un bot para la reunión de la junta de mañana en mi calendario."


Lista completa de capacidades - 19 herramientas

Ciclo de vida del bot

HerramientaQué hace
create_botEnvía (o programa, vía join_at) un bot a una reunión de Zoom / Google Meet / Microsoft Teams. Solo audio por defecto; record_video activa el video y lo graba en vista de orador a menos que se solicite video_layout: "grid_view", y el video por participante permanece apagado a menos que se solicite. Configurable: proveedor de transcripción + idioma, callback_url para webhooks, grabación de video, transmisiones de audio/video por participante, agente conversacional MIA, uniones con sesión iniciada (google_login_domain / teams_login_domain, opcional sign_in_email / strict_email, para dominios ya registrados en tu cuenta), uniones autenticadas de Zoom (zoom_zak_url / zoom_obf_url), atributos personalizados, ventana de retención, clave de idempotencia (reintentos seguros - una llamada repetida devuelve el bot original, nunca un duplicado). Devuelve bot_id y transcript_id (cuando se establece un proveedor).
list_botsLista todos los bots en la cuenta (paginado).
get_bot_statusEstado actual del ciclo de vida - uno de Joining, InWaitingRoom, InMeeting, Recording, Leaving, Stopped, NotAllowed, Denied, Error, Done.
get_bot_detailMetadatos completos de la sesión: plataforma, tiempos, línea de tiempo de estado, el transcript_id canónico, caption_file (para el proveedor meeting_captions) y la carga útil de la solicitud original.
get_bot_summaryResumen de reunión de IA integrado de MeetStream - no se necesita llamada LLM externa.
remove_botHace que el bot abandone una reunión activa inmediatamente. Los datos grabados se conservan.
delete_bot_dataElimina permanentemente el audio, video y transcripciones de un bot. Requiere confirm: true - solo llama esto cuando el usuario haya pedido explícitamente eliminar datos. Irreversible.

Transcripción

HerramientaQué hace
get_transcriptObtiene una transcripción por bot_id. Resuelve automáticamente el transcript_id (nunca se entrega en webhooks) vía /detail → /transcriptions. Establece wait: true para sondear hasta que esté listo; raw: true para salida de proveedor no procesada. Los segmentos vuelven como { speaker, transcript, start_time, end_time }.
list_transcriptionsLista cada ejecución de transcripción para un bot: proveedor, estado y URLs de descarga prefirmadas (válidas 1h).
transcribe_audio(Re-)transcribe el audio grabado de un bot con un proveedor elegido - útil para reintentar con un proveedor o idioma diferente después de la reunión.

Datos de medios y reuniones

HerramientaQué hace
get_media_urlsURLs prefirmadas para audio (1h), video (10min), audio_streams/video_streams (por participante - necesita separate_audio_streams/separate_video_streams en la creación), o screenshots.
get_participantsTodos los detectados en la reunión: nombre mostrado, nombre completo, estado, IDs de transmisión.
get_chatsMensajes de chat en la reunión capturados durante la llamada.
get_speaker_timelineQuién habló y cuándo, como una línea de tiempo de segmentos de oradores.

Interacción en vivo en la reunión

HerramientaQué hace
send_chat_messagePublica un mensaje de chat en la reunión en vivo a través del bot.
send_imageMuestra una imagen o GIF como el marco de video del bot. img_url debe ser accesible públicamente (sin base64).

Calendario

HerramientaQué hace
list_calendar_eventsPróximos eventos de un Google Calendar conectado. (Conectar un calendario - POST /calendar/create_calendar con credenciales OAuth - es una configuración única que generalmente se hace vía CLI de MeetStream o el panel.)
schedule_calendar_botPrograma (action: "schedule") o elimina ("unschedule") un bot para un evento de calendario específico.

Referencia

HerramientaQué hace
webhook_events_guideDevuelve la referencia de webhook: forma del sobre (event y bot_event), el modelo terminal de dos capas bot.stopped, códigos de estado y advertencias del proveedor de transmisión, verificado contra entregas de producción capturadas. Haz que tu modelo llame esto antes de escribir cualquier código de manejador de webhook.

Qué hace esto diferente de solo leer los documentos

Cada descripción de herramienta y el webhook_events_guide incorporan verdad fundamental verificada en vivo, confirmada contra ejecuciones reales de bots en producción, que los documentos públicos de API actualmente tienen mal:

  • Cada entrega lleva event, y la mayoría también lleva bot_event con el nombre específico. Lee event para enrutar, bot_event para detalle.
  • Los terminales son de dos capas: cada final llega una vez con event: "bot.stopped", y bot_event dice por qué (bot.stopped, bot.kicked, bot.notallowed, bot.denied, bot.failed). Los tiempos de espera en la sala de espera, denegaciones y fallos llevan status_code: 500. Ramifica en bot_event, no en bot_status - una expulsión y una salida limpia ambos reportan Stopped.
  • Los proveedores de transcripción solo de transmisión (deepgram_streaming, assemblyai_streaming, jigsawstack_streaming, meetstream_streaming, meeting_captions) no producen transcripción posterior a la llamada, por lo que transcription.processed nunca se dispara. bot.done todavía lo hace. Una obtención de transcripción posterior a la llamada para ellos devuelve 202 indefinidamente, así que limita tu sondeo.
  • transcript_id nunca está en una carga útil de webhook - get_transcript lo resuelve automáticamente en lugar de hacer que el modelo adivine.
  • Valores predeterminados seguros en todas partes: tiempos de espera de automatic_leave en cada llamada create_bot, y recording_permission_denied_timeout con un mínimo de 60 (la API rechaza valores más bajos con un 400).

Cómo funciona

El servidor no tiene ninguna clave de API propia: cada solicitud (o sesión SSE) lleva la clave del llamante o un token OAuth que la envuelve. Una solicitud sin credenciales recibe un 401 con instrucciones de configuración y un encabezado WWW-Authenticate que apunta a los clientes OAuth al flujo de inicio de sesión. HTTP transmisible no tiene estado, por lo que el servicio escala horizontalmente sin estado compartido; los tokens OAuth están encriptados, son valores autocontenidos, por lo que tampoco hay base de datos de tokens.

MeetStream ejecuta el servidor; está escrito en Go y su fuente no está publicada. Este repositorio contiene los documentos de usuario y la entrada del Registro MCP (server.json). Para reportar un problema, abre un issue aquí.

Solución de problemas

SíntomaSolución
La página de inicio de sesión indica que el enlace ha caducadoLos enlaces de inicio de sesión duran 15 minutos. Inicia la conexión nuevamente desde tu cliente
401 de mcp.meetstream.aiInicia sesión a través de tu cliente (OAuth), o envía Authorization: Bearer <key> / X-MeetStream-Api-Key: el servidor no tiene una clave propia
La llamada a la herramienta devuelve un 401 desde la APILa clave no es válida o ha sido revocada (para conexiones OAuth, la clave con el nombre de la aplicación fue eliminada). Reconéctate o genera una nueva clave en app.meetstream.ai/api-keys
get_transcript devuelve ready: falseLa reunión aún no ha terminado de procesarse, o (para proveedores de streaming) no hay transcripción posterior a la llamada: verifica get_bot_status primero
Las herramientas de calendario devuelven resultados vacíos o erroresAún no hay un calendario conectado: conéctalo primero mediante meetstream calendar connect en la CLI
Tu cliente solo admite el transporte SSE antiguoUsa https://mcp.meetstream.ai/sse

¿Prefieres una terminal? Consulta la CLI de MeetStream. Documentación: docs.meetstream.ai · Especificación de API: openapi.json · Migración desde Recall.ai: @meetstream/migrate

Privacidad y telemetría

El servidor alojado registra recuentos anónimos de qué herramientas se llaman y si cada llamada tuvo éxito. Nunca registra tu clave de API, tokens OAuth, URL de reuniones, transcripciones ni ningún otro contenido. Los registros del servidor contienen solo la ruta de la solicitud, nunca la cadena de consulta.

MIT © MeetStream.ai