
How to add joinly to Claude Desktop
Make your meetings accessible to AI agents — let them join, talk, and act in Zoom, Meet & Teams calls in real time. Paste the config into ~/Library/Application Support/Claude/claude_desktop_config.json and restart Claude Desktop.
Last updated June 14, 2026 · 527★ · http · no auth
Claude Desktop config for joinly
docker pull ghcr.io/joinly-ai/joinly:latest{
"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.
Setup steps
- 1Open Claude Desktop → Settings → Developer → Edit Config (this opens ~/Library/Application Support/Claude/claude_desktop_config.json).
- 2Paste the joinly config below under the top-level "mcpServers" key.
- 3Fill in any placeholder secrets (API keys, paths) in the snippet.
- 4Save the file, then fully quit and reopen Claude Desktop.
- 5Open a chat and confirm joinly's tools appear under the 🔌 tools menu.
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
What joinly can do in Claude Desktop
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.
Security
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 + Claude Desktop FAQ
Where is the Claude Desktop config file?
Claude Desktop reads MCP servers from ~/Library/Application Support/Claude/claude_desktop_config.json. Paste the joinly config there under the "mcpServers" key and restart the client.
Is joinly safe to use with Claude Desktop?
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.
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.