jitsi-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jitsi-mcp-serverjoin room 'weekly-sync' and start recording"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Jitsi MCP Server
MCP (Model Context Protocol) server for Jitsi Meet that allows AI agents to:
Join/leave meetings - Connect to any Jitsi Meet room
Read/write chat - Full bidirectional chat support
Record meetings - Capture video/audio streams locally
Get meeting state - Participants, recording status, etc.
Architecture
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ AI Agent │────▶│ MCP Server │────▶│ Jitsi Meet │
│ (Claude, etc) │ │ (this server) │ │ (browser) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Puppeteer │
│ (Chrome) │
└─────────────────┘This server uses Puppeteer to control a headless Chrome browser that joins Jitsi meetings. The MCP interface exposes tools and resources for AI agents to interact with the meeting.
Prerequisites
Node.js 18+
Chrome/Chromium (installed automatically by Puppeteer)
Installation
cd jitsi-mcp-server
npm install
npm run buildConfiguration
Copy .env.example to .env and configure:
cp .env.example .envVariable | Description | Default |
| Jitsi Meet server URL |
|
| Bot display name |
|
| JWT app ID (for private servers) | - |
| JWT secret (for private servers) | - |
| Where to save recordings |
|
| Video format (webm/mp4) |
|
| HTTP server port |
|
| HTTP server host |
|
| Run browser headless |
|
Usage
Stdio Transport (for Claude Desktop, etc.)
npm start
# or
node dist/index.jsAdd to Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"jitsi": {
"command": "node",
"args": ["/path/to/jitsi-mcp-server/dist/index.js"],
"env": {
"JITSI_SERVER_URL": "https://meet.jit.si",
"JITSI_DISPLAY_NAME": "Claude Assistant"
}
}
}
}HTTP/SSE Transport
npm run dev
# or for production
node dist/http-server.jsConnect via SSE at http://localhost:3000/sse
MCP Tools
Tool | Description |
| Join a Jitsi room |
| Leave current meeting |
| Send chat message |
| Get chat messages |
| List participants |
| Get full meeting state |
| Mute/unmute microphone |
| Enable/disable camera |
| Start screen recording |
| Stop and save recording |
| Capture meeting screenshot |
MCP Resources
URI | Description |
| Current meeting state |
| Participant list |
| Chat history |
| Live screenshot |
REST API (HTTP mode only)
When running in HTTP mode, these endpoints are available:
# Join a meeting
POST /api/join
{"roomName": "my-room", "displayName": "Bot"}
# Leave meeting
POST /api/leave
# Send chat message
POST /api/chat
{"message": "Hello!"}
# Get chat history
GET /api/chat
# Get meeting state
GET /api/state
# Get participants
GET /api/participants
# Start recording
POST /api/recording/start
# Stop recording
POST /api/recording/stop
# Get screenshot
GET /api/screenshotExample Agent Usage
// Using the MCP client
const response = await mcpClient.callTool('jitsi_join_meeting', {
roomName: 'daily-standup',
displayName: 'AI Scribe',
startMuted: true,
startWithVideoOff: true,
});
// Send a greeting
await mcpClient.callTool('jitsi_send_chat', {
message: 'Hello! I\'m here to take notes for this meeting.',
});
// Start recording
await mcpClient.callTool('jitsi_start_recording', {});
// ... meeting happens ...
// Get chat history for summarization
const chat = await mcpClient.callTool('jitsi_get_chat_history', {});
// Stop recording
await mcpClient.callTool('jitsi_stop_recording', {});
// Leave
await mcpClient.callTool('jitsi_leave_meeting', {});Private Jitsi Servers
For self-hosted Jitsi with JWT authentication:
Configure your Jitsi server for JWT auth
Set
JITSI_JWT_APP_IDandJITSI_JWT_SECRETin.envThe server will automatically generate JWTs for joining meetings
Important Notes
Audio Recording
Audio recording captures remote participants' audio via WebRTC. For reliable audio capture:
Set
HEADLESS=falsein your.envfileThe browser needs a real audio context to capture WebRTC streams
Jitsi Server Compatibility
meet.jit.si: Works with anonymous users if a logged-in moderator starts the meeting first
Self-hosted: Full anonymous access typically available
Alternative servers: Tested with meet.ffmuc.net and others
Chat
The bot automatically enters a chat nickname when required by the Jitsi interface.
Limitations
Headless Audio: Audio recording may not work reliably in headless mode
Video Recording: Currently audio-only; video frames are not captured
Private Messages: Only public chat is supported
Development
# Run in development mode with hot reload
npm run dev
# Run HTTP server in dev mode
npm run dev:http
# Build
npm run build
# Run tests
npm test
# Lint
npm run lintLicense
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tntclaus/jitsi-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server