Name | aigroup-video-mcp JSON |
Version |
1.1.1
JSON |
| download |
home_page | None |
Summary | A MCP server for video multimodal understanding based on Alibaba Cloud DashScope |
upload_time | 2025-08-26 07:52:08 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | MIT |
keywords |
mcp
video
ai
dashscope
multimodal
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Aigroup Video MCP
Aigroup Video MCP 是一个基于阿里云 DashScope 的视频多模态理解 MCP(Model Context Protocol)服务器,提供强大的视频内容分析功能。
[](https://python.org)
[](LICENSE)
[](https://modelcontextprotocol.io)
## 🌟 特性
- **🎥 视频内容分析**:支持通过 URL 或本地路径分析视频内容
- **🧠 智能摘要**:自动生成视频摘要和关键信息
- **🎬 场景识别**:识别视频中的主要场景和场景转换
- **✨ 自定义提示词**:支持灵活的自定义分析需求
- **🔌 MCP 协议支持**:完全兼容 MCP 协议,支持 stdio 和 SSE 模式
- **⚡ 高性能处理**:基于异步处理,支持并发请求
- **📊 使用统计**:内置使用统计和监控功能
- **🛡️ 安全配置**:支持域名白名单、文件大小限制等安全特性
## 🎯 核心功能
### 视频分析工具
- **analyze_video**: 基础视频内容分析
- **summarize_video**: 视频摘要生成(支持简要、详细、通用三种模式)
- **analyze_video_scenes**: 视频场景分析和转换检测
- **analyze_video_custom**: 自定义提示词视频分析
- **validate_video_source**: 视频源验证和检查
### 系统资源
- **config://system**: 系统配置信息
- **models://available**: 可用模型信息
- **status://system**: 系统状态和健康检查
- **stats://usage**: 使用统计和分析报告
## 🚀 快速开始
### 环境要求
- Python 3.8+
- DashScope API Key
### 安装
```bash
# 克隆项目
git clone https://github.com/jackdark425/aigroup-video-mcp.git
cd aigroup-video-mcp
# 安装依赖
pip install -r requirements.txt
# 或使用 pip 安装
pip install aigroup-video-mcp
```
### 配置
1. 复制环境变量示例文件:
```bash
cp .env.example .env
```
2. 编辑 `.env` 文件,设置你的 DashScope API Key:
```bash
DASHSCOPE_API_KEY=your_dashscope_api_key_here
```
3. 或者直接设置环境变量:
```bash
export DASHSCOPE_API_KEY=your_dashscope_api_key_here
```
### 运行服务器
#### MCP 模式(默认)
```bash
# 使用 stdio 传输模式(推荐用于 MCP 客户端)
python -m aigroup_video_mcp.main serve
```
#### SSE 模式
```bash
# 使用 SSE 传输模式(用于 HTTP 客户端)
python -m aigroup_video_mcp.main serve --transport sse --host 0.0.0.0 --port 3001
```
## 📖 使用示例
### 命令行工具
#### 分析视频文件
```bash
# 基础视频分析
python -m aigroup_video_mcp.main analyze video.mp4
# 使用自定义提示词
python -m aigroup_video_mcp.main analyze video.mp4 --prompt "请分析视频中的人物动作和表情"
# 输出为 JSON 格式
python -m aigroup_video_mcp.main analyze video.mp4 --format json --save-to result.json
```
#### 健康检查
```bash
# 检查服务器健康状态
python -m aigroup_video_mcp.main health
# 查看服务器信息
python -m aigroup_video_mcp.main info
# 验证配置
python -m aigroup_video_mcp.main config
```
### RooCode MCP 客户端集成
如果你正在开发 MCP 客户端,可以通过以下方式集成:
DASHSCOPE_API_KEY直接在环境变量中设置
```json
{
"mcpServers": {
"aigroup-video-mcp": {
"command": "python",
"args": [
"-m",
"aigroup_video_mcp.main",
"serve"
],
"env": {
"DASHSCOPE_API_KEY": "${env:DASHSCOPE_API_KEY}"
},
"alwaysAllow": [
"analyze_video",
"summarize_video",
"analyze_video_scenes",
"analyze_video_custom",
"validate_video_source"
],
"disabled": false
}
}
}
```
### Python API
```python
import asyncio
from aigroup_video_mcp.core.analyzer import get_analyzer, create_video_source
async def analyze_video():
# 创建分析器
analyzer = get_analyzer(async_mode=True)
# 创建视频源
video_source = create_video_source("path/to/video.mp4")
# 分析视频
result = await analyzer.analyze(
video_source,
"请描述这个视频的主要内容"
)
if result.success:
print(result.content)
else:
print(f"分析失败: {result.error}")
# 运行
asyncio.run(analyze_video())
```
## 🛠️ 工具详细说明
### analyze_video
基础视频内容分析工具。
**参数:**
- `video_path` (必需): 视频文件路径或 URL
- `prompt` (可选): 自定义分析提示词
- `model` (可选): 使用的模型名称
- `temperature` (可选): 文本生成温度 (0.0-2.0)
- `max_tokens` (可选): 最大响应 token 数
**示例:**
```json
{
"video_path": "https://example.com/video.mp4",
"prompt": "请分析这个视频的内容,包括主要场景、人物、动作和事件。",
"temperature": 0.7,
"max_tokens": 2000
}
```
### summarize_video
视频摘要生成工具。
**参数:**
- `video_path` (必需): 视频文件路径或 URL
- `summary_type` (可选): 摘要类型 (`general`, `detailed`, `brief`)
- `model` (可选): 使用的模型名称
- `temperature` (可选): 文本生成温度
- `max_tokens` (可选): 最大响应 token 数
### analyze_video_scenes
视频场景分析工具。
**参数:**
- `video_path` (必需): 视频文件路径或 URL
- `scene_detection` (可选): 是否检测场景转换
- `detailed_analysis` (可选): 是否提供详细分析
- `model` (可选): 使用的模型名称
### analyze_video_custom
自定义视频分析工具。
**参数:**
- `video_path` (必需): 视频文件路径或 URL
- `custom_prompt` (必需): 自定义分析提示词
- `analysis_focus` (可选): 分析焦点
- `output_format` (可选): 输出格式
- `language` (可选): 输出语言
### validate_video_source
视频源验证工具。
**参数:**
- `video_path` (必需): 视频文件路径或 URL
- `check_accessibility` (可选): 是否检查可访问性
- `check_format` (可选): 是否检查格式兼容性
- `check_size` (可选): 是否检查文件大小
- `detailed_info` (可选): 是否返回详细信息
## 📊 支持的视频格式
- MP4
- AVI
- MOV
- MKV
- WebM
- FLV
## ⚙️ 配置选项
### 环境变量
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| `DASHSCOPE_API_KEY` | DashScope API 密钥 | *必需* |
| `VIDEO__MAX_FILE_SIZE` | 最大文件大小(字节) | 104857600 (100MB) |
| `VIDEO__MAX_DURATION` | 最大视频时长(秒) | 3600 (1小时) |
| `MCP__MAX_CONCURRENT_REQUESTS` | 最大并发请求数 | 10 |
| `LOG__LEVEL` | 日志级别 | INFO |
| `ENVIRONMENT` | 运行环境 | production |
| `DEBUG` | 调试模式 | false |
### 配置文件
项目支持通过 `.env` 文件进行配置。所有环境变量都可以在配置文件中设置。
## 🔒 安全特性
- **文件大小限制**:防止过大文件上传
- **格式验证**:只支持指定的视频格式
- **域名白名单/黑名单**:控制允许访问的 URL 域名
- **速率限制**:防止 API 滥用
- **输入验证**:严格的参数验证
## 📈 监控和统计
服务器内置了使用统计和监控功能:
- **使用统计**:工具和资源的使用频率
- **性能监控**:响应时间和成功率
- **健康检查**:系统状态和组件健康
- **资源监控**:CPU、内存、磁盘使用情况
访问统计信息:
```bash
# 查看使用统计
curl http://localhost:3001/resources/stats://usage
# 查看系统状态
curl http://localhost:3001/resources/status://system
```
## 🐛 故障排除
### 常见问题
1. **API Key 未设置**
```
Error: DashScope API key is required
```
解决方案:设置 `DASHSCOPE_API_KEY` 环境变量
2. **不支持的视频格式**
```
Error: Unsupported format: xxx
```
解决方案:转换视频为支持的格式(MP4, AVI, MOV, MKV, WebM, FLV)
3. **文件过大**
```
Error: File too large
```
解决方案:压缩视频或调整 `VIDEO__MAX_FILE_SIZE` 配置
4. **网络连接问题**
```
Error: Failed to connect to DashScope API
```
解决方案:检查网络连接和 API Key 是否正确
### 调试模式
启用调试模式获取更详细的日志:
```bash
python -m aigroup_video_mcp.main --debug serve
```
## 🤝 贡献
欢迎贡献代码!请遵循以下步骤:
1. Fork 项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request
## 📄 许可证
该项目使用 MIT 许可证。详情请参阅 [LICENSE](LICENSE) 文件。
## 🙏 致谢
- [阿里云 DashScope](https://dashscope.aliyun.com/) - 提供强大的多模态 AI 能力
- [Model Context Protocol](https://modelcontextprotocol.io/) - 提供标准化的模型交互协议
- [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) - 提供 Python MCP 实现
## 📞 支持
如果你遇到任何问题或有建议,请:
1. 查看 [常见问题](README.md#故障排除) 部分
2. 提交 [Issue](https://github.com/jackdark425/aigroup-video-mcp/issues)
3. 联系开发团队:team@aigroup.com
---
**Made with ❤️ by Aigroup Team**
Raw data
{
"_id": null,
"home_page": null,
"name": "aigroup-video-mcp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "mcp, video, ai, dashscope, multimodal",
"author": null,
"author_email": "Aigroup Team <team@aigroup.com>",
"download_url": "https://files.pythonhosted.org/packages/ba/04/ae868f673d9f895c358002944c46fca7e9fa89672ef38ddc902683c3edc5/aigroup_video_mcp-1.1.1.tar.gz",
"platform": null,
"description": "# Aigroup Video MCP\r\n\r\nAigroup Video MCP \u662f\u4e00\u4e2a\u57fa\u4e8e\u963f\u91cc\u4e91 DashScope \u7684\u89c6\u9891\u591a\u6a21\u6001\u7406\u89e3 MCP\uff08Model Context Protocol\uff09\u670d\u52a1\u5668\uff0c\u63d0\u4f9b\u5f3a\u5927\u7684\u89c6\u9891\u5185\u5bb9\u5206\u6790\u529f\u80fd\u3002\r\n\r\n[](https://python.org)\r\n[](LICENSE)\r\n[](https://modelcontextprotocol.io)\r\n\r\n## \ud83c\udf1f \u7279\u6027\r\n\r\n- **\ud83c\udfa5 \u89c6\u9891\u5185\u5bb9\u5206\u6790**\uff1a\u652f\u6301\u901a\u8fc7 URL \u6216\u672c\u5730\u8def\u5f84\u5206\u6790\u89c6\u9891\u5185\u5bb9\r\n- **\ud83e\udde0 \u667a\u80fd\u6458\u8981**\uff1a\u81ea\u52a8\u751f\u6210\u89c6\u9891\u6458\u8981\u548c\u5173\u952e\u4fe1\u606f\r\n- **\ud83c\udfac \u573a\u666f\u8bc6\u522b**\uff1a\u8bc6\u522b\u89c6\u9891\u4e2d\u7684\u4e3b\u8981\u573a\u666f\u548c\u573a\u666f\u8f6c\u6362\r\n- **\u2728 \u81ea\u5b9a\u4e49\u63d0\u793a\u8bcd**\uff1a\u652f\u6301\u7075\u6d3b\u7684\u81ea\u5b9a\u4e49\u5206\u6790\u9700\u6c42\r\n- **\ud83d\udd0c MCP \u534f\u8bae\u652f\u6301**\uff1a\u5b8c\u5168\u517c\u5bb9 MCP \u534f\u8bae\uff0c\u652f\u6301 stdio \u548c SSE \u6a21\u5f0f\r\n- **\u26a1 \u9ad8\u6027\u80fd\u5904\u7406**\uff1a\u57fa\u4e8e\u5f02\u6b65\u5904\u7406\uff0c\u652f\u6301\u5e76\u53d1\u8bf7\u6c42\r\n- **\ud83d\udcca \u4f7f\u7528\u7edf\u8ba1**\uff1a\u5185\u7f6e\u4f7f\u7528\u7edf\u8ba1\u548c\u76d1\u63a7\u529f\u80fd\r\n- **\ud83d\udee1\ufe0f \u5b89\u5168\u914d\u7f6e**\uff1a\u652f\u6301\u57df\u540d\u767d\u540d\u5355\u3001\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u7b49\u5b89\u5168\u7279\u6027\r\n\r\n## \ud83c\udfaf \u6838\u5fc3\u529f\u80fd\r\n\r\n### \u89c6\u9891\u5206\u6790\u5de5\u5177\r\n\r\n- **analyze_video**: \u57fa\u7840\u89c6\u9891\u5185\u5bb9\u5206\u6790\r\n- **summarize_video**: \u89c6\u9891\u6458\u8981\u751f\u6210\uff08\u652f\u6301\u7b80\u8981\u3001\u8be6\u7ec6\u3001\u901a\u7528\u4e09\u79cd\u6a21\u5f0f\uff09\r\n- **analyze_video_scenes**: \u89c6\u9891\u573a\u666f\u5206\u6790\u548c\u8f6c\u6362\u68c0\u6d4b\r\n- **analyze_video_custom**: \u81ea\u5b9a\u4e49\u63d0\u793a\u8bcd\u89c6\u9891\u5206\u6790\r\n- **validate_video_source**: \u89c6\u9891\u6e90\u9a8c\u8bc1\u548c\u68c0\u67e5\r\n\r\n### \u7cfb\u7edf\u8d44\u6e90\r\n\r\n- **config://system**: \u7cfb\u7edf\u914d\u7f6e\u4fe1\u606f\r\n- **models://available**: \u53ef\u7528\u6a21\u578b\u4fe1\u606f\r\n- **status://system**: \u7cfb\u7edf\u72b6\u6001\u548c\u5065\u5eb7\u68c0\u67e5\r\n- **stats://usage**: \u4f7f\u7528\u7edf\u8ba1\u548c\u5206\u6790\u62a5\u544a\r\n\r\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\r\n\r\n### \u73af\u5883\u8981\u6c42\r\n\r\n- Python 3.8+\r\n- DashScope API Key\r\n\r\n### \u5b89\u88c5\r\n\r\n```bash\r\n# \u514b\u9686\u9879\u76ee\r\ngit clone https://github.com/jackdark425/aigroup-video-mcp.git\r\ncd aigroup-video-mcp\r\n\r\n# \u5b89\u88c5\u4f9d\u8d56\r\npip install -r requirements.txt\r\n\r\n# \u6216\u4f7f\u7528 pip \u5b89\u88c5\r\npip install aigroup-video-mcp\r\n```\r\n\r\n### \u914d\u7f6e\r\n\r\n1. \u590d\u5236\u73af\u5883\u53d8\u91cf\u793a\u4f8b\u6587\u4ef6\uff1a\r\n\r\n```bash\r\ncp .env.example .env\r\n```\r\n\r\n2. \u7f16\u8f91 `.env` \u6587\u4ef6\uff0c\u8bbe\u7f6e\u4f60\u7684 DashScope API Key\uff1a\r\n\r\n```bash\r\nDASHSCOPE_API_KEY=your_dashscope_api_key_here\r\n```\r\n\r\n3. \u6216\u8005\u76f4\u63a5\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\uff1a\r\n\r\n```bash\r\nexport DASHSCOPE_API_KEY=your_dashscope_api_key_here\r\n```\r\n\r\n### \u8fd0\u884c\u670d\u52a1\u5668\r\n\r\n#### MCP \u6a21\u5f0f\uff08\u9ed8\u8ba4\uff09\r\n\r\n```bash\r\n# \u4f7f\u7528 stdio \u4f20\u8f93\u6a21\u5f0f\uff08\u63a8\u8350\u7528\u4e8e MCP \u5ba2\u6237\u7aef\uff09\r\npython -m aigroup_video_mcp.main serve\r\n```\r\n\r\n#### SSE \u6a21\u5f0f\r\n\r\n```bash\r\n# \u4f7f\u7528 SSE \u4f20\u8f93\u6a21\u5f0f\uff08\u7528\u4e8e HTTP \u5ba2\u6237\u7aef\uff09\r\npython -m aigroup_video_mcp.main serve --transport sse --host 0.0.0.0 --port 3001\r\n```\r\n\r\n## \ud83d\udcd6 \u4f7f\u7528\u793a\u4f8b\r\n\r\n### \u547d\u4ee4\u884c\u5de5\u5177\r\n\r\n#### \u5206\u6790\u89c6\u9891\u6587\u4ef6\r\n\r\n```bash\r\n# \u57fa\u7840\u89c6\u9891\u5206\u6790\r\npython -m aigroup_video_mcp.main analyze video.mp4\r\n\r\n# \u4f7f\u7528\u81ea\u5b9a\u4e49\u63d0\u793a\u8bcd\r\npython -m aigroup_video_mcp.main analyze video.mp4 --prompt \"\u8bf7\u5206\u6790\u89c6\u9891\u4e2d\u7684\u4eba\u7269\u52a8\u4f5c\u548c\u8868\u60c5\"\r\n\r\n# \u8f93\u51fa\u4e3a JSON \u683c\u5f0f\r\npython -m aigroup_video_mcp.main analyze video.mp4 --format json --save-to result.json\r\n```\r\n\r\n#### \u5065\u5eb7\u68c0\u67e5\r\n\r\n```bash\r\n# \u68c0\u67e5\u670d\u52a1\u5668\u5065\u5eb7\u72b6\u6001\r\npython -m aigroup_video_mcp.main health\r\n\r\n# \u67e5\u770b\u670d\u52a1\u5668\u4fe1\u606f\r\npython -m aigroup_video_mcp.main info\r\n\r\n# \u9a8c\u8bc1\u914d\u7f6e\r\npython -m aigroup_video_mcp.main config\r\n```\r\n\r\n### RooCode MCP \u5ba2\u6237\u7aef\u96c6\u6210\r\n\r\n\u5982\u679c\u4f60\u6b63\u5728\u5f00\u53d1 MCP \u5ba2\u6237\u7aef\uff0c\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u96c6\u6210\uff1a\r\nDASHSCOPE_API_KEY\u76f4\u63a5\u5728\u73af\u5883\u53d8\u91cf\u4e2d\u8bbe\u7f6e\r\n```json\r\n{\r\n \"mcpServers\": {\r\n \"aigroup-video-mcp\": {\r\n \"command\": \"python\",\r\n \"args\": [\r\n \"-m\",\r\n \"aigroup_video_mcp.main\",\r\n \"serve\"\r\n ],\r\n \"env\": {\r\n \"DASHSCOPE_API_KEY\": \"${env:DASHSCOPE_API_KEY}\"\r\n },\r\n \"alwaysAllow\": [\r\n \"analyze_video\",\r\n \"summarize_video\",\r\n \"analyze_video_scenes\",\r\n \"analyze_video_custom\",\r\n \"validate_video_source\"\r\n ],\r\n \"disabled\": false\r\n }\r\n }\r\n}\r\n```\r\n\r\n### Python API\r\n\r\n```python\r\nimport asyncio\r\nfrom aigroup_video_mcp.core.analyzer import get_analyzer, create_video_source\r\n\r\nasync def analyze_video():\r\n # \u521b\u5efa\u5206\u6790\u5668\r\n analyzer = get_analyzer(async_mode=True)\r\n \r\n # \u521b\u5efa\u89c6\u9891\u6e90\r\n video_source = create_video_source(\"path/to/video.mp4\")\r\n \r\n # \u5206\u6790\u89c6\u9891\r\n result = await analyzer.analyze(\r\n video_source, \r\n \"\u8bf7\u63cf\u8ff0\u8fd9\u4e2a\u89c6\u9891\u7684\u4e3b\u8981\u5185\u5bb9\"\r\n )\r\n \r\n if result.success:\r\n print(result.content)\r\n else:\r\n print(f\"\u5206\u6790\u5931\u8d25: {result.error}\")\r\n\r\n# \u8fd0\u884c\r\nasyncio.run(analyze_video())\r\n```\r\n\r\n## \ud83d\udee0\ufe0f \u5de5\u5177\u8be6\u7ec6\u8bf4\u660e\r\n\r\n### analyze_video\r\n\r\n\u57fa\u7840\u89c6\u9891\u5185\u5bb9\u5206\u6790\u5de5\u5177\u3002\r\n\r\n**\u53c2\u6570\uff1a**\r\n- `video_path` (\u5fc5\u9700): \u89c6\u9891\u6587\u4ef6\u8def\u5f84\u6216 URL\r\n- `prompt` (\u53ef\u9009): \u81ea\u5b9a\u4e49\u5206\u6790\u63d0\u793a\u8bcd\r\n- `model` (\u53ef\u9009): \u4f7f\u7528\u7684\u6a21\u578b\u540d\u79f0\r\n- `temperature` (\u53ef\u9009): \u6587\u672c\u751f\u6210\u6e29\u5ea6 (0.0-2.0)\r\n- `max_tokens` (\u53ef\u9009): \u6700\u5927\u54cd\u5e94 token \u6570\r\n\r\n**\u793a\u4f8b\uff1a**\r\n```json\r\n{\r\n \"video_path\": \"https://example.com/video.mp4\",\r\n \"prompt\": \"\u8bf7\u5206\u6790\u8fd9\u4e2a\u89c6\u9891\u7684\u5185\u5bb9\uff0c\u5305\u62ec\u4e3b\u8981\u573a\u666f\u3001\u4eba\u7269\u3001\u52a8\u4f5c\u548c\u4e8b\u4ef6\u3002\",\r\n \"temperature\": 0.7,\r\n \"max_tokens\": 2000\r\n}\r\n```\r\n\r\n### summarize_video\r\n\r\n\u89c6\u9891\u6458\u8981\u751f\u6210\u5de5\u5177\u3002\r\n\r\n**\u53c2\u6570\uff1a**\r\n- `video_path` (\u5fc5\u9700): \u89c6\u9891\u6587\u4ef6\u8def\u5f84\u6216 URL\r\n- `summary_type` (\u53ef\u9009): \u6458\u8981\u7c7b\u578b (`general`, `detailed`, `brief`)\r\n- `model` (\u53ef\u9009): \u4f7f\u7528\u7684\u6a21\u578b\u540d\u79f0\r\n- `temperature` (\u53ef\u9009): \u6587\u672c\u751f\u6210\u6e29\u5ea6\r\n- `max_tokens` (\u53ef\u9009): \u6700\u5927\u54cd\u5e94 token \u6570\r\n\r\n### analyze_video_scenes\r\n\r\n\u89c6\u9891\u573a\u666f\u5206\u6790\u5de5\u5177\u3002\r\n\r\n**\u53c2\u6570\uff1a**\r\n- `video_path` (\u5fc5\u9700): \u89c6\u9891\u6587\u4ef6\u8def\u5f84\u6216 URL\r\n- `scene_detection` (\u53ef\u9009): \u662f\u5426\u68c0\u6d4b\u573a\u666f\u8f6c\u6362\r\n- `detailed_analysis` (\u53ef\u9009): \u662f\u5426\u63d0\u4f9b\u8be6\u7ec6\u5206\u6790\r\n- `model` (\u53ef\u9009): \u4f7f\u7528\u7684\u6a21\u578b\u540d\u79f0\r\n\r\n### analyze_video_custom\r\n\r\n\u81ea\u5b9a\u4e49\u89c6\u9891\u5206\u6790\u5de5\u5177\u3002\r\n\r\n**\u53c2\u6570\uff1a**\r\n- `video_path` (\u5fc5\u9700): \u89c6\u9891\u6587\u4ef6\u8def\u5f84\u6216 URL\r\n- `custom_prompt` (\u5fc5\u9700): \u81ea\u5b9a\u4e49\u5206\u6790\u63d0\u793a\u8bcd\r\n- `analysis_focus` (\u53ef\u9009): \u5206\u6790\u7126\u70b9\r\n- `output_format` (\u53ef\u9009): \u8f93\u51fa\u683c\u5f0f\r\n- `language` (\u53ef\u9009): \u8f93\u51fa\u8bed\u8a00\r\n\r\n### validate_video_source\r\n\r\n\u89c6\u9891\u6e90\u9a8c\u8bc1\u5de5\u5177\u3002\r\n\r\n**\u53c2\u6570\uff1a**\r\n- `video_path` (\u5fc5\u9700): \u89c6\u9891\u6587\u4ef6\u8def\u5f84\u6216 URL\r\n- `check_accessibility` (\u53ef\u9009): \u662f\u5426\u68c0\u67e5\u53ef\u8bbf\u95ee\u6027\r\n- `check_format` (\u53ef\u9009): \u662f\u5426\u68c0\u67e5\u683c\u5f0f\u517c\u5bb9\u6027\r\n- `check_size` (\u53ef\u9009): \u662f\u5426\u68c0\u67e5\u6587\u4ef6\u5927\u5c0f\r\n- `detailed_info` (\u53ef\u9009): \u662f\u5426\u8fd4\u56de\u8be6\u7ec6\u4fe1\u606f\r\n\r\n## \ud83d\udcca \u652f\u6301\u7684\u89c6\u9891\u683c\u5f0f\r\n\r\n- MP4\r\n- AVI\r\n- MOV\r\n- MKV\r\n- WebM\r\n- FLV\r\n\r\n## \u2699\ufe0f \u914d\u7f6e\u9009\u9879\r\n\r\n### \u73af\u5883\u53d8\u91cf\r\n\r\n| \u53d8\u91cf\u540d | \u8bf4\u660e | \u9ed8\u8ba4\u503c |\r\n|--------|------|--------|\r\n| `DASHSCOPE_API_KEY` | DashScope API \u5bc6\u94a5 | *\u5fc5\u9700* |\r\n| `VIDEO__MAX_FILE_SIZE` | \u6700\u5927\u6587\u4ef6\u5927\u5c0f\uff08\u5b57\u8282\uff09 | 104857600 (100MB) |\r\n| `VIDEO__MAX_DURATION` | \u6700\u5927\u89c6\u9891\u65f6\u957f\uff08\u79d2\uff09 | 3600 (1\u5c0f\u65f6) |\r\n| `MCP__MAX_CONCURRENT_REQUESTS` | \u6700\u5927\u5e76\u53d1\u8bf7\u6c42\u6570 | 10 |\r\n| `LOG__LEVEL` | \u65e5\u5fd7\u7ea7\u522b | INFO |\r\n| `ENVIRONMENT` | \u8fd0\u884c\u73af\u5883 | production |\r\n| `DEBUG` | \u8c03\u8bd5\u6a21\u5f0f | false |\r\n\r\n### \u914d\u7f6e\u6587\u4ef6\r\n\r\n\u9879\u76ee\u652f\u6301\u901a\u8fc7 `.env` \u6587\u4ef6\u8fdb\u884c\u914d\u7f6e\u3002\u6240\u6709\u73af\u5883\u53d8\u91cf\u90fd\u53ef\u4ee5\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u8bbe\u7f6e\u3002\r\n\r\n## \ud83d\udd12 \u5b89\u5168\u7279\u6027\r\n\r\n- **\u6587\u4ef6\u5927\u5c0f\u9650\u5236**\uff1a\u9632\u6b62\u8fc7\u5927\u6587\u4ef6\u4e0a\u4f20\r\n- **\u683c\u5f0f\u9a8c\u8bc1**\uff1a\u53ea\u652f\u6301\u6307\u5b9a\u7684\u89c6\u9891\u683c\u5f0f\r\n- **\u57df\u540d\u767d\u540d\u5355/\u9ed1\u540d\u5355**\uff1a\u63a7\u5236\u5141\u8bb8\u8bbf\u95ee\u7684 URL \u57df\u540d\r\n- **\u901f\u7387\u9650\u5236**\uff1a\u9632\u6b62 API \u6ee5\u7528\r\n- **\u8f93\u5165\u9a8c\u8bc1**\uff1a\u4e25\u683c\u7684\u53c2\u6570\u9a8c\u8bc1\r\n\r\n## \ud83d\udcc8 \u76d1\u63a7\u548c\u7edf\u8ba1\r\n\r\n\u670d\u52a1\u5668\u5185\u7f6e\u4e86\u4f7f\u7528\u7edf\u8ba1\u548c\u76d1\u63a7\u529f\u80fd\uff1a\r\n\r\n- **\u4f7f\u7528\u7edf\u8ba1**\uff1a\u5de5\u5177\u548c\u8d44\u6e90\u7684\u4f7f\u7528\u9891\u7387\r\n- **\u6027\u80fd\u76d1\u63a7**\uff1a\u54cd\u5e94\u65f6\u95f4\u548c\u6210\u529f\u7387\r\n- **\u5065\u5eb7\u68c0\u67e5**\uff1a\u7cfb\u7edf\u72b6\u6001\u548c\u7ec4\u4ef6\u5065\u5eb7\r\n- **\u8d44\u6e90\u76d1\u63a7**\uff1aCPU\u3001\u5185\u5b58\u3001\u78c1\u76d8\u4f7f\u7528\u60c5\u51b5\r\n\r\n\u8bbf\u95ee\u7edf\u8ba1\u4fe1\u606f\uff1a\r\n\r\n```bash\r\n# \u67e5\u770b\u4f7f\u7528\u7edf\u8ba1\r\ncurl http://localhost:3001/resources/stats://usage\r\n\r\n# \u67e5\u770b\u7cfb\u7edf\u72b6\u6001\r\ncurl http://localhost:3001/resources/status://system\r\n```\r\n\r\n## \ud83d\udc1b \u6545\u969c\u6392\u9664\r\n\r\n### \u5e38\u89c1\u95ee\u9898\r\n\r\n1. **API Key \u672a\u8bbe\u7f6e**\r\n ```\r\n Error: DashScope API key is required\r\n ```\r\n \u89e3\u51b3\u65b9\u6848\uff1a\u8bbe\u7f6e `DASHSCOPE_API_KEY` \u73af\u5883\u53d8\u91cf\r\n\r\n2. **\u4e0d\u652f\u6301\u7684\u89c6\u9891\u683c\u5f0f**\r\n ```\r\n Error: Unsupported format: xxx\r\n ```\r\n \u89e3\u51b3\u65b9\u6848\uff1a\u8f6c\u6362\u89c6\u9891\u4e3a\u652f\u6301\u7684\u683c\u5f0f\uff08MP4, AVI, MOV, MKV, WebM, FLV\uff09\r\n\r\n3. **\u6587\u4ef6\u8fc7\u5927**\r\n ```\r\n Error: File too large\r\n ```\r\n \u89e3\u51b3\u65b9\u6848\uff1a\u538b\u7f29\u89c6\u9891\u6216\u8c03\u6574 `VIDEO__MAX_FILE_SIZE` \u914d\u7f6e\r\n\r\n4. **\u7f51\u7edc\u8fde\u63a5\u95ee\u9898**\r\n ```\r\n Error: Failed to connect to DashScope API\r\n ```\r\n \u89e3\u51b3\u65b9\u6848\uff1a\u68c0\u67e5\u7f51\u7edc\u8fde\u63a5\u548c API Key \u662f\u5426\u6b63\u786e\r\n\r\n### \u8c03\u8bd5\u6a21\u5f0f\r\n\r\n\u542f\u7528\u8c03\u8bd5\u6a21\u5f0f\u83b7\u53d6\u66f4\u8be6\u7ec6\u7684\u65e5\u5fd7\uff1a\r\n\r\n```bash\r\npython -m aigroup_video_mcp.main --debug serve\r\n```\r\n\r\n## \ud83e\udd1d \u8d21\u732e\r\n\r\n\u6b22\u8fce\u8d21\u732e\u4ee3\u7801\uff01\u8bf7\u9075\u5faa\u4ee5\u4e0b\u6b65\u9aa4\uff1a\r\n\r\n1. Fork \u9879\u76ee\r\n2. \u521b\u5efa\u7279\u6027\u5206\u652f (`git checkout -b feature/AmazingFeature`)\r\n3. \u63d0\u4ea4\u66f4\u6539 (`git commit -m 'Add some AmazingFeature'`)\r\n4. \u63a8\u9001\u5230\u5206\u652f (`git push origin feature/AmazingFeature`)\r\n5. \u521b\u5efa Pull Request\r\n\r\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\r\n\r\n\u8be5\u9879\u76ee\u4f7f\u7528 MIT \u8bb8\u53ef\u8bc1\u3002\u8be6\u60c5\u8bf7\u53c2\u9605 [LICENSE](LICENSE) \u6587\u4ef6\u3002\r\n\r\n## \ud83d\ude4f \u81f4\u8c22\r\n\r\n- [\u963f\u91cc\u4e91 DashScope](https://dashscope.aliyun.com/) - \u63d0\u4f9b\u5f3a\u5927\u7684\u591a\u6a21\u6001 AI \u80fd\u529b\r\n- [Model Context Protocol](https://modelcontextprotocol.io/) - \u63d0\u4f9b\u6807\u51c6\u5316\u7684\u6a21\u578b\u4ea4\u4e92\u534f\u8bae\r\n- [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) - \u63d0\u4f9b Python MCP \u5b9e\u73b0\r\n\r\n## \ud83d\udcde \u652f\u6301\r\n\r\n\u5982\u679c\u4f60\u9047\u5230\u4efb\u4f55\u95ee\u9898\u6216\u6709\u5efa\u8bae\uff0c\u8bf7\uff1a\r\n\r\n1. \u67e5\u770b [\u5e38\u89c1\u95ee\u9898](README.md#\u6545\u969c\u6392\u9664) \u90e8\u5206\r\n2. \u63d0\u4ea4 [Issue](https://github.com/jackdark425/aigroup-video-mcp/issues)\r\n3. \u8054\u7cfb\u5f00\u53d1\u56e2\u961f\uff1ateam@aigroup.com\r\n\r\n---\r\n\r\n**Made with \u2764\ufe0f by Aigroup Team**\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A MCP server for video multimodal understanding based on Alibaba Cloud DashScope",
"version": "1.1.1",
"project_urls": {
"Bug Tracker": "https://github.com/aigroup/aigroup-video-mcp/issues",
"Documentation": "https://github.com/aigroup/aigroup-video-mcp#readme",
"Homepage": "https://github.com/aigroup/aigroup-video-mcp",
"Repository": "https://github.com/aigroup/aigroup-video-mcp"
},
"split_keywords": [
"mcp",
" video",
" ai",
" dashscope",
" multimodal"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "73c6f8f6f214e8f63c5c8a0eb28be4c04350a13d7d2aacb41e5f225cb73563a2",
"md5": "50896708a70fdbc0250dffb74f204a46",
"sha256": "de121f5209cba41eb5f84566a75fdae645aa5c91cf5747a5b4b8ca37f1439185"
},
"downloads": -1,
"filename": "aigroup_video_mcp-1.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "50896708a70fdbc0250dffb74f204a46",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 47958,
"upload_time": "2025-08-26T07:52:07",
"upload_time_iso_8601": "2025-08-26T07:52:07.303718Z",
"url": "https://files.pythonhosted.org/packages/73/c6/f8f6f214e8f63c5c8a0eb28be4c04350a13d7d2aacb41e5f225cb73563a2/aigroup_video_mcp-1.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ba04ae868f673d9f895c358002944c46fca7e9fa89672ef38ddc902683c3edc5",
"md5": "13964311e2eb800bc71bfe9dc1f3ed19",
"sha256": "700881cb706e9779e185dc98c6cf0e2832eec2a3c6aff6d58102d78800ec3730"
},
"downloads": -1,
"filename": "aigroup_video_mcp-1.1.1.tar.gz",
"has_sig": false,
"md5_digest": "13964311e2eb800bc71bfe9dc1f3ed19",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 42560,
"upload_time": "2025-08-26T07:52:08",
"upload_time_iso_8601": "2025-08-26T07:52:08.448546Z",
"url": "https://files.pythonhosted.org/packages/ba/04/ae868f673d9f895c358002944c46fca7e9fa89672ef38ddc902683c3edc5/aigroup_video_mcp-1.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-26 07:52:08",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "aigroup",
"github_project": "aigroup-video-mcp",
"github_not_found": true,
"lcname": "aigroup-video-mcp"
}