aodianyun-lcps-mcp
Version:
奥点云活动导播台工程MCP服务
385 lines (280 loc) • 11.3 kB
Markdown
# 奥点云活动导播台工程 MCP 服务
[](https://www.npmjs.com/package/aodianyun-lcps-mcp)
[](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`