Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Jitsi Server

FreeNot checked

MCP server that enables AI agents to join Jitsi Meet rooms, send/receive chat, record meetings, and monitor participants using headless Chrome.

GitHubEmbed

About

MCP server that enables AI agents to join Jitsi Meet rooms, send/receive chat, record meetings, and monitor participants using headless Chrome.

README

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:

  1. Configure your Jitsi server for JWT auth
  2. Set JITSI_JWT_APP_ID and JITSI_JWT_SECRET in .env
  3. 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=false in your .env file
  • 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

from github.com/tntclaus/jitsi-mcp-server

Installing Jitsi Server

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/tntclaus/jitsi-mcp-server

FAQ

Is Jitsi Server MCP free?

Yes, Jitsi Server MCP is free — one-click install via Unyly at no cost.

Does Jitsi Server need an API key?

No, Jitsi Server runs without API keys or environment variables.

Is Jitsi Server hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Jitsi Server in Claude Desktop, Claude Code or Cursor?

Open Jitsi Server on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Jitsi Server with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All communication MCPs