Skip to main content
Glama

LiveKit MCP Server

Python uv MCP Code style: ruff Tests

Высокопроизводительный сервер Model Context Protocol (MCP 2.0), связывающий ИИ-агентов с движком MantraCare LiveKit Voice & Telephony Engine.

АрхитектураБыстрый стартКонфигурацияПодключение клиентовАутентификацияИнструментыРазработка


📖 Обзор

LiveKit MCP Server позволяет LLM и ИИ-ассистентам по коду (таким как Antigravity, Claude, Cursor и пользовательские агенты) безопасно управлять, проверять и запускать конвейеры голосовой телефонии, работающие на базе LiveKit (~/lkt) и аутентифицированные через Mantra Auth (~/mantra-auth).

Ключевые возможности

  • 🚀 Соответствие MCP 2.0: построен на официальном Python mcp SDK с использованием Server-Sent Events (SSE) и Streamable HTTP транспорта.

  • 🔐 OAuth 2.1 и общая безопасность JWT: нативная проверка HS256 JWT, совместимая с mantra-auth, с поддержкой заголовка Authorization: Bearer и параметра запроса ?token=.

  • Молниеносное асинхронное ядро: на базе Starlette, Uvicorn и менеджера пакетов uv.

  • 🧩 Модульная архитектура инструментов: раздельные по доменам инструменты для телефонии, аналитики звонков, поиска по базе знаний и SIP-транкинга.

  • 🧠 Агентная память: полная база знаний Obsidian (obsidian/) и правила AGENTS.md для сохранения контекста парного программирования с ИИ.


Related MCP server: Agent Identity MCP Server

🏛️ Системная архитектура

┌─────────────────────────────────────────────────────────────┐
│ 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)  │
└─────────────────────────────────────────────────────────────┘

📁 Структура репозитория

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

🚀 Быстрый старт

1. Предварительные требования

  • Python: 3.11 и выше

  • uv: быстрый менеджер пакетов Python (Установить uv)

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

2. Установка и настройка

  1. Склонируйте репозиторий и перейдите в каталог:

    cd ~/livekit-mcp
  2. Создайте файл конфигурации окружения:

    cp .env.example .env
  3. Установите зависимости с помощью uv:

    uv sync

3. Запуск сервера

Запустите сервер разработки с автоматической перезагрузкой:

./dev.sh

Или запустите напрямую с помощью uv:

uv run python -m livekit_mcp.main

Сервер будет доступен по адресу http://localhost:8000.


⚙️ Конфигурация

Все параметры задаются в src/livekit_mcp/config.py через pydantic-settings и загружаются из .env:

Переменная

Тип

По умолчанию

Описание

HOST

string

0.0.0.0

Адрес привязки сервера

PORT

integer

8000

Порт прослушивания сервера

ENVIRONMENT

string

development

development, test или production

LOG_LEVEL

string

INFO

Уровень журналирования (DEBUG, INFO, WARNING, ERROR)

AUTH_ENABLED

boolean

true

Требовать JWT-аутентификацию для защищённых конечных точек

JWT_SECRET

string

your-super-secret-...

Общий секретный ключ для проверки подписи HS256 JWT

JWT_ALGORITHM

string

HS256

Алгоритм подписи JWT (совпадает с mantra-auth)

AUTH_SERVER_URL

string

http://localhost:3000

Базовый URL сервера Mantra Auth

JWT_ISSUER

string

http://localhost:3000

Ожидаемый эмитент JWT (iss)

JWT_AUDIENCE

string

(пусто)

Необязательная ожидаемая аудитория (aud)

LKT_API_BASE_URL

string

http://localhost:8081

Базовый URL API голосового агента LKT

LKT_API_TIMEOUT

float

15.0

Тайм-аут HTTP-запросов в секундах для вызовов LKT

LIVEKIT_URL

string

(пусто)

Прямой WebSocket URL LiveKit Cloud (необязательно)

LIVEKIT_API_KEY

string

(пусто)

Прямой API-ключ LiveKit Cloud (необязательно)

LIVEKIT_API_SECRET

string

(пусто)

Прямой секрет API LiveKit Cloud (необязательно)


📡 Конечные точки

Конечная точка

Метод

Требуется аутентификация

Описание

/health

GET

❌ Нет

Публичная проверка работоспособности и готовности сервиса

/

GET

❌ Нет

Статус сервиса и метаданные конечных точек

/sse

GET

✅ Да

Открывает постоянный поток Server-Sent Events (SSE) для MCP-клиентов

/messages

POST

✅ Да

Конечная точка JSON-RPC 2.0 для MCP-запросов (выполнение инструментов, перечисление)

Пример проверки работоспособности

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"
}

🔐 Аутентификация

Сервер реализует OAuth 2.1 / HS256 JWT-аутентификацию с общим секретом, совместимую с mantra-auth.

Предоставление учётных данных

  1. Заголовок Authorization (стандартный):

    GET /sse HTTP/1.1
    Host: localhost:8000
    Authorization: Bearer <your-jwt-access-token>
  2. Параметр запроса (для SSE / EventSource-клиентов):

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

Ожидаемые утверждения JWT

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

Совет разработчику: установите AUTH_ENABLED=false в .env, чтобы отключить проверку токенов при локальном тестировании.


🛠️ Доступные инструменты

1. greet_user

Проверочный инструмент, который проверяет связность MCP, разбор параметров и статус сервера.

  • Параметры:

    • name (string, required): имя пользователя или агента, вызывающего инструмент.

    • message (string, optional): пользовательское приветственное сообщение.

  • Возвращает:

    👋 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-клиентов

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"
      }
    }
  }
}

🧪 Разработка и тестирование

Запуск тестов

Проект содержит полный набор тестов, покрывающий конфигурацию, проверку JWT, middleware и инструменты:

uv run pytest -v

Форматирование кода и линтер

Обеспечьте чистые стандарты кода с помощью ruff:

# Check code
uv run ruff check .

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

Добавление новых инструментов

Чтобы добавить новый инструмент в livekit-mcp:

  1. Создайте модуль в src/livekit_mcp/tools/<domain>.py.

  2. Определите функцию регистрации:

    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. Зарегистрируйте функцию в src/livekit_mcp/server.py внутри create_mcp_server().

  4. Добавьте модульные тесты в tests/test_<domain>.py.


📚 Агентная память

Этот репозиторий следует паттерну агентной памяти. Перед внесением архитектурных изменений ознакомьтесь с базой знаний Obsidian в obsidian/:

  • obsidian/Home.md — навигационный центр проекта

  • obsidian/Architecture/Overview.md — архитектура системы и топология

  • obsidian/Development/Current Sprint.md — статус текущего спринта

  • obsidian/Development/TODO.md — ближайший план работ

  • obsidian/Knowledge/Coding Standards.md — конвенции по стилю кода


📄 Лицензия

Проприетарное программное обеспечение © MantraCare. Все права защищены.

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