
joinly
Make your meetings accessible to AI agents — let them join, talk, and act in Zoom, Meet & Teams calls in real time.
Add to your client
Copy the config for your MCP client and paste it into its config file.
docker pull ghcr.io/joinly-ai/joinly:latestPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"joinly": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:8000/mcp/"
]
}
}
}Claude Desktop connects to remote servers through the `mcp-remote` proxy (installed on first run via npx). Restart Claude Desktop after saving.
Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- Docker (to pull and run ghcr.io/joinly-ai/joinly)
- A .env file with an LLM provider API key (e.g. OPENAI_API_KEY, or Anthropic/Ollama config)
- An MCP client to connect to the server (e.g. the joinly-client package via uvx, or a custom client)
- Optional: NVIDIA Container Toolkit and CUDA >= 12.6 for the GPU image; provider API keys for ElevenLabs/Deepgram if used
About joinly
joinly is a self-hosted MCP server that lets AI agents join and participate in video meetings (Google Meet, Zoom, Microsoft Teams, or any browser-based call) in real time. Run the Docker image as a server exposing an MCP endpoint over streamable HTTP at http://localhost:8000/mcp/, then connect any MCP client (e.g. the joinly-client package) to give your agent meeting superpowers: speaking, chatting, reading transcripts, listing participants, and viewing screen shares. It is bring-your-own-LLM and supports pluggable STT/TTS providers, including fully local options (Whisper + Kokoro).
Tools & capabilities (10)
join_meetingJoin a meeting with a URL, participant name, and optional passcode.
leave_meetingLeave the current meeting.
speak_textSpeak text in the meeting using TTS (requires a 'text' parameter).
send_chat_messageSend a chat message in the meeting (requires a 'message' parameter).
mute_yourselfMute the agent's microphone.
unmute_yourselfUnmute the agent's microphone.
get_chat_historyGet the current meeting chat history in JSON format.
get_participantsGet the current meeting participants in JSON format.
get_transcriptGet the current meeting transcript in JSON format, optionally filtered by minutes.
get_video_snapshotGet an image from the current meeting, e.g. to view a current screen share.
What this server can do
joinly provides tools for these capabilities — tap one to see every MCP server that does the same:
When to use it
- Have an AI agent join a meeting and answer questions live by voice, pulling in info from the web or connected MCP servers.
- Take real-time meeting notes and produce a live transcript with speaker attribution.
- Let an agent perform actions during a call — e.g. create a GitHub issue or edit a Notion page — by combining joinly with other MCP servers.
- Build a fully local, privacy-first meeting assistant using Ollama + Whisper + Kokoro with no third-party API calls.
- Respond to teammates in meeting chat or read the chat history programmatically.
Security notes
Self-hosted and privacy-first. The server itself requires no auth on its local MCP endpoint (default http://localhost:8000/mcp/), so do not expose port 8000 to untrusted networks. Provider API keys (LLM, ElevenLabs, Deepgram, etc.) are supplied via a .env file passed to the container. The agent can speak, send chat, and read transcripts/participants/video in live meetings — treat it as an active meeting participant.
joinly FAQ
How do I connect to the joinly MCP server?
Start the server with `docker run -p 8000:8000 ghcr.io/joinly-ai/joinly:latest`, then connect an MCP client to the streamable-HTTP endpoint at http://localhost:8000/mcp/. The README recommends the joinly-client package: `uvx joinly-client --joinly-url http://localhost:8000/mcp/ --env-file .env <MeetingUrl>`.
Which meeting platforms are supported?
Google Meet, Zoom, and Microsoft Teams, plus any meeting reachable over a browser.
Which LLM, STT, and TTS providers can I use?
Bring-your-own-LLM (OpenAI, Anthropic/Claude, or local Ollama). STT supports Whisper (local, default) or Deepgram. TTS supports Kokoro (local, default), ElevenLabs, or Deepgram.
Can it run fully locally?
Yes. With Ollama for the LLM and the default local Whisper (STT) and Kokoro (TTS) providers, joinly is 100% self-hosted and privacy-first. A CUDA GPU image is available for faster transcription/TTS.
Is there a hosted option?
Yes, joinly.ai offers a cloud version at https://cloud.joinly.ai if you don't want to self-host.
Alternatives to joinly
Compare all alternatives →Connect your personal WhatsApp: search, read and send messages and media locally
Powerful Slack MCP with stdio/SSE/HTTP, DMs, group DMs and no-admin token auth
Full Telegram user-account MCP via MTProto: read chats, manage groups, send messages