关于 Kaltura Model Context Protocol (MCP) Server
Kaltura MCP Server 为 AI 助手提供只读的 Kaltura API 工具,用于搜索、浏览和分析媒体内容。它支持本地 stdio 与远程 HTTP/SSE 部署,并提供分析、字幕和附件访问能力。
主要功能
- 01搜索和筛选媒体条目
- 02访问字幕与附件内容
- 03浏览内容分类
- 04获取观看分析和性能指标
- 05只读操作与输入校验
- 06支持本地及远程部署
适用场景
- 01查找特定主题的视频
- 02检查视频观看表现与留存情况
- 03检索媒体字幕或附件
- 04浏览 Kaltura 内容分类
MCP 相关
向 MCP 客户端暴露媒体搜索、分类、分析、字幕和附件等工具,以及提示词和缓存资源。支持 stdio 与 HTTP/SSE 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Kaltura MCP 服务
一个 Model Context Protocol(MCP)服务,提供安全的只读工具来管理 Kaltura API 操作。此服务可让 AI 助手安全地搜索、发现和分析 Kaltura 媒体内容。
功能
- 媒体发现:通过高级筛选搜索和浏览媒体条目
- 内容分析:访问字幕、转录文本和附件内容
- 类别管理:浏览和探索内容类别
- 分析:获取观看分析数据和性能指标
- 安全访问:只读操作,并进行全面的输入验证
- 会话管理:自动管理会话,并支持配置过期时间
安装
- 克隆此仓库:
git clone https://github.com/zoharbabin/kaltura-mcp.git
cd kaltura-mcp
- 安装依赖项:
pip install -e .
使用模式
此服务支持两种部署模式:
🔧 本地 MCP 服务(Stdio 模式)
**最适合:**个人使用、直接集成 Claude Desktop、开发
🌐 远程 MCP 服务(HTTP/SSE 模式)
**最适合:**托管服务、多用户、生产部署
本地 MCP 服务设置(Claude Desktop)
步骤 1:安装软件包
pip install kaltura-mcp
步骤 2:设置环境配置
🔒 安全方式(推荐):使用交互式设置脚本:
# Navigate to your project directory
cd /path/to/kaltura-mcp
# Run the interactive setup
python setup_env.py
该脚本将引导你完成以下操作:
- 选择 stdio(本地)模式或远程模式
- 安全地输入 Kaltura 凭据
- 生成权限设置适当(600)的
.env文件 - 提供准确的 Claude Desktop 配置
📋 手动方式:复制并编辑示例文件:
# 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
步骤 3:获取 Kaltura 凭据
你需要从 Kaltura 账户获取以下凭据:
- 服务 URL:你的 Kaltura 服务 URL(通常为
https://cdnapisec.kaltura.com) - Partner ID:你的数字 Partner ID(可在 KMC → Settings → Integration Settings 中找到)
- Admin Secret:你的 API 管理员密钥(可在 KMC → Settings → Integration Settings 中找到)
- User ID:你的 Kaltura 用户 ID(通常是你的电子邮件地址或
admin)
步骤 4:配置 Claude Desktop
打开 Claude Desktop 配置文件:
macOS:~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
🔒 安全配置(凭据存储在 .env 文件中):
{
"mcpServers": {
"kaltura": {
"command": "/full/path/to/kaltura-mcp"
}
}
}
重要说明:
- 将
/full/path/to/kaltura-mcp替换为kaltura-mcp命令的实际路径(使用which kaltura-mcp查找) - 服务会自动从项目目录加载
.env文件 setup_env.py脚本会自动检测并提供正确的命令路径
步骤 5:重启 Claude Desktop
保存配置文件后,完全重启 Claude Desktop,使更改生效。
步骤 6:测试集成
在 Claude Desktop 中,尝试提问:
- “搜索最近的 Kaltura 视频”
- “列出我的 Kaltura 类别”
- “在我的 Kaltura 账户中查找有关 [topic] 的视频”
本地设置故障排查
问题:找不到 kaltura-mcp 命令
- 解决方案:确保已使用
pip install kaltura-mcp安装,并且该命令位于 PATH 中
问题:“Error: Missing required environment variables”
- 解决方案:
- 检查项目目录中是否存在
.env文件 - 验证文件权限:
ls -la .env(应显示-rw-------) - 确保
.env文件中已设置所有必需的 Kaltura 凭据
- 检查项目目录中是否存在
问题:“Invalid credentials” 或 “Authentication failed”
- 解决方案:
- 在 Kaltura KMC → Settings → Integration Settings 中验证凭据
- 检查
.env文件中是否存在拼写错误或多余空格 - 运行
python setup_env.py重新创建配置
问题:Claude Desktop 中未显示 MCP 服务
- 解决方案:
- 使用 JSON 验证器检查配置文件语法
- 验证命令路径是否正确(使用
which kaltura-mcp) - 完全重启 Claude Desktop
- 检查 Claude Desktop 日志中的错误消息
问题:出现“.env file not found”错误
- 解决方案:
- 在项目目录中运行
python setup_env.py - 确保
.env文件与服务代码位于同一目录 - 检查文件权限:
ls -la .env(应显示-rw-------)
- 在项目目录中运行
✅ 安全优势:
- ✅ 安全的文件权限(600,仅所有者可访问)
- ✅ 默认被 Git 忽略(不会被提交)
- ✅ 位于项目目录中(便于管理)
- ✅ 标准的 .env 模式(开发者熟悉)
- ✅ 配置文件中不包含凭据(提升安全性)
远程 MCP 服务设置
配置
对于远程/托管部署,需要设置额外的环境变量:
cp .env.example .env
# Configure remote server settings
必需的环境变量:
JWT_SECRET_KEY:用于 JWT 令牌签名的强密钥(⚠️ 安全至关重要)OAUTH_REDIRECT_URI:OAuth 回调 URL(例如,https://your-domain.com/oauth/callback)SERVER_HOST:服务绑定地址(默认值:0.0.0.0)SERVER_PORT:服务端口(默认值:8000)
可选的环境变量:
SERVER_RELOAD:在开发环境中启用自动重新加载(默认值:false)OAUTH_CLIENT_ID:自定义 OAuth 客户端 IDOAUTH_CLIENT_SECRET:自定义 OAuth 客户端密钥
运行远程服务
# Using the installed command
kaltura-mcp-remote
# Or using Python module
python -m kaltura_mcp.remote_server
远程服务提供:
- MCP 协议的 HTTP/SSE 传输
- 基于 JWT 的身份验证,用于安全管理凭据
- 基于 Web 的授权流程,便于用户进行设置
- 多租户支持,可作为服务托管
可用工具
-
get_media_entry - 获取特定媒体条目的详细信息
- 参数:entry_id(必填)
-
list_categories - 列出并搜索内容类别
- 参数:search_text、limit
-
Analytics Tools - 功能全面且用途明确的分析工具套件:
- get_analytics - 用于报告和分析的通用分析数据
- get_analytics_timeseries - 针对图表优化的时间序列数据
- get_video_retention - 视频全程的详细观众留存分析
- get_realtime_metrics - 每约 30 秒更新一次的实时分析数据
- get_quality_metrics - 体验质量(QoE)和流媒体播放性能
- get_geographic_breakdown - 不同粒度的基于位置的分析
- list_analytics_capabilities - 查看所有可用的分析功能
- 详细用法请参阅 Analytics Guide
-
get_download_url - 获取媒体文件的直接下载 URL
- 参数:entry_id(必填)、flavor_id
-
get_thumbnail_url - 获取带自定义尺寸的视频缩略图/预览图 URL
- 参数:entry_id(必填)、width、height、second
-
search_entries - 通过智能排序和筛选搜索并发现媒体条目
- 参数:query(必填)、search_type、match_type、specific_field、boolean_operator、include_highlights、custom_metadata、date_range、max_results、sort_field、sort_order
-
list_caption_assets - 列出媒体条目可用的字幕
- 参数:entry_id(必填)
-
get_caption_content - 获取字幕内容和下载 URL
- 参数:caption_asset_id(必填)
-
list_attachment_assets - 列出媒体条目的附件
- 参数:entry_id(必填)
-
get_attachment_content - 获取附件详细信息,并以 base64 格式下载内容
- 参数:attachment_asset_id(必填)
提示词
该服务提供智能提示词,帮助用户完成复杂工作流:
-
analytics_wizard - 创建全面分析报告的交互式指南
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 - 用于查找媒体的自然语言搜索助手
Arguments: - search_intent: What you're looking for in natural language - include_details: Whether to fetch captions/attachments (yes/no) -
accessibility_audit - 内容无障碍合规检查器
Arguments: - audit_scope: What to audit ("all", "recent", "category:name", or entry_id) -
retention_analysis - 创建全面的留存分析报告
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")
资源
该服务将常用数据作为缓存资源提供:
-
kaltura://analytics/capabilities - 完整的分析文档
- 所有 60 多种报告类型及其说明
- 可用指标和维度
- 适用于不同用例的最佳实践
- 缓存 30 分钟
-
kaltura://categories/tree - 带有条目计数的类别层级结构
- 完整的类别树结构
- 每个类别的条目计数
- 父子关系
- 缓存 30 分钟
-
kaltura://media/recent/{count} - 最近的媒体条目
- 将 {count} 替换为条目数量(例如:kaltura://media/recent/20)
- 最多 100 个条目
- 包含基本元数据
- 缓存 5 分钟
远程 MCP 服务(高级)
用户授权流程
- 服务部署:将远程服务部署到你的托管环境
- 用户授权:用户访问
https://your-server.com/oauth/authorize - 输入凭据:用户通过网页表单安全地输入其 Kaltura 凭据
- 生成令牌:服务使用加密后的凭据生成 JWT 令牌
- 客户端配置:用户将服务 URL 和令牌添加到其 MCP 客户端
远程设置步骤
1. 生成安全的 JWT 密钥
# Generate a strong secret key
python -c "import secrets; print(secrets.token_urlsafe(32))"
2. 配置环境
# 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. 部署服务
选项 A:直接使用 Python
kaltura-mcp-remote
选项 B:Docker
docker-compose up -d
选项 C:使用 Gunicorn 部署到生产环境(可选)
# Install gunicorn separately if needed for production
pip install gunicorn
gunicorn -w 4 -k uvicorn.workers.UvicornWorker kaltura_mcp.remote_server:app
4. 用户引导
将用户发送到:https://your-server.com/oauth/authorize?response_type=code&client_id=kaltura-mcp&redirect_uri=https://your-server.com/oauth/callback&state=user123
5. 客户端配置
适用于 Claude Desktop(远程模式):
通过代理客户端使用 Claude Desktop 连接远程服务,是最简单的方式:
{
"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"
}
}
}
}
代理客户端(kaltura-mcp-proxy)充当本地 stdio MCP 服务,将请求转发到远程服务。这样可以与 Claude Desktop 实现最佳兼容性。
适用于自定义 MCP 客户端:
// HTTP transport with authentication
const transport = new HTTPTransport({
baseUrl: "https://your-server.com/mcp/messages",
headers: {
"Authorization": "Bearer user-jwt-token-here"
}
});
分析文档
MCP 服务提供全面的分析套件,包含针对不同使用场景优化的专用功能:
专用分析功能:
- get_analytics:以表格形式提供全面的报告数据,便于详细分析
- get_analytics_timeseries:针对图表和可视化优化的时间序列数据
- get_video_retention:详细的观看者留存曲线,准确显示观看者在哪些位置流失
- get_realtime_metrics:每隔约 30 秒更新的实时分析数据,用于监控
- get_quality_metrics:用于衡量流媒体性能的体验质量(QoE)指标
- get_geographic_breakdown:按国家、地区或城市划分的位置分析数据
分析能力:
- 60 多种报告类型,涵盖内容、用户、地理位置、平台等
- 提供原始数据,用于自定义分析和可视化
- 智能洞察,包括流失节点和互动模式
- 支持按日期范围、类别、用户和维度进行筛选
如需完整文档,请参阅:
安全注意事项
生产环境部署
- 使用 HTTPS:始终使用 TLS/SSL 证书进行部署
- 保护 JWT 密钥:使用具有强加密强度的密钥(32 字节以上)
- 环境安全:切勿将密钥提交到版本控制系统
- 网络安全:在适当情况下使用防火墙和 VPN 访问
- 定期更新:及时更新依赖项以获取安全补丁
JWT 令牌安全
- 令牌过期:令牌默认在 24 小时后过期
- 凭据加密:Kaltura 凭据在 JWT 负载中加密
- 范围限制:令牌仅限于只读 Kaltura 操作
- 撤销:重启服务以使所有现有令牌失效
基础设施
# 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;
}
}
Docker 部署
用于生产环境的 docker-compose.yml:
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"
监控与日志记录
远程服务提供内置日志记录,可通过以下方式进行监控:
- 运行状况检查:
GET /返回服务状态 - 指标:通过 Docker 卷或服务日志查看访问日志
- 错误跟踪:配置外部错误跟踪服务
重要安全说明
本地模式安全性(推荐)
- ✅ 直接配置 - 直接在 Claude Desktop 中配置凭据
- ✅ 符合 MCP 标准 - 客户端通过环境变量将凭据传递给服务
- ✅ 进程隔离 - MCP 服务在权限受限的隔离进程中运行
- ✅ 无网络暴露 - 直接与 Kaltura API 通信
- ✅ 本地凭据存储 - 凭据不会离开你的设备
- ✅ 安全传输 - 凭据安全地传递给 MCP 服务进程
远程模式安全性
- ✅ 凭据加密 - Kaltura 凭据在 JWT 令牌中加密
- ✅ 令牌过期 - 令牌会在 24 小时后自动过期
- ✅ TLS 加密 - 生产环境必须使用 HTTPS
- ⚠️ 服务信任 - 你必须信任远程服务运营方
- ⚠️ 凭据传输 - 凭据会发送到远程服务(已加密)
生产环境检查清单
- 使用具有有效证书的 HTTPS
- 生成强度足够的 JWT 密钥(32 字节以上)
- 配置安全的环境变量
- 设置适当的日志记录和监控
- 实施速率限制(nginx/cloudflare)
- 定期进行安全更新
- 制定备份和灾难恢复计划
部署架构
个人使用(推荐)
Claude Desktop ←→ Local MCP Server ←→ Kaltura API
小型团队
Claude Desktop ←→ Proxy Client ←→ Remote MCP Server ←→ Kaltura API
企业
Multiple Clients ←→ Load Balancer ←→ Multiple MCP Servers ←→ Kaltura API
↓
Redis/Database
文档
开发
运行测试
pytest
代码格式化
black src/
ruff check src/
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。