Skip to main content
Glama

LiveKit MCP Server

Python uv MCP Code style: ruff Tests

Ein Hochleistungs-Server für das Model Context Protocol (MCP 2.0), der KI-Agenten mit der LiveKit Voice- und Telefonie-Engine von MantraCare verbindet.

ArchitekturSchnellstartKonfigurationMCP-Clients verbindenAuthentifizierungVerfügbare ToolsEntwicklung


📖 Übersicht

Der LiveKit MCP Server ermöglicht es LLMs und KI-Codierungsassistenten (wie Antigravity, Claude, Cursor und benutzerdefinierten Agenten), Sprachtelefonie-Pipelines, die von LiveKit (~/lkt) betrieben und über Mantra Auth (~/mantra-auth) authentifiziert werden, sicher zu steuern, zu überwachen und auszulösen.

Hauptfunktionen

  • 🚀 MCP-2.0-Konformität: Basierend auf dem offiziellen Python-mcp-SDK mit Server-Sent Events (SSE) und Streamable-HTTP-Transports.

  • 🔐 OAuth 2.1 & gemeinsames JWT: Native HS256-JWT-Validierung passend zu mantra-auth, mit Unterstützung für sowohl Authorization: Bearer-Header als auch ?token=-Abfrageparameter.

  • Blitzschneller Async-Kern: Unterstützt durch Starlette, Uvicorn und uv-Paketverwaltung.

  • 🧩 Modulare Tool-Architektur: Domänengetrennte Tools für Telefonie, Anrufanalysen, Wissensdatenbanksuche und SIP-Trunking.

  • 🧠 Agentisches Gedächtnis: Vollständige Obsidian-Wissensdatenbank (obsidian/) und AGENTS.md-Regeln zur Erhaltung des Kontexts für KI-Pair-Programming.


Related MCP server: Agent Identity MCP Server

🏛️ Systemarchitektur

┌─────────────────────────────────────────────────────────────┐
│ AI Client (Cursor / Claude / Antigravity / Web Agent)       │
└──────────────────────────────┬──────────────────────────────┘
                               │ 1. Bearer Token / ?token= (OAuth 2.1)
                               ▼
┌─────────────────────────────────────────────────────────────┐
│ [3. mantra-auth (:3000)]                                    │
│ Next.js + Prisma OAuth 2.1 Authorization Server             │
│ - Issues HS256 JWTs and verifies via /api/oauth/introspect  │
└──────────────────────────────┬──────────────────────────────┘
                               │ Shared JWT Secret Verification
                               ▼
┌─────────────────────────────────────────────────────────────┐
│ [2. livekit-mcp (:8000)] (This Server)                      │
│ - Starlette ASGI + MCP 2.0 SSE Transport                    │
│ - Pure ASGI Auth Middleware (HS256 JWT validation)          │
│ - Public Endpoints: /health, /                              │
│ - Protected Endpoints: /sse, /messages                      │
│ - Registered Tools: greet_user, [Telephony/KB/SIP coming]   │
└──────────────────────────────┬──────────────────────────────┘
                               │ 2. Async HTTP (REST)
                               ▼
┌─────────────────────────────────────────────────────────────┐
│ [1. lkt (:8081)]                                            │
│ MantraCare LiveKit Voice Agent & Telephony Engine           │
│ - SIP Trunks (Plivo, Zadarma, VoiceLink, Twilio)            │
│ - LiveKit Cloud WebRTC Rooms & STT→LLM→TTS Voice Pipeline   │
│ - PostgreSQL (call_logs, kb_pages) & Redis (queues, locks)  │
└─────────────────────────────────────────────────────────────┘

📁 Repository-Struktur

livekit-mcp/
├── .env.example                # Sample environment variables
├── .gitignore                  # Git ignore definitions
├── .python-version             # Python version pin (3.11)
├── AGENTS.md                   # Agent Memory instructions
├── dev.sh                      # Development startup script
├── pyproject.toml              # UV package specification & build settings
├── uv.lock                     # Deterministic lockfile
├── README.md                   # Project documentation
│
├── obsidian/                   # Permanent Agentic Knowledge Base
│   ├── Home.md                 # Project navigation hub
│   ├── Architecture/           # System design, data flow, security & APIs
│   ├── Context/                # Stack, project summary & repository map
│   ├── Development/            # Sprint tracking, TODO & Changelog
│   ├── Features/               # Feature specifications (tools, auth)
│   └── Knowledge/              # Coding standards & architectural conventions
│
├── src/
│   └── livekit_mcp/
│       ├── __init__.py
│       ├── config.py           # Pydantic Settings & environment validation
│       ├── server.py           # MCPServer & Starlette app factory
│       ├── main.py             # CLI runner with Uvicorn
│       ├── auth/
│       │   ├── __init__.py
│       │   ├── jwt.py          # HS256 JWT decoding & claims validation
│       │   └── middleware.py   # Pure ASGI auth middleware (headers & ?token=)
│       ├── clients/
│       │   ├── __init__.py
│       │   ├── lkt_client.py   # Async HTTP client for lkt FastAPI (:8081)
│       │   └── auth_client.py  # Async HTTP client for mantra-auth (:3000)
│       └── tools/
│           ├── __init__.py
│           └── greeting.py     # Initial `greet_user` verification tool
│
└── tests/
    ├── __init__.py
    ├── conftest.py             # Fixtures for tokens, settings & test client
    ├── test_config.py          # Configuration unit tests
    ├── test_auth.py            # JWT verification & claims unit tests
    ├── test_greeting.py        # Tool registration & execution tests
    └── test_server.py          # Endpoints, SSE & Auth integration tests

🚀 Schnellstart

1. Voraussetzungen

  • Python: 3.11 oder höher

  • uv: Schneller Python-Paketmanager (uv installieren)

    curl -LsSf https://astral.sh/uv/install.sh | sh

2. Installation & Einrichtung

  1. Repository klonen und in das Verzeichnis wechseln:

    cd ~/livekit-mcp
  2. Umgebungskonfiguration erstellen:

    cp .env.example .env
  3. Abhängigkeiten mit uv installieren:

    uv sync

3. Server ausführen

Entwicklungsserver mit automatischem Neuladen starten:

./dev.sh

Oder direkt mit uv ausführen:

uv run python -m livekit_mcp.main

Der Server ist erreichbar unter http://localhost:8000.


⚙️ Konfiguration

Alle Einstellungen werden in src/livekit_mcp/config.py mit pydantic-settings verwaltet und aus .env geladen:

Variable

Typ

Standard

Beschreibung

HOST

string

0.0.0.0

Server-Bindeadresse

PORT

integer

8000

Lauschport des Servers

ENVIRONMENT

string

development

development, test oder production

LOG_LEVEL

string

INFO

Protokollierungsstufe (DEBUG, INFO, WARNING, ERROR)

AUTH_ENABLED

boolean

true

Erzwingt die JWT-Authentifizierung an geschützten Endpunkten

JWT_SECRET

string

your-super-secret-...

Gemeinsamer geheimer Schlüssel für die HS256-JWT-Signaturprüfung

JWT_ALGORITHM

string

HS256

JWT-Signaturalgorithmus (entspricht mantra-auth)

AUTH_SERVER_URL

string

http://localhost:3000

Basis-URL des Mantra-Auth-Servers

JWT_ISSUER

string

http://localhost:3000

Erwarteter JWT-Ausstelleranspruch (iss)

JWT_AUDIENCE

string

(leer)

Optionaler erwarteter Zielgruppenanspruch (aud)

LKT_API_BASE_URL

string

http://localhost:8081

Basis-URL der LKT-Voice-Agent-API

LKT_API_TIMEOUT

float

15.0

HTTP-Request-Timeout in Sekunden für LKT-Aufrufe

LIVEKIT_URL

string

(leer)

Direkte LiveKit-Cloud-WebSocket-URL (optional)

LIVEKIT_API_KEY

string

(leer)

Direkter LiveKit-Cloud-API-Schlüssel (optional)

LIVEKIT_API_SECRET

string

(leer)

Direktes LiveKit-Cloud-API-Geheimnis (optional)


📡 Endpunkte

Endpunkt

Methode

Authentifizierung

Beschreibung

/health

GET

❌ Nein

Öffentlicher Gesundheits- und Bereitschaftscheck mit Servicestatus

/

GET

❌ Nein

Servicestatus und Endpunkt-Metadaten

/sse

GET

✅ Ja

Öffnet einen dauerhaften Server-Sent-Events(SSE)-Stream für MCP-Clients

/messages

POST

✅ Ja

JSON-RPC-2.0-Endpunkt für MCP-Anfragen (Tool-Ausführung, Auflistungen)

Beispiel für den Gesundheitscheck

curl http://localhost:8000/health
{
  "status": "healthy",
  "service": "livekit-mcp",
  "version": "0.1.0",
  "auth_enabled": true,
  "environment": "development",
  "lkt_api_configured": true,
  "timestamp": "2026-08-20T12:30:00.000000+00:00"
}

🔐 Authentifizierung

Der Server implementiert OAuth 2.1 / HS256 Shared JWT Authentication, kompatibel mit mantra-auth.

Anmeldedaten bereitstellen

  1. Authorization-Header (Standard):

    GET /sse HTTP/1.1
    Host: localhost:8000
    Authorization: Bearer <your-jwt-access-token>
  2. Abfrageparameter (für SSE-/EventSource-Clients):

    GET /sse?token=<your-jwt-access-token> HTTP/1.1
    Host: localhost:8000

Erwartete JWT-Ansprüche

{
  "sub": "user-123",
  "aud": "client-app",
  "iss": "http://localhost:3000",
  "exp": 1755694800,
  "iat": 1755691200,
  "scope": "openid profile telephony:call",
  "token_type": "access_token"
}

Entwicklungstipp: Setzen Sie AUTH_ENABLED=false in der .env-Datei, um die Token-Überprüfung während lokaler Tests zu deaktivieren.


🛠️ Verfügbare Tools

1. greet_user

Ein Verifizierungstool, das die MCP-Konnektivität, Parameteranalyse und den Serverstatus validiert.

  • Parameter:

    • name (Zeichenkette, erforderlich): Name des Benutzers oder Agenten, der das Tool aufruft.

    • message (Zeichenkette, optional): Benutzerdefinierte Begrüßungsnachricht.

  • Rückgabewert:

    👋 Hello, Alice!
    
    Welcome to MantraCare LiveKit MCP!
    
    --- System Status ---
    • Service: LiveKit MCP Server
    • Status: Operational & Ready
    • Timestamp: 2026-08-20T12:30:00.000000+00:00
    • Protocol: MCP 2.0 (SSE / HTTP)

🔌 MCP-Clients verbinden

1. Antigravity / Gemini CLI (~/.gemini/config/mcp_config.json)

{
  "mcpServers": {
    "livekit": {
      "serverUrl": "http://localhost:8000/sse"
    }
  }
}

2. Cursor IDE (.cursor/mcp.json)

{
  "mcpServers": {
    "livekit": {
      "url": "http://localhost:8000/sse",
      "headers": {
        "Authorization": "Bearer <YOUR_JWT_TOKEN>"
      }
    }
  }
}

3. Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "livekit": {
      "command": "uv",
      "args": [
        "--directory",
        "/home/fardeen/livekit-mcp",
        "run",
        "python",
        "-m",
        "livekit_mcp.main"
      ],
      "env": {
        "AUTH_ENABLED": "false"
      }
    }
  }
}

🧪 Entwicklung & Tests

Tests ausführen

Das Projekt enthält eine umfassende Testsuite, die Konfiguration, JWT-Überprüfung, Middleware und Tools abdeckt:

uv run pytest -v

Code-Formatierung & Linting

Saubere Codierungsstandards mit ruff durchsetzen:

# Check code
uv run ruff check .

# Auto-fix issues & format
uv run ruff check --fix .
uv run ruff format .

Neue Tools hinzufügen

So fügen Sie ein neues Tool zu livekit-mcp hinzu:

  1. Erstellen Sie ein Modul in src/livekit_mcp/tools/<domain>.py.

  2. Definieren Sie eine Registrierungsfunktion:

    from mcp.server.mcpserver import MCPServer
    
    def register_telephony_tools(server: MCPServer) -> None:
        @server.tool(name="trigger_call", description="Trigger an outbound call")
        async def trigger_call(phone_number: str, prompt: str) -> str:
            # Call LktClient here
            return f"Call initiated to {phone_number}"
  3. Registrieren Sie die Funktion in src/livekit_mcp/server.py innerhalb von create_mcp_server().

  4. Fügen Sie Komponententests in tests/test_<domain>.py hinzu.


📚 Agentisches Gedächtnis

Dieses Repository folgt dem Agentic-Memory-Muster. Bevor Sie architektonische Änderungen vornehmen, lesen Sie den Obsidian-Wissensspeicher unter obsidian/:

  • obsidian/Home.md — Projektnavigations-Hub

  • obsidian/Architecture/Overview.md — Systemdesign und -topologie

  • obsidian/Development/Current Sprint.md — Aktueller Entwicklungsstatus

  • obsidian/Development/TODO.md — Kommende Roadmap

  • obsidian/Knowledge/Coding Standards.md — Codekonventionen


📄 Lizenz

Proprietär © MantraCare. Alle Rechte vorbehalten.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.

  • MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.

  • MCP Hub: AI service discovery, per-user OAuth, and multi-service workflow orchestration

View all MCP Connectors

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/FardeenSK004/livekit-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server