Kaltura MCP Server
Um servidor para realizar operações seguras e somente leitura na API do Kaltura.
Documentação
Kaltura MCP Server
Um servidor Model Context Protocol (MCP) que fornece ferramentas seguras e somente leitura para gerenciar operações da API Kaltura. Este servidor permite que assistentes de IA pesquisem, descubram e analisem conteúdo de mídia Kaltura com segurança.
Recursos
- Descoberta de Mídia: Pesquise e navegue por entradas de mídia com filtros avançados
- Análise de Conteúdo: Acesse legendas, transcrições e conteúdo de anexos
- Gerenciamento de Categorias: Navegue e explore categorias de conteúdo
- Analytics: Recupere métricas de visualização e desempenho
- Acesso Seguro: Operações somente leitura com validação abrangente de entrada
- Gerenciamento de Sessão: Tratamento automático de sessão com expiração configurável
Instalação
- Clone este repositório:
git clone https://github.com/zoharbabin/kaltura-mcp.git
cd kaltura-mcp
- Instale as dependências:
pip install -e .
Modos de Uso
Este servidor suporta dois modos de implantação:
🔧 Servidor MCP Local (Modo Stdio)
Melhor para: Uso pessoal, integração direta com Claude Desktop, desenvolvimento
🌐 Servidor MCP Remoto (Modo HTTP/SSE)
Melhor para: Serviços hospedados, múltiplos usuários, implantações de produção
Configuração do Servidor MCP Local (Claude Desktop)
Passo 1: Instalar o Pacote
pip install kaltura-mcp
Passo 2: Configurar o Ambiente
🔒 Método Seguro (Recomendado): Use o script de configuração interativo:
# Navigate to your project directory
cd /path/to/kaltura-mcp
# Run the interactive setup
python setup_env.py
O script irá guiá-lo através de:
- Escolha entre modo stdio (local) ou remoto
- Inserção segura das suas credenciais Kaltura
- Geração de um arquivo
.envcom permissões adequadas (600) - Fornecimento da configuração exata do Claude Desktop
📋 Método Manual: Copie e edite o arquivo de exemplo:
# Copy the example file
cp .env.example .env
# Edit with your credentials
# - For stdio mode: Only fill in KALTURA_* variables
# - For remote mode: Fill in JWT_SECRET_KEY, OAUTH_*, and SERVER_* variables
nano .env
# Set secure permissions
chmod 600 .env
Passo 3: Obtenha Suas Credenciais Kaltura
Você precisará destas credenciais da sua conta Kaltura:
- URL do Serviço: URL do seu servidor Kaltura (geralmente
https://cdnapisec.kaltura.com) - ID do Parceiro: Seu ID de parceiro numérico (encontrado em KMC → Configurações → Configurações de Integração)
- Segredo do Administrador: Sua chave secreta de administrador da API (encontrada em KMC → Configurações → Configurações de Integração)
- ID do Usuário: Seu ID de usuário Kaltura (geralmente seu e-mail ou
admin)
Passo 4: Configurar o Claude Desktop
Abra o arquivo de configuração do Claude Desktop:
macOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
🔒 Configuração Segura (credenciais no arquivo .env):
{
"mcpServers": {
"kaltura": {
"command": "/full/path/to/kaltura-mcp"
}
}
}
Notas Importantes:
- Substitua
/full/path/to/kaltura-mcppelo caminho real para o seu comando kaltura-mcp (encontre-o comwhich kaltura-mcp) - O arquivo
.envé carregado automaticamente do diretório do projeto pelo servidor - O script
setup_env.pydetectará e fornecerá automaticamente o caminho correto do comando
Passo 5: Reinicie o Claude Desktop
Após salvar o arquivo de configuração, reinicie o Claude Desktop completamente para que as alterações tenham efeito.
Passo 6: Teste a Integração
No Claude Desktop, tente perguntar:
- "Pesquise vídeos recentes do Kaltura"
- "Liste minhas categorias Kaltura"
- "Encontre vídeos sobre [tópico] na minha conta Kaltura"
Solução de Problemas na Configuração Local
Problema: Comando kaltura-mcp não encontrado
- Solução: Certifique-se de que você instalou com
pip install kaltura-mcpe que o comando está no seu PATH
Problema: "Erro: Variáveis de ambiente obrigatórias ausentes"
- Solução:
- Verifique se o arquivo
.envexiste no diretório do seu projeto - Verifique as permissões do arquivo:
ls -la .env(deve mostrar-rw-------) - Certifique-se de que todas as credenciais Kaltura necessárias estão definidas no arquivo
.env
- Verifique se o arquivo
Problema: "Credenciais inválidas" ou "Falha na autenticação"
- Solução:
- Verifique suas credenciais em KMC → Configurações → Configurações de Integração
- Verifique se há erros de digitação ou espaços extras no arquivo
.env - Execute
python setup_env.pypara recriar a configuração
Problema: O Claude Desktop não mostra o servidor MCP
- Solução:
- Verifique a sintaxe do arquivo de configuração com um validador JSON
- Verifique se o caminho do comando está correto (use
which kaltura-mcp) - Reinicie o Claude Desktop completamente
- Verifique os logs do Claude Desktop para mensagens de erro
Problema: Erro ".env file not found"
- Solução:
- Execute
python setup_env.pya partir do diretório do seu projeto - Certifique-se de que o arquivo
.envexiste no mesmo diretório do código do servidor - Verifique as permissões do arquivo:
ls -la .env(deve mostrar-rw-------)
- Execute
✅ Benefícios de Segurança:
- ✅ Permissões de arquivo seguras (600 - somente proprietário)
- ✅ Ignorado pelo Git por padrão (não será commitado)
- ✅ Local ao diretório do projeto (fácil de gerenciar)
- ✅ Padrão .env (familiar para desenvolvedores)
- ✅ Sem credenciais em arquivos de configuração (segurança aprimorada)
Configuração do Servidor MCP Remoto
Configuração
Para implantação remota/hospedada, variáveis de ambiente adicionais são necessárias:
cp .env.example .env
# Configure remote server settings
Variáveis de ambiente obrigatórias:
JWT_SECRET_KEY: Chave secreta forte para assinatura de tokens JWT (⚠️ CRÍTICO PARA SEGURANÇA)OAUTH_REDIRECT_URI: URL de callback OAuth (ex.:https://your-domain.com/oauth/callback)SERVER_HOST: Endereço de bind do servidor (padrão:0.0.0.0)SERVER_PORT: Porta do servidor (padrão:8000)
Variáveis de ambiente opcionais:
SERVER_RELOAD: Habilitar auto-reload em desenvolvimento (padrão:false)OAUTH_CLIENT_ID: ID de cliente OAuth personalizadoOAUTH_CLIENT_SECRET: Segredo de cliente OAuth personalizado
Executando o Servidor Remoto
# Using the installed command
kaltura-mcp-remote
# Or using Python module
python -m kaltura_mcp.remote_server
O servidor remoto fornece:
- Transporte HTTP/SSE para o protocolo MCP
- Autenticação baseada em JWT para gerenciamento seguro de credenciais
- Fluxo de autorização baseado na web para configuração amigável
- Suporte multi-tenant para hospedagem como serviço
Ferramentas Disponíveis
-
get_media_entry - Obtenha informações detalhadas sobre uma entrada de mídia específica
- Parâmetros: entry_id (obrigatório)
-
list_categories - Liste e pesquise categorias de conteúdo
- Parâmetros: search_text, limit
-
Ferramentas de Analytics - Suíte abrangente de analytics com funções específicas:
- get_analytics - Dados gerais de analytics para relatórios e análise
- get_analytics_timeseries - Dados de série temporal otimizados para gráficos
- get_video_retention - Análise detalhada de retenção de espectadores ao longo dos vídeos
- get_realtime_metrics - Analytics ao vivo atualizados a cada ~30 segundos
- get_quality_metrics - Qualidade de Experiência (QoE) e desempenho de streaming
- get_geographic_breakdown - Analytics baseados em localização em várias granularidades
- list_analytics_capabilities - Descubra todas as funções de analytics disponíveis
- Veja Guia de Analytics para uso detalhado
-
get_download_url - Obtenha URL de download direto para arquivos de mídia
- Parâmetros: entry_id (obrigatório), flavor_id
-
get_thumbnail_url - Obtenha URL de miniatura/imagem de pré-visualização do vídeo com dimensões personalizadas
- Parâmetros: entry_id (obrigatório), width, height, second
-
search_entries - Pesquise e descubra entradas de mídia com ordenação e filtragem inteligentes
- Parâmetros: query (obrigatório), search_type, match_type, specific_field, boolean_operator, include_highlights, custom_metadata, date_range, max_results, sort_field, sort_order
-
list_caption_assets - Liste legendas e subtítulos disponíveis para uma entrada de mídia
- Parâmetros: entry_id (obrigatório)
-
get_caption_content - Obtenha conteúdo de legenda/subtítulo e URL de download
- Parâmetros: caption_asset_id (obrigatório)
-
list_attachment_assets - Liste ativos de anexo para uma entrada de mídia
- Parâmetros: entry_id (obrigatório)
-
get_attachment_content - Obtenha detalhes do conteúdo do anexo e baixe o conteúdo como base64
- Parâmetros: attachment_asset_id (obrigatório)
Prompts
O servidor fornece prompts inteligentes para guiar os usuários em fluxos de trabalho complexos:
-
analytics_wizard - Guia interativo para criar relatórios abrangentes de analytics
Arguments: - analysis_goal: What to analyze (e.g., "video performance", "viewer engagement", "geographic reach") - time_period: Time range (e.g., "today", "yesterday", "last_week", "last_month") -
content_discovery - Assistente de busca em linguagem natural para encontrar mídia
Arguments: - search_intent: What you're looking for in natural language - include_details: Whether to fetch captions/attachments (yes/no) -
accessibility_audit - Verificador de conformidade de acessibilidade de conteúdo
Arguments: - audit_scope: What to audit ("all", "recent", "category:name", or entry_id) -
retention_analysis - Crie relatório abrangente de análise de retenção
Arguments: - entry_id: Video to analyze (e.g., "1_3atosphg") [required] - time_period: Months of data to analyze (default: "12") - output_format: "interactive" (HTML) or "markdown" (default: "interactive")
Recursos
O servidor expõe dados usados com frequência como recursos em cache:
-
kaltura://analytics/capabilities - Documentação completa de analytics
- Todos os 60+ tipos de relatório com descrições
- Métricas e dimensões disponíveis
- Melhores práticas para diferentes casos de uso
- Cache por 30 minutos
-
kaltura://categories/tree - Hierarquia de categorias com contagens de entradas
- Estrutura completa da árvore de categorias
- Contagens de entradas por categoria
- Relações pai-filho
- Cache por 30 minutos
-
kaltura://media/recent/{count} - Entradas de mídia recentes
- Substitua {count} pelo número de entradas (ex.: kaltura://media/recent/20)
- Máximo de 100 entradas
- Inclui metadados básicos
- Cache por 5 minutos
Servidor MCP Remoto (Avançado)
Fluxo de Autorização do Usuário
- Implantação do Servidor: Implante o servidor remoto no seu ambiente de hospedagem
- Autorização do Usuário: Os usuários visitam
https://your-server.com/oauth/authorize - Inserção de Credenciais: Os usuários inserem suas credenciais Kaltura com segurança via formulário web
- Geração de Token: O servidor gera um token JWT com credenciais criptografadas
- Configuração do Cliente: Os usuários adicionam a URL do servidor e o token ao seu cliente MCP
Configuração Remota Passo a Passo
1. Gere um Segredo JWT Seguro
# Generate a strong secret key
python -c "import secrets; print(secrets.token_urlsafe(32))"
2. Configure o Ambiente
# Set in your .env file or environment
JWT_SECRET_KEY=your-generated-secret-key-here
OAUTH_REDIRECT_URI=https://your-domain.com/oauth/callback
SERVER_HOST=0.0.0.0
SERVER_PORT=8000
3. Implante o Servidor
Opção A: Python Direto
kaltura-mcp-remote
Opção B: Docker
docker-compose up -d
Opção C: Produção com Gunicorn (Opcional)
# Install gunicorn separately if needed for production
pip install gunicorn
gunicorn -w 4 -k uvicorn.workers.UvicornWorker kaltura_mcp.remote_server:app
4. Onboarding do Usuário
Envie os usuários para: https://your-server.com/oauth/authorize?response_type=code&client_id=kaltura-mcp&redirect_uri=https://your-server.com/oauth/callback&state=user123
5. Configuração do Cliente
Para Claude Desktop (Modo Remoto):
A maneira mais fácil de usar o servidor remoto com Claude Desktop é através do cliente proxy:
{
"mcpServers": {
"kaltura-remote": {
"command": "kaltura-mcp-proxy",
"env": {
"KALTURA_REMOTE_SERVER_URL": "https://your-server.com/mcp/messages",
"KALTURA_REMOTE_ACCESS_TOKEN": "your-jwt-token-from-authorization-flow"
}
}
}
}
O cliente proxy (kaltura-mcp-proxy) atua como um servidor MCP stdio local que encaminha solicitações para o seu servidor remoto. Isso fornece a melhor compatibilidade com Claude Desktop.
Para Clientes MCP Personalizados:
// HTTP transport with authentication
const transport = new HTTPTransport({
baseUrl: "https://your-server.com/mcp/messages",
headers: {
"Authorization": "Bearer user-jwt-token-here"
}
});
Documentação de Analytics
O servidor MCP fornece uma suíte abrangente de analytics com funções específicas otimizadas para diferentes casos de uso:
Funções de Analytics Específicas:
- get_analytics: Dados abrangentes de relatórios em formato de tabela para análise detalhada
- get_analytics_timeseries: Dados de série temporal otimizados para gráficos e visualizações
- get_video_retention: Curvas detalhadas de retenção de espectadores mostrando exatamente onde os espectadores desistem
- get_realtime_metrics: Analytics ao vivo atualizados a cada ~30 segundos para monitoramento
- get_quality_metrics: Métricas de Qualidade de Experiência (QoE) para desempenho de streaming
- get_geographic_breakdown: Analytics baseados em localização em nível de país, região ou cidade
Capacidades de Analytics:
- 60+ tipos de relatório cobrindo conteúdo, usuários, geografia, plataformas e mais
- Acesso a dados brutos para análise e visualização personalizadas
- Insights inteligentes incluindo pontos de desistência e padrões de engajamento
- Suporte para filtragem por intervalos de datas, categorias, usuários e dimensões
Para documentação abrangente, veja:
- Guia de Analytics - Referência completa para todas as funções de analytics
- Exemplos de Analytics - Exemplos de código e visualizações
Considerações de Segurança
Implantação em Produção
- Use HTTPS: Sempre implante com certificados TLS/SSL
- Segredo JWT Seguro: Use uma chave secreta criptograficamente forte (32+ bytes)
- Segurança do Ambiente: Nunca commite segredos no controle de versão
- Segurança de Rede: Use firewalls e acesso VPN quando apropriado
- Atualizações Regulares: Mantenha as dependências atualizadas para correções de segurança
Segurança do Token JWT
- Expiração do Token: Os tokens expiram após 24 horas por padrão
- Criptografia de Credenciais: As credenciais Kaltura são criptografadas dentro do payload JWT
- Limitação de Escopo: Os tokens são limitados a operações Kaltura somente leitura
- Revogação: Reinicie o servidor para invalidar todos os tokens existentes
Infraestrutura
# Example nginx configuration for production
server {
listen 443 ssl;
server_name your-kaltura-mcp.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Implantação Docker
docker-compose.yml para produção:
version: '3.8'
services:
kaltura-mcp:
build: .
ports:
- "8000:8000"
environment:
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
- OAUTH_REDIRECT_URI=https://your-domain.com/oauth/callback
- SERVER_HOST=0.0.0.0
- SERVER_PORT=8000
restart: unless-stopped
volumes:
- ./logs:/app/logs
labels:
- "traefik.enable=true"
- "traefik.http.routers.kaltura-mcp.rule=Host(\`your-domain.com\`)"
- "traefik.http.routers.kaltura-mcp.tls=true"
Monitoramento e Registros
O servidor remoto fornece registro integrado e pode ser monitorado via:
- Verificação de Saúde:
GET /retorna o status do servidor - Métricas: Acesse os logs via volumes Docker ou logs do servidor
- Rastreamento de Erros: Configure serviços externos de rastreamento de erros
Notas Importantes de Segurança
Segurança no Modo Local (Recomendado)
- ✅ Configuração Direta - Credenciais configuradas diretamente no Claude Desktop
- ✅ Conformidade com Padrões MCP - O cliente passa credenciais ao servidor via variáveis de ambiente
- ✅ Isolamento de Processo - O servidor MCP roda em processo isolado com escopo limitado
- ✅ Sem exposição de rede - Comunicação direta com a API da Kaltura
- ✅ Armazenamento local de credenciais - As credenciais nunca saem da sua máquina
- ✅ Transmissão segura - Credenciais transmitidas com segurança ao processo do servidor MCP
Segurança no Modo Remoto
- ✅ Criptografia de credenciais - Credenciais da Kaltura criptografadas em tokens JWT
- ✅ Expiração de tokens - Expiração automática de tokens em 24 horas
- ✅ Criptografia TLS - HTTPS obrigatório para produção
- ⚠️ Confiança no servidor - Você deve confiar no operador do servidor remoto
- ⚠️ Transmissão de credenciais - Credenciais enviadas ao servidor remoto (criptografadas)
Checklist de Produção
- Use HTTPS com certificados válidos
- Gere uma chave secreta JWT forte (32+ bytes)
- Configure variáveis de ambiente seguras
- Configure registro e monitoramento adequados
- Implemente limitação de taxa (nginx/cloudflare)
- Atualizações regulares de segurança
- Plano de backup e recuperação de desastres
Arquiteturas de Implantação
Uso Pessoal (Recomendado)
Claude Desktop ←→ Local MCP Server ←→ Kaltura API
Pequena Equipe
Claude Desktop ←→ Proxy Client ←→ Remote MCP Server ←→ Kaltura API
Empresarial
Multiple Clients ←→ Load Balancer ←→ Multiple MCP Servers ←→ Kaltura API
↓
Redis/Database
Documentação
- Guia de Analytics - Guia abrangente dos recursos de analytics
- Prompts e Recursos - Documentação detalhada de prompts e recursos do MCP
- Documentação da API - Documentação oficial da API da Kaltura
Desenvolvimento
Executando Testes
pytest
Formatação de Código
black src/
ruff check src/
Licença
MIT