Joinly MCP Server: AI Bots, Live Transcripts
Deploy an MCP server to send AI bots to Zoom, Teams, and Google Meet, capture live transcripts, speak text, and post messages in meeting chat.
Overview
Joinly MCP Server implements the Model Context Protocol (MCP) to deploy AI “bots” that can join video meetings (Zoom, Microsoft Teams, Google Meet), capture live transcripts, synthesize speech, and post messages into meeting chat. It acts as a bridge between meeting platforms, speech/text processing services, and large language models (LLMs), enabling developers to build assistants that observe, summarize, respond, and speak during live meetings.
For developers, Joinly provides a hosted or self-deployable service that handles meeting connection, real‑time transcript streaming, text-to-speech (TTS) output, and chat posting APIs. This centralizes platform-specific complexities (OAuth, SDK differences, reconnection) and exposes a consistent MCP-driven API suitable for hooking models, webhooks, or other automation.
Features
- Join Zoom, Teams, and Google Meet meetings as an automated participant (bot)
- Capture live audio → real-time transcripts (streamed via WebSocket or webhooks)
- Speak text into meetings using configurable TTS voices
- Post messages into meeting chat channels
- Pluggable model integration (OpenAI / local LLMs / custom inference)
- Session lifecycle management (create/join/leave, error handling, reconnect)
- Webhook and socket events for transcripts, speaker changes, and chat activity
- Deployable via Docker or local Node runtime with environment configuration
Installation / Configuration
Prerequisites: Docker (recommended) or Node.js >=14 and access credentials for target meeting platforms and any chosen model provider.
Clone repository:
Environment variables (example .env):
# Model provider
OPENAI_API_KEY=sk-...
# MCP server secret
MCP_SECRET=supersecretvalue
# Zoom (if using Zoom SDK/API)
ZOOM_API_KEY=your_zoom_api_key
ZOOM_API_SECRET=your_zoom_api_secret
# Google Meet (OAuth credentials)
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
# Microsoft Teams (app credentials)
TEAMS_APP_ID=...
TEAMS_APP_SECRET=...
Run with Docker Compose (example):
version: "3.8"
services:
joinly:
image: joinlyai/joinly:latest
env_file: .env
ports:
- "8080:8080"
restart: unless-stopped
Start:
Run locally (Node):
# or for development
Configuration notes:
- Keep platform credentials secure and scoped to only required OAuth scopes (meeting:read/write, chat posting, audio)
- Configure TTS provider (internal or external) via env vars
- Set up webhook endpoint(s) to receive transcripts, speaker events, errors
Available Resources
- GitHub repo: https://github.com/joinly-ai/joinly
- Example clients: included sample scripts for creating sessions and streaming transcripts
- API documentation: (look in /docs or /api in repo) — contains MCP endpoints and event schemas
- WebSocket endpoint: ws://
/ws/sessions/{session_id}/stream for realtime transcript and speaker events - Webhooks: configure POST targets to receive events for transcripts, chat, and bot status
Example API endpoints (typical):
Endpoint Method Purpose /api/v1/sessions POST Create a bot session and instruct it to join a meeting /api/v1/sessions/{id}/speak POST Make bot speak given text /api/v1/sessions/{id}/chat POST Post a message into meeting chat /api/v1/sessions/{id}/transcripts GET / WS Retrieve or stream live transcripts Example: create and join a meeting (curl)
Speak text and post chat:
# speak # post chatUse Cases
- Meeting summarization: stream live transcript to an LLM via MCP, produce rolling summaries or action items and post them in chat at intervals.
- Accessibility & captioning: provide real-time captions for participants with hearing impairments, or translate speech into another language and speak the translation into the meeting.
- Live QA assistant: attach a question-answering bot that listens to discussion and answers factual queries in chat or by speaking short responses.
- Compliance & moderation: detect sensitive language or policy violations in the live transcript and trigger alerts or muted interventions.
- Automated note-taking and distribution: capture key points, assign tasks, and automatically publish summarized meeting minutes to Slack/Email after the session.
Security & operational tips:
- Use least-privilege credentials and rotate keys regularly.
- Rate-limit model calls and handle backpressure for large meetings.
- Test TTS voice levels and join/leave flows in staging before production.
For implementation details, reference the repository README and API docs in the GitHub project for endpoint schemas, event payload examples, and sample client code.