UNPKG

aodianyun-lcps-mcp

Version:

奥点云活动导播台工程MCP服务

385 lines (280 loc) 11.3 kB
# 奥点云活动导播台工程 MCP 服务 [![npm version](https://img.shields.io/npm/v/aodianyun-lcps-mcp.svg)](https://www.npmjs.com/package/aodianyun-lcps-mcp) [![npm downloads](https://img.shields.io/npm/dm/aodianyun-lcps-mcp.svg)](https://www.npmjs.com/package/aodianyun-lcps-mcp) 这是一个用于管理奥点云活动导播台工程的 MCP (Model Context Protocol) 服务,提供了完整的 CRUD 操作功能。支持通过 npx 直接运行,无需安装。 ## ✨ 功能特性 - 🎬 **创建活动导播台工程** - 创建新的导播台工程 - 🚀 **开启活动导播台工程** - 启动指定的导播台工程 - 🛑 **关闭活动导播台工程** - 停止指定的导播台工程 - 🗑️ **删除活动导播台工程** - 删除指定的导播台工程 - 📋 **获取活动导播台工程列表** - 获取所有工程列表 - 🎛️ **获取活动导播台中控页面** - 获取中控页面访问链接 - 🔐 **获取LCPS认证Token** - 获取LCPS认证Token - 📡 **设置信道参数** - 批量设置信道参数(视频比例、输入源、缓冲时间) - 📡 **设置输出地址** - 配置导播台输出流参数 - 🔧 **命令行参数支持** - 支持通过参数传入认证信息 - 🌍 **环境变量支持** - 支持通过环境变量配置 - 🔐 **自动认证** - 支持自动获取和解析认证信息 ## 🚀 快速开始 ### 方法1:使用 npx 直接运行(推荐) ```bash # 使用参数 npx aodianyun-lcps-mcp --access-id "xxx" --access-key "xx" --domain "jstest.aodianyun.cn" # 指定版本运行 npx aodianyun-lcps-mcp@1.0.20 --access-id "xx" --access-key "xx" --domain "jstest.aodianyun.cn" ``` ### 方法2:全局安装后使用 ```bash # 全局安装 npm install -g aodianyun-lcps-mcp # 运行服务 aodianyun-lcps-mcp --access-id "xxxx" --access-key "xxxxxx" # 安装指定版本 npm install -g aodianyun-lcps-mcp@1.0.20 ``` ### 方法3:本地安装 ```bash # 安装依赖 npm install aodianyun-lcps-mcp # 运行服务 npx aodianyun-lcps-mcp --access-id "xxxx" --access-key "xxxx" # 安装指定版本 npm install aodianyun-lcps-mcp@1.0.20 ``` ## 📋 命令行参数 | 参数 | 短参数 | 说明 | 必需 | 默认值 | |------|--------|------|------|--------| | `--access-id` | `-i` | 奥点云访问ID | ✅ | - | | `--access-key` | `-k` | 奥点云访问密钥 | ✅ | - | | `--base-url` | `-u` | API基础URL | ❌ | `http://apaas-api.jstest.aodianyun.cn` | | `--domain` | `-d` | 奥点云域名 | ❌ | `jstest.aodianyun.cn` | | `--help` | `-h` | 显示帮助信息 | ❌ | - | ## 🌍 环境变量支持 您也可以通过环境变量设置配置: ```bash # Linux/macOS export AODIANYUN_ACCESS_ID="xxxx" export AODIANYUN_ACCESS_KEY="xxxxxx" export AODIANYUN_BASE_URL="http://apaas-api.jstest.aodianyun.cn" export AODIANYUN_DOMAIN="jstest.aodianyun.cn" # Windows PowerShell $env:AODIANYUN_ACCESS_ID="xxx" $env:AODIANYUN_ACCESS_KEY="xxxxx" $env:AODIANYUN_BASE_URL="http://apaas-api.jstest.aodianyun.cn" $env:AODIANYUN_DOMAIN="jstest.aodianyun.cn" # Windows CMD set AODIANYUN_ACCESS_ID=xxxxx set AODIANYUN_ACCESS_KEY=xxxxxx set AODIANYUN_BASE_URL=http://apaas-api.jstest.aodianyun.cn set AODIANYUN_DOMAIN=jstest.aodianyun.cn ``` ## 📝 使用示例 ### 查看帮助 ```bash npx aodianyun-lcps-mcp --help ``` ## 🔧 MCP 工具说明 ### 1. 创建活动导播台工程 **工具名**: `create_active_lcps_project` **参数**: - `title` (string): 工程标题 - `inputNum` (number): 信源数目 (4, 5, 6, 7, 8) - `resolution` (string): 分辨率 (720p, 1080p) - `useHours` (number): 使用时长(小时),默认1小时 - `subType` (string): 固定值 "alcps" - `remarks` (string, 可选): 备注信息(可选,默认自动生成resolution和inputNum的组合) **功能**: 创建新的活动导播台工程,返回工程ID ### 2. 开启活动导播台工程 **工具名**: `open_active_lcps_project` **参数**: - `projectId` (number): 工程ID - `expiresTime` (number): 到期时间(秒级时间戳) - `subType` (string): 固定值 "alcps" **功能**: 开启指定的导播台工程,返回LCPS地址 ### 3. 关闭活动导播台工程 **工具名**: `close_active_lcps_project` **参数**: - `projectId` (string): 工程ID - `subType` (string): 固定值 "alcps" **功能**: 关闭指定的导播台工程 ### 4. 删除活动导播台工程 **工具名**: `delete_active_lcps_project` **参数**: - `projectId` (string): 工程ID - `subType` (string): 固定值 "alcps" **功能**: 删除指定的导播台工程 ### 5. 获取活动导播台工程列表 **工具名**: `get_active_lcps_project_list` **参数**: - `num` (number): 每页数目,默认10,最大100 - `page` (number): 页数,默认1 - `subType` (string): 固定值 "alcps" **返回数据**: - 工程列表详细信息 - 总工程数量 - 每个工程的状态、创建时间等信息 ### 6. 获取活动导播台中控页面 **工具名**: `get_active_lcps_control_page` **参数**: - `projectId` (number): 工程ID - `subType` (string): 固定值 "alcps" **返回数据**: - 中控页面访问链接 - 认证信息(ID和SecretKey) ### 7. 获取LCPS认证Token **工具名**: `get_lcps_auth_token` **参数**: - `id` (string): LCPS实例ID - `secretKey` (string): LCPS密钥 - `pathname` (string): 认证路径,默认为"/getToken" - `projectId` (number, 可选): 工程ID(用于自动获取认证信息) - `subType` (string): 固定值 "alcps" **功能**: 获取LCPS认证Token,支持自动解析认证信息 **返回数据**: - 认证Token信息(validate, timestamp, rand) - 解析出的认证参数 ### 8. 设置信道参数 **工具名**: `set_channel` **参数**: - `lcpsAddr` (string): LCPS地址(支持带http/https协议或不带协议的格式) - `channel` (number): 信道号(1-16,对应API的0-15) - `keepRatio` (boolean, 可选): 是否保持视频比例 - `playURL` (array, 可选): 拉流地址数组 - `inputType` (string): 输入类型,默认"拉流" - `allowPublishForce` (boolean): 是否允许强制发布,默认false - `firstBufferTime` (number): 首次缓冲时间(秒),默认0 - `maxBufferTime` (number): 最大缓冲时间(秒),默认1 - `smoothMode` (boolean): 平滑模式,默认false - `enableLowLatency` (boolean): 启用低延迟,默认false - `id` (string, 可选): LCPS实例ID(从get_active_lcps_control_page获取) - `secretKey` (string, 可选): LCPS密钥(从get_active_lcps_control_page获取) - `projectId` (number, 可选): 工程ID(用于自动获取认证信息) **功能**: 一次性设置多个信道参数,包括视频比例、输入源和缓冲时间 **支持的lcpsAddr格式**: - `http://mcx0emt6-20250710143054-1011.lcps.jstest.aodianyun.cn` - `https://mcx0emt6-20250710143054-1011.lcps.jstest.aodianyun.cn` - `mcx0emt6-20250710143054-1011.lcps.jstest.aodianyun.cn` **执行的操作**: 1. 设置视频保持比例(如果提供keepRatio参数) 2. 切换输入源(如果提供playURL参数) 3. 设置缓冲时间(always执行) ### 9. 设置导播台输出地址 **工具名**: `set_output_address` **参数**: - `lcpsAddr` (string): LCPS地址(从open_active_lcps_project返回的lcpsAddr) - `publishURL` (array): 推流地址数组 - `formatIndex` (number): 格式索引,默认0 - `notRestart` (boolean): 是否不重启,默认false - `enable` (boolean): 是否启用,默认true - `playURL` (string): 播放地址,默认为空 - `videoSize` (string): 视频尺寸,默认"1920x1080" - `videoBitrate` (string): 视频码率,默认"3000k" - `videoCBR` (boolean): 视频CBR模式,默认false - `qmin` (number): 最小量化参数,默认2 - `qmax` (number): 最大量化参数,默认1024 - `gop` (number): GOP大小,默认3 - `audioBitrate` (string): 音频码率,默认"128k" - `audioOnly` (boolean): 仅音频模式,默认false - `enableDelayPublish` (boolean): 启用延迟发布,默认false - `delayPublishTime` (number): 延迟发布时间(秒),默认120 - `delayPublishURL` (array): 延迟发布地址数组,默认为空 - `publishToLPS` (boolean): 发布到LPS,默认false - `videoRecord` (boolean): 视频录制,默认false - `lossless` (boolean): 无损模式,默认false - `hdr` (boolean): HDR模式,默认false - `pixfmt` (string): 像素格式,默认"yuv420" - `hdrtype` (string): HDR类型,默认"HLG" - `id` (string, 可选): LCPS实例ID(从get_active_lcps_control_page获取) - `secretKey` (string, 可选): LCPS密钥(从get_active_lcps_control_page获取) - `projectId` (number, 可选): 工程ID(用于自动获取认证信息) **功能**: 配置导播台输出流参数,支持多种编码和发布选项 ## 🔐 API 接口说明 ### 鉴权规则 所有请求都需要在请求头中包含以下参数: - `X-AccessId`: 系统分配的访问者身份标识 - `X-TimeStamp`: 时间戳(1970年1月1日0点到当前的秒数) - `X-SignatureNonce`: 随机字符串 - `X-Signature`: 签名(MD5加密) ### 签名生成规则 ``` stringToSign = X-AccessId + "\n" + X-AccessKey + "\n" + X-SignatureNonce + "\n" + X-TimeStamp + "\n" + body X-Signature = md5(stringToSign) // 32位小写 ``` ### LCPS认证 对于LCPS相关操作,需要额外的认证头: - `x-validate`: 认证验证值 - `x-timestamp`: 认证时间戳 - `x-rand`: 认证随机数 ## 📊 返回格式 所有接口都返回统一的格式: ```javascript { "flag": 100, // 状态码(100:成功;!=100:失败) "flagString": "success", // 提示信息 "data": { // 返回数据(可选) "id": 411 // 工程ID等 } } ``` ## ⚠️ 注意事项 1. **安全性**:不要在命令行中暴露敏感信息,建议使用环境变量 2. **网络**:确保网络可以访问奥点云API 3. **权限**:确保accessId和accessKey有足够的权限 4. **版本**:确保使用最新版本的Node.js 5. **认证**:LCPS操作需要正确的认证信息,支持自动获取 6. **域名**:支持自定义域名配置,默认为jstest.aodianyun.cn ## 🔍 故障排除 ### 常见错误 1. **缺少参数** ``` ❌ 缺少必要的配置参数 ``` 解决:提供 `-i` 和 `-k` 参数 2. **网络错误** ``` API请求出错 ``` 解决:检查网络连接和API地址 3. **鉴权失败** ``` flag: 401 ``` 解决:检查accessId和accessKey是否正确 4. **版本兼容性** ``` npx: command not found ``` 解决:使用指定版本运行 `npx aodianyun-lcps-mcp@1.0.20` 5. **LCPS认证失败** ``` LCPS认证失败 ``` 解决:检查工程ID和认证信息是否正确 ## 🛠️ 开发 ### 本地开发 ```bash # 克隆项目 git clone <repository-url> cd aodianyun-lcps-mcp # 安装依赖 npm install # 开发模式 npm run dev # 运行测试 npm test ``` ### 构建 ```bash npm run build ``` ## 📄 许可证 MIT License ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📞 支持 如果遇到问题,请: 1. 运行 `npx aodianyun-lcps-mcp --help` 查看帮助 2. 检查网络连接 3. 验证API凭据 4. 查看控制台错误信息 5. 尝试指定版本运行 `npx aodianyun-lcps-mcp@1.0.20`