jitsi-mcp-server
MCP server that enables AI agents to join Jitsi Meet rooms, send/receive chat, record meetings, and monitor participants using headless Chrome.
README
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 build
Configuration
Copy .env.example to .env and configure:
cp .env.example .env
| Variable | Description | Default |
|---|---|---|
JITSI_SERVER_URL |
Jitsi Meet server URL | https://meet.jit.si |
JITSI_DISPLAY_NAME |
Bot display name | AI Assistant |
JITSI_JWT_APP_ID |
JWT app ID (for private servers) | - |
JITSI_JWT_SECRET |
JWT secret (for private servers) | - |
RECORDINGS_DIR |
Where to save recordings | ./recordings |
RECORDING_FORMAT |
Video format (webm/mp4) | webm |
PORT |
HTTP server port | 3000 |
HOST |
HTTP server host | 0.0.0.0 |
HEADLESS |
Run browser headless | true |
Usage
Stdio Transport (for Claude Desktop, etc.)
npm start
# or
node dist/index.js
Add 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.js
Connect via SSE at http://localhost:3000/sse
MCP Tools
| Tool | Description |
|---|---|
jitsi_join_meeting |
Join a Jitsi room |
jitsi_leave_meeting |
Leave current meeting |
jitsi_send_chat |
Send chat message |
jitsi_get_chat_history |
Get chat messages |
jitsi_get_participants |
List participants |
jitsi_get_meeting_state |
Get full meeting state |
jitsi_toggle_mute |
Mute/unmute microphone |
jitsi_toggle_video |
Enable/disable camera |
jitsi_start_recording |
Start screen recording |
jitsi_stop_recording |
Stop and save recording |
jitsi_take_screenshot |
Capture meeting screenshot |
MCP Resources
| URI | Description |
|---|---|
jitsi://meeting/state |
Current meeting state |
jitsi://meeting/participants |
Participant list |
jitsi://meeting/chat |
Chat history |
jitsi://meeting/screenshot |
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/screenshot
Example 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.env - The 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.envfile - The 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 lint
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.