media-agent-mcp


Namemedia-agent-mcp JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryA Model Context Protocol server for media processing with AI tools
upload_time2025-07-26 04:31:27
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseNone
keywords ai image mcp media processing video
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Media Agent MCP

一个基于 Model Context Protocol (MCP) 的媒体处理服务器,提供强大的AI驱动的媒体处理工具。

## 🚀 功能特性

### 核心工具 (9个)

1. **TOS存储** - 将内容保存为URL
2. **视频拼接** - 拼接多个视频文件
3. **视频帧提取** - 提取视频的最后一帧
4. **Seedream图像生成** - 使用AI模型生成图像
5. **Seedance视频生成** - 使用AI模型生成视频(支持lite和pro版本)
6. **Seededit角色维持** - 保持主要角色的一致性
7. **Seed1.6视觉语言模型** - 执行视觉任务工作流
8. **图像选择器** - 从多个图像中选择最佳的一个
9. **视频选择器** - 从多个视频中选择最佳的一个

### AI模型支持

- **Seedream**: 高质量图像生成
- **Seedance**: 视频生成(支持文本生成视频、首帧生成视频、首尾帧生成视频)
- **Seededit**: 图像编辑和角色一致性维护
- **Seed1.6**: 多模态视觉语言理解

## 📋 系统要求

- Python >= 3.12
- 支持的操作系统:macOS, Linux, Windows

## 🛠️ 安装

### 方法一:使用 UVX(推荐)

```bash
uvx media-agent-mcp
```

### 方法二:本地开发安装

#### 1. 克隆仓库

```bash
git clone <repository-url>
cd media-agent-mcp
```

#### 2. 安装依赖

使用 uv(推荐):

```bash
uv sync
```

或使用 pip:

```bash
pip install -e .
```

#### 3. 配置环境变量

复制环境变量模板并填写配置:

```bash
cp .env.template .env
```

编辑 `.env` 文件,填写以下必要配置:

```env
# TOS存储配置
TOS_ACCESS_KEY=your_tos_access_key_here
TOS_SECRET_KEY=your_tos_secret_key_here
TOS_BUCKET_NAME=your_bucket_name_here
TOS_ENDPOINT=tos-ap-southeast-1.bytepluses.com
TOS_REGION=ap-southeast-1

# 火山引擎视觉智能SDK配置
VOLC_ACCESS_KEY=your_volcengine_access_key_here
VOLC_SECRET_KEY=your_volcengine_secret_key_here

# BytePlus ModelArk API配置
ARK_API_KEY=your_ark_api_key_here
ARK_BASE_URL=https://ark.ap-southeast.bytepluses.com

# AI模型端点配置
SEEDANCE_EP=seedance-1-0-lite
SEEDREAM_EP=seedream-1-0
SEEDEDIT_EP=seededit-3-0
VLM_EP=seed-1-6-chat
```

## 🚀 使用方法

### 启动MCP服务器

#### 使用 UVX

```bash
uvx media-agent-mcp
```

#### 使用 UV(本地开发)

```bash
uv run media-agent-mcp
```

#### 使用stdio传输(默认)

```bash
media-agent-mcp
```

#### 使用SSE传输

```bash
media-agent-mcp --transport sse --host 127.0.0.1 --port 8000
```

#### 直接运行服务器文件

```bash
cd src
python -m media_agent_mcp.server
```

### 命令行选项

```bash
media-agent-mcp --help
```

可用选项:
- `--transport`: 传输方式 (sse 或 stdio,默认: stdio)
- `--host`: SSE传输的主机地址 (默认: 127.0.0.1)
- `--port`: SSE传输的端口 (默认: 8000)
- `--version`: 显示版本信息

### 与MCP客户端集成

#### Claude Desktop配置

在Claude Desktop的配置文件中添加:

```json
{
  "mcpServers": {
    "media-agent": {
      "command": "uvx",
      "args": ["media-agent-mcp"]
    }
  }
}
```

#### VS Code MCP扩展配置

```json
{
  "mcp.servers": {
    "media-agent": {
      "command": "uvx",
      "args": ["media-agent-mcp"]
    }
  }
}
```

## 🔧 API工具详细说明

### 1. 视频拼接工具

```python
video_concat_tool(video_urls: list[str]) -> str
```

拼接多个视频URL并上传到TOS。

**参数:**
- `video_urls`: 要按顺序拼接的视频URL列表

**返回:** JSON字符串,包含状态、数据和消息

**示例:**
```python
result = video_concat_tool([
    "https://example.com/video1.mp4",
    "https://example.com/video2.mp4"
])
```

### 2. 视频帧提取工具

```python
video_last_frame_tool(video_path: str) -> str
```

从视频文件中提取最后一帧并上传到TOS。

**参数:**
- `video_path`: 视频文件路径或URL

**返回:** JSON字符串,包含状态、数据和消息

### 3. Seedream图像生成工具

```python
seedream_generate_image_tool(
    prompt: str, 
    style: str = "realistic", 
    size: str = "1024x1024"
) -> str
```

使用Seedream AI模型生成图像。

**参数:**
- `prompt`: 图像描述文本
- `style`: 图像风格(realistic, artistic, cartoon等)
- `size`: 图像尺寸(如"1024x1024")

**示例:**
```python
result = seedream_generate_image_tool(
    prompt="一只可爱的小猫坐在花园里",
    style="realistic",
    size="1024x1024"
)
```

### 4. Seedance视频生成工具

```python
seedance_generate_video_tool(
    prompt: str = "", 
    first_frame_image: str = None,
    last_frame_image: str = None, 
    duration: int = 5,
    resolution: str = "720p", 
    ratio: str = "16:9"
) -> str
```

使用Seedance AI模型生成视频。

**参数:**
- `prompt`: 视频描述文本(图像转视频时可选)
- `first_frame_image`: 首帧图像的URL或base64
- `last_frame_image`: 尾帧图像的URL或base64(可选)
- `duration`: 视频时长(5或10秒)
- `resolution`: 视频分辨率(480p, 720p, 1080p)
- `ratio`: 宽高比(16:9, 4:3, 1:1, 3:4, 9:16, adaptive等)

**示例:**
```python
# 文本生成视频
result = seedance_generate_video_tool(
    prompt="一只鸟在天空中飞翔",
    duration=5,
    resolution="720p"
)

# 首帧生成视频
result = seedance_generate_video_tool(
    first_frame_image="https://example.com/first_frame.jpg",
    duration=5
)
```

### 5. 其他工具

- **Seededit角色维持工具**: 保持图像中主要角色的一致性
- **Seed1.6 VLM工具**: 执行视觉语言任务
- **图像选择器**: 从多个图像中选择最佳的一个
- **视频选择器**: 从多个视频中选择最佳的一个
- **TOS保存工具**: 将内容保存到TOS并返回URL

## 📁 项目结构

```
media-agent-mcp/
├── src/
│   └── media_agent_mcp/
│       ├── __init__.py
│       ├── server.py              # MCP服务器主文件
│       ├── ai_models/             # AI模型模块
│       │   ├── __init__.py
│       │   ├── seedream.py        # 图像生成
│       │   ├── seedance.py        # 视频生成
│       │   ├── seededit.py        # 图像编辑
│       │   └── seed16.py          # 视觉语言模型
│       ├── video/                 # 视频处理模块
│       │   ├── __init__.py
│       │   └── processor.py       # 视频处理功能
│       ├── storage/               # 存储模块
│       │   ├── __init__.py
│       │   └── tos_client.py      # TOS客户端
│       └── media_selectors/       # 媒体选择器
│           ├── __init__.py
│           ├── image_selector.py  # 图像选择
│           └── video_selector.py  # 视频选择
├── .env.template                  # 环境变量模板
├── .gitignore                     # Git忽略文件
├── pyproject.toml                 # 项目配置
├── uv.lock                        # 依赖锁定文件
└── README.md                      # 项目文档
```

## 🔑 API密钥获取

### TOS存储
1. 访问 [BytePlus TOS控制台](https://console.byteplus.com/tos)
2. 创建存储桶并获取访问密钥
3. 记录访问密钥、秘密密钥和存储桶名称

### ModelArk API
1. 访问 [BytePlus ModelArk控制台](https://console.byteplus.com/)
2. 获取API密钥
3. 选择合适的模型端点

### 火山引擎视觉智能
1. 访问 [火山引擎控制台](https://console.volcengine.com/)
2. 开通视觉智能服务
3. 获取访问密钥和秘密密钥

## 🐛 故障排除

### 常见问题

1. **相对导入错误**
   ```
   ImportError: attempted relative import with no known parent package
   ```
   **解决方案**: 使用模块方式运行:
   ```bash
   cd src
   python -m media_agent_mcp.server
   ```

2. **环境变量未设置**
   确保 `.env` 文件已正确配置所有必要的API密钥。
   
3. **依赖安装问题**
   ```bash
   pip install --upgrade pip
   pip install -e .
   ```
   
   或使用uv:
   ```bash
   uv sync --reinstall
   ```

4. **TOS上传失败**
   - 检查TOS配置是否正确
   - 确认存储桶权限设置
   - 验证网络连接

5. **AI模型调用失败**
   - 检查API密钥是否有效
   - 确认模型端点配置
   - 查看API配额和限制

## 📝 开发

### 开发环境设置

```bash
# 克隆仓库
git clone <repository-url>
cd media-agent-mcp

# 使用uv创建虚拟环境并安装依赖
uv sync

# 激活虚拟环境
source .venv/bin/activate  # Linux/macOS
# 或
.venv\Scripts\activate     # Windows
```

### 运行测试

```bash
# 运行测试套件
uv run test_server.py

# 运行特定测试
python -m pytest tests/
```

### 构建和发布

```bash
# 构建包
uv build

# 发布到PyPI
uv publish
```

### 添加新工具

1. 在相应模块中实现功能
2. 在 `server.py` 中添加 `@mcp.tool()` 装饰器
3. 添加类型注解和文档字符串
4. 更新README文档
5. 添加测试用例

### 代码规范

- 使用类型注解
- 遵循PEP 8代码风格
- 添加详细的文档字符串
- 包含错误处理
- 返回统一的JSON格式

## 📊 性能优化

- 使用异步处理提高并发性能
- 实现缓存机制减少重复计算
- 优化文件上传和下载流程
- 合理设置超时和重试机制

## 🔒 安全考虑

- 不要在代码中硬编码API密钥
- 使用环境变量管理敏感信息
- 验证输入参数防止注入攻击
- 限制文件上传大小和类型
- 定期更新依赖包

## 📄 许可证

MIT License

## 🤝 贡献

欢迎提交Issue和Pull Request!

### 贡献流程

1. Fork 仓库
2. 创建功能分支
3. 提交更改
4. 添加测试
5. 提交Pull Request

## 📞 支持

如有问题,请:

1. 查看本文档的故障排除部分
2. 搜索已有的Issues
3. 提交新的Issue
4. 联系开发团队

## 📈 版本历史

- **v0.1.0** (Alpha) - 初始版本,包含9个核心工具

---

**版本**: 0.1.0  
**状态**: Alpha  
**Python要求**: >= 3.12  
**维护者**: Media Agent Team
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "media-agent-mcp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "ai, image, mcp, media, processing, video",
    "author": null,
    "author_email": "Media Agent Team <team@mediaagent.com>",
    "download_url": "https://files.pythonhosted.org/packages/78/3d/b385c482ff38c215f912b54ec56f0f20edda1f073ca082996b8075136b55/media_agent_mcp-0.2.0.tar.gz",
    "platform": null,
    "description": "# Media Agent MCP\n\n\u4e00\u4e2a\u57fa\u4e8e Model Context Protocol (MCP) \u7684\u5a92\u4f53\u5904\u7406\u670d\u52a1\u5668\uff0c\u63d0\u4f9b\u5f3a\u5927\u7684AI\u9a71\u52a8\u7684\u5a92\u4f53\u5904\u7406\u5de5\u5177\u3002\n\n## \ud83d\ude80 \u529f\u80fd\u7279\u6027\n\n### \u6838\u5fc3\u5de5\u5177 (9\u4e2a)\n\n1. **TOS\u5b58\u50a8** - \u5c06\u5185\u5bb9\u4fdd\u5b58\u4e3aURL\n2. **\u89c6\u9891\u62fc\u63a5** - \u62fc\u63a5\u591a\u4e2a\u89c6\u9891\u6587\u4ef6\n3. **\u89c6\u9891\u5e27\u63d0\u53d6** - \u63d0\u53d6\u89c6\u9891\u7684\u6700\u540e\u4e00\u5e27\n4. **Seedream\u56fe\u50cf\u751f\u6210** - \u4f7f\u7528AI\u6a21\u578b\u751f\u6210\u56fe\u50cf\n5. **Seedance\u89c6\u9891\u751f\u6210** - \u4f7f\u7528AI\u6a21\u578b\u751f\u6210\u89c6\u9891\uff08\u652f\u6301lite\u548cpro\u7248\u672c\uff09\n6. **Seededit\u89d2\u8272\u7ef4\u6301** - \u4fdd\u6301\u4e3b\u8981\u89d2\u8272\u7684\u4e00\u81f4\u6027\n7. **Seed1.6\u89c6\u89c9\u8bed\u8a00\u6a21\u578b** - \u6267\u884c\u89c6\u89c9\u4efb\u52a1\u5de5\u4f5c\u6d41\n8. **\u56fe\u50cf\u9009\u62e9\u5668** - \u4ece\u591a\u4e2a\u56fe\u50cf\u4e2d\u9009\u62e9\u6700\u4f73\u7684\u4e00\u4e2a\n9. **\u89c6\u9891\u9009\u62e9\u5668** - \u4ece\u591a\u4e2a\u89c6\u9891\u4e2d\u9009\u62e9\u6700\u4f73\u7684\u4e00\u4e2a\n\n### AI\u6a21\u578b\u652f\u6301\n\n- **Seedream**: \u9ad8\u8d28\u91cf\u56fe\u50cf\u751f\u6210\n- **Seedance**: \u89c6\u9891\u751f\u6210\uff08\u652f\u6301\u6587\u672c\u751f\u6210\u89c6\u9891\u3001\u9996\u5e27\u751f\u6210\u89c6\u9891\u3001\u9996\u5c3e\u5e27\u751f\u6210\u89c6\u9891\uff09\n- **Seededit**: \u56fe\u50cf\u7f16\u8f91\u548c\u89d2\u8272\u4e00\u81f4\u6027\u7ef4\u62a4\n- **Seed1.6**: \u591a\u6a21\u6001\u89c6\u89c9\u8bed\u8a00\u7406\u89e3\n\n## \ud83d\udccb \u7cfb\u7edf\u8981\u6c42\n\n- Python >= 3.12\n- \u652f\u6301\u7684\u64cd\u4f5c\u7cfb\u7edf\uff1amacOS, Linux, Windows\n\n## \ud83d\udee0\ufe0f \u5b89\u88c5\n\n### \u65b9\u6cd5\u4e00\uff1a\u4f7f\u7528 UVX\uff08\u63a8\u8350\uff09\n\n```bash\nuvx media-agent-mcp\n```\n\n### \u65b9\u6cd5\u4e8c\uff1a\u672c\u5730\u5f00\u53d1\u5b89\u88c5\n\n#### 1. \u514b\u9686\u4ed3\u5e93\n\n```bash\ngit clone <repository-url>\ncd media-agent-mcp\n```\n\n#### 2. \u5b89\u88c5\u4f9d\u8d56\n\n\u4f7f\u7528 uv\uff08\u63a8\u8350\uff09\uff1a\n\n```bash\nuv sync\n```\n\n\u6216\u4f7f\u7528 pip\uff1a\n\n```bash\npip install -e .\n```\n\n#### 3. \u914d\u7f6e\u73af\u5883\u53d8\u91cf\n\n\u590d\u5236\u73af\u5883\u53d8\u91cf\u6a21\u677f\u5e76\u586b\u5199\u914d\u7f6e\uff1a\n\n```bash\ncp .env.template .env\n```\n\n\u7f16\u8f91 `.env` \u6587\u4ef6\uff0c\u586b\u5199\u4ee5\u4e0b\u5fc5\u8981\u914d\u7f6e\uff1a\n\n```env\n# TOS\u5b58\u50a8\u914d\u7f6e\nTOS_ACCESS_KEY=your_tos_access_key_here\nTOS_SECRET_KEY=your_tos_secret_key_here\nTOS_BUCKET_NAME=your_bucket_name_here\nTOS_ENDPOINT=tos-ap-southeast-1.bytepluses.com\nTOS_REGION=ap-southeast-1\n\n# \u706b\u5c71\u5f15\u64ce\u89c6\u89c9\u667a\u80fdSDK\u914d\u7f6e\nVOLC_ACCESS_KEY=your_volcengine_access_key_here\nVOLC_SECRET_KEY=your_volcengine_secret_key_here\n\n# BytePlus ModelArk API\u914d\u7f6e\nARK_API_KEY=your_ark_api_key_here\nARK_BASE_URL=https://ark.ap-southeast.bytepluses.com\n\n# AI\u6a21\u578b\u7aef\u70b9\u914d\u7f6e\nSEEDANCE_EP=seedance-1-0-lite\nSEEDREAM_EP=seedream-1-0\nSEEDEDIT_EP=seededit-3-0\nVLM_EP=seed-1-6-chat\n```\n\n## \ud83d\ude80 \u4f7f\u7528\u65b9\u6cd5\n\n### \u542f\u52a8MCP\u670d\u52a1\u5668\n\n#### \u4f7f\u7528 UVX\n\n```bash\nuvx media-agent-mcp\n```\n\n#### \u4f7f\u7528 UV\uff08\u672c\u5730\u5f00\u53d1\uff09\n\n```bash\nuv run media-agent-mcp\n```\n\n#### \u4f7f\u7528stdio\u4f20\u8f93\uff08\u9ed8\u8ba4\uff09\n\n```bash\nmedia-agent-mcp\n```\n\n#### \u4f7f\u7528SSE\u4f20\u8f93\n\n```bash\nmedia-agent-mcp --transport sse --host 127.0.0.1 --port 8000\n```\n\n#### \u76f4\u63a5\u8fd0\u884c\u670d\u52a1\u5668\u6587\u4ef6\n\n```bash\ncd src\npython -m media_agent_mcp.server\n```\n\n### \u547d\u4ee4\u884c\u9009\u9879\n\n```bash\nmedia-agent-mcp --help\n```\n\n\u53ef\u7528\u9009\u9879\uff1a\n- `--transport`: \u4f20\u8f93\u65b9\u5f0f (sse \u6216 stdio\uff0c\u9ed8\u8ba4: stdio)\n- `--host`: SSE\u4f20\u8f93\u7684\u4e3b\u673a\u5730\u5740 (\u9ed8\u8ba4: 127.0.0.1)\n- `--port`: SSE\u4f20\u8f93\u7684\u7aef\u53e3 (\u9ed8\u8ba4: 8000)\n- `--version`: \u663e\u793a\u7248\u672c\u4fe1\u606f\n\n### \u4e0eMCP\u5ba2\u6237\u7aef\u96c6\u6210\n\n#### Claude Desktop\u914d\u7f6e\n\n\u5728Claude Desktop\u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u6dfb\u52a0\uff1a\n\n```json\n{\n  \"mcpServers\": {\n    \"media-agent\": {\n      \"command\": \"uvx\",\n      \"args\": [\"media-agent-mcp\"]\n    }\n  }\n}\n```\n\n#### VS Code MCP\u6269\u5c55\u914d\u7f6e\n\n```json\n{\n  \"mcp.servers\": {\n    \"media-agent\": {\n      \"command\": \"uvx\",\n      \"args\": [\"media-agent-mcp\"]\n    }\n  }\n}\n```\n\n## \ud83d\udd27 API\u5de5\u5177\u8be6\u7ec6\u8bf4\u660e\n\n### 1. \u89c6\u9891\u62fc\u63a5\u5de5\u5177\n\n```python\nvideo_concat_tool(video_urls: list[str]) -> str\n```\n\n\u62fc\u63a5\u591a\u4e2a\u89c6\u9891URL\u5e76\u4e0a\u4f20\u5230TOS\u3002\n\n**\u53c2\u6570\uff1a**\n- `video_urls`: \u8981\u6309\u987a\u5e8f\u62fc\u63a5\u7684\u89c6\u9891URL\u5217\u8868\n\n**\u8fd4\u56de\uff1a** JSON\u5b57\u7b26\u4e32\uff0c\u5305\u542b\u72b6\u6001\u3001\u6570\u636e\u548c\u6d88\u606f\n\n**\u793a\u4f8b\uff1a**\n```python\nresult = video_concat_tool([\n    \"https://example.com/video1.mp4\",\n    \"https://example.com/video2.mp4\"\n])\n```\n\n### 2. \u89c6\u9891\u5e27\u63d0\u53d6\u5de5\u5177\n\n```python\nvideo_last_frame_tool(video_path: str) -> str\n```\n\n\u4ece\u89c6\u9891\u6587\u4ef6\u4e2d\u63d0\u53d6\u6700\u540e\u4e00\u5e27\u5e76\u4e0a\u4f20\u5230TOS\u3002\n\n**\u53c2\u6570\uff1a**\n- `video_path`: \u89c6\u9891\u6587\u4ef6\u8def\u5f84\u6216URL\n\n**\u8fd4\u56de\uff1a** JSON\u5b57\u7b26\u4e32\uff0c\u5305\u542b\u72b6\u6001\u3001\u6570\u636e\u548c\u6d88\u606f\n\n### 3. Seedream\u56fe\u50cf\u751f\u6210\u5de5\u5177\n\n```python\nseedream_generate_image_tool(\n    prompt: str, \n    style: str = \"realistic\", \n    size: str = \"1024x1024\"\n) -> str\n```\n\n\u4f7f\u7528Seedream AI\u6a21\u578b\u751f\u6210\u56fe\u50cf\u3002\n\n**\u53c2\u6570\uff1a**\n- `prompt`: \u56fe\u50cf\u63cf\u8ff0\u6587\u672c\n- `style`: \u56fe\u50cf\u98ce\u683c\uff08realistic, artistic, cartoon\u7b49\uff09\n- `size`: \u56fe\u50cf\u5c3a\u5bf8\uff08\u5982\"1024x1024\"\uff09\n\n**\u793a\u4f8b\uff1a**\n```python\nresult = seedream_generate_image_tool(\n    prompt=\"\u4e00\u53ea\u53ef\u7231\u7684\u5c0f\u732b\u5750\u5728\u82b1\u56ed\u91cc\",\n    style=\"realistic\",\n    size=\"1024x1024\"\n)\n```\n\n### 4. Seedance\u89c6\u9891\u751f\u6210\u5de5\u5177\n\n```python\nseedance_generate_video_tool(\n    prompt: str = \"\", \n    first_frame_image: str = None,\n    last_frame_image: str = None, \n    duration: int = 5,\n    resolution: str = \"720p\", \n    ratio: str = \"16:9\"\n) -> str\n```\n\n\u4f7f\u7528Seedance AI\u6a21\u578b\u751f\u6210\u89c6\u9891\u3002\n\n**\u53c2\u6570\uff1a**\n- `prompt`: \u89c6\u9891\u63cf\u8ff0\u6587\u672c\uff08\u56fe\u50cf\u8f6c\u89c6\u9891\u65f6\u53ef\u9009\uff09\n- `first_frame_image`: \u9996\u5e27\u56fe\u50cf\u7684URL\u6216base64\n- `last_frame_image`: \u5c3e\u5e27\u56fe\u50cf\u7684URL\u6216base64\uff08\u53ef\u9009\uff09\n- `duration`: \u89c6\u9891\u65f6\u957f\uff085\u621610\u79d2\uff09\n- `resolution`: \u89c6\u9891\u5206\u8fa8\u7387\uff08480p, 720p, 1080p\uff09\n- `ratio`: \u5bbd\u9ad8\u6bd4\uff0816:9, 4:3, 1:1, 3:4, 9:16, adaptive\u7b49\uff09\n\n**\u793a\u4f8b\uff1a**\n```python\n# \u6587\u672c\u751f\u6210\u89c6\u9891\nresult = seedance_generate_video_tool(\n    prompt=\"\u4e00\u53ea\u9e1f\u5728\u5929\u7a7a\u4e2d\u98de\u7fd4\",\n    duration=5,\n    resolution=\"720p\"\n)\n\n# \u9996\u5e27\u751f\u6210\u89c6\u9891\nresult = seedance_generate_video_tool(\n    first_frame_image=\"https://example.com/first_frame.jpg\",\n    duration=5\n)\n```\n\n### 5. \u5176\u4ed6\u5de5\u5177\n\n- **Seededit\u89d2\u8272\u7ef4\u6301\u5de5\u5177**: \u4fdd\u6301\u56fe\u50cf\u4e2d\u4e3b\u8981\u89d2\u8272\u7684\u4e00\u81f4\u6027\n- **Seed1.6 VLM\u5de5\u5177**: \u6267\u884c\u89c6\u89c9\u8bed\u8a00\u4efb\u52a1\n- **\u56fe\u50cf\u9009\u62e9\u5668**: \u4ece\u591a\u4e2a\u56fe\u50cf\u4e2d\u9009\u62e9\u6700\u4f73\u7684\u4e00\u4e2a\n- **\u89c6\u9891\u9009\u62e9\u5668**: \u4ece\u591a\u4e2a\u89c6\u9891\u4e2d\u9009\u62e9\u6700\u4f73\u7684\u4e00\u4e2a\n- **TOS\u4fdd\u5b58\u5de5\u5177**: \u5c06\u5185\u5bb9\u4fdd\u5b58\u5230TOS\u5e76\u8fd4\u56deURL\n\n## \ud83d\udcc1 \u9879\u76ee\u7ed3\u6784\n\n```\nmedia-agent-mcp/\n\u251c\u2500\u2500 src/\n\u2502   \u2514\u2500\u2500 media_agent_mcp/\n\u2502       \u251c\u2500\u2500 __init__.py\n\u2502       \u251c\u2500\u2500 server.py              # MCP\u670d\u52a1\u5668\u4e3b\u6587\u4ef6\n\u2502       \u251c\u2500\u2500 ai_models/             # AI\u6a21\u578b\u6a21\u5757\n\u2502       \u2502   \u251c\u2500\u2500 __init__.py\n\u2502       \u2502   \u251c\u2500\u2500 seedream.py        # \u56fe\u50cf\u751f\u6210\n\u2502       \u2502   \u251c\u2500\u2500 seedance.py        # \u89c6\u9891\u751f\u6210\n\u2502       \u2502   \u251c\u2500\u2500 seededit.py        # \u56fe\u50cf\u7f16\u8f91\n\u2502       \u2502   \u2514\u2500\u2500 seed16.py          # \u89c6\u89c9\u8bed\u8a00\u6a21\u578b\n\u2502       \u251c\u2500\u2500 video/                 # \u89c6\u9891\u5904\u7406\u6a21\u5757\n\u2502       \u2502   \u251c\u2500\u2500 __init__.py\n\u2502       \u2502   \u2514\u2500\u2500 processor.py       # \u89c6\u9891\u5904\u7406\u529f\u80fd\n\u2502       \u251c\u2500\u2500 storage/               # \u5b58\u50a8\u6a21\u5757\n\u2502       \u2502   \u251c\u2500\u2500 __init__.py\n\u2502       \u2502   \u2514\u2500\u2500 tos_client.py      # TOS\u5ba2\u6237\u7aef\n\u2502       \u2514\u2500\u2500 media_selectors/       # \u5a92\u4f53\u9009\u62e9\u5668\n\u2502           \u251c\u2500\u2500 __init__.py\n\u2502           \u251c\u2500\u2500 image_selector.py  # \u56fe\u50cf\u9009\u62e9\n\u2502           \u2514\u2500\u2500 video_selector.py  # \u89c6\u9891\u9009\u62e9\n\u251c\u2500\u2500 .env.template                  # \u73af\u5883\u53d8\u91cf\u6a21\u677f\n\u251c\u2500\u2500 .gitignore                     # Git\u5ffd\u7565\u6587\u4ef6\n\u251c\u2500\u2500 pyproject.toml                 # \u9879\u76ee\u914d\u7f6e\n\u251c\u2500\u2500 uv.lock                        # \u4f9d\u8d56\u9501\u5b9a\u6587\u4ef6\n\u2514\u2500\u2500 README.md                      # \u9879\u76ee\u6587\u6863\n```\n\n## \ud83d\udd11 API\u5bc6\u94a5\u83b7\u53d6\n\n### TOS\u5b58\u50a8\n1. \u8bbf\u95ee [BytePlus TOS\u63a7\u5236\u53f0](https://console.byteplus.com/tos)\n2. \u521b\u5efa\u5b58\u50a8\u6876\u5e76\u83b7\u53d6\u8bbf\u95ee\u5bc6\u94a5\n3. \u8bb0\u5f55\u8bbf\u95ee\u5bc6\u94a5\u3001\u79d8\u5bc6\u5bc6\u94a5\u548c\u5b58\u50a8\u6876\u540d\u79f0\n\n### ModelArk API\n1. \u8bbf\u95ee [BytePlus ModelArk\u63a7\u5236\u53f0](https://console.byteplus.com/)\n2. \u83b7\u53d6API\u5bc6\u94a5\n3. \u9009\u62e9\u5408\u9002\u7684\u6a21\u578b\u7aef\u70b9\n\n### \u706b\u5c71\u5f15\u64ce\u89c6\u89c9\u667a\u80fd\n1. \u8bbf\u95ee [\u706b\u5c71\u5f15\u64ce\u63a7\u5236\u53f0](https://console.volcengine.com/)\n2. \u5f00\u901a\u89c6\u89c9\u667a\u80fd\u670d\u52a1\n3. \u83b7\u53d6\u8bbf\u95ee\u5bc6\u94a5\u548c\u79d8\u5bc6\u5bc6\u94a5\n\n## \ud83d\udc1b \u6545\u969c\u6392\u9664\n\n### \u5e38\u89c1\u95ee\u9898\n\n1. **\u76f8\u5bf9\u5bfc\u5165\u9519\u8bef**\n   ```\n   ImportError: attempted relative import with no known parent package\n   ```\n   **\u89e3\u51b3\u65b9\u6848**: \u4f7f\u7528\u6a21\u5757\u65b9\u5f0f\u8fd0\u884c\uff1a\n   ```bash\n   cd src\n   python -m media_agent_mcp.server\n   ```\n\n2. **\u73af\u5883\u53d8\u91cf\u672a\u8bbe\u7f6e**\n   \u786e\u4fdd `.env` \u6587\u4ef6\u5df2\u6b63\u786e\u914d\u7f6e\u6240\u6709\u5fc5\u8981\u7684API\u5bc6\u94a5\u3002\n   \n3. **\u4f9d\u8d56\u5b89\u88c5\u95ee\u9898**\n   ```bash\n   pip install --upgrade pip\n   pip install -e .\n   ```\n   \n   \u6216\u4f7f\u7528uv\uff1a\n   ```bash\n   uv sync --reinstall\n   ```\n\n4. **TOS\u4e0a\u4f20\u5931\u8d25**\n   - \u68c0\u67e5TOS\u914d\u7f6e\u662f\u5426\u6b63\u786e\n   - \u786e\u8ba4\u5b58\u50a8\u6876\u6743\u9650\u8bbe\u7f6e\n   - \u9a8c\u8bc1\u7f51\u7edc\u8fde\u63a5\n\n5. **AI\u6a21\u578b\u8c03\u7528\u5931\u8d25**\n   - \u68c0\u67e5API\u5bc6\u94a5\u662f\u5426\u6709\u6548\n   - \u786e\u8ba4\u6a21\u578b\u7aef\u70b9\u914d\u7f6e\n   - \u67e5\u770bAPI\u914d\u989d\u548c\u9650\u5236\n\n## \ud83d\udcdd \u5f00\u53d1\n\n### \u5f00\u53d1\u73af\u5883\u8bbe\u7f6e\n\n```bash\n# \u514b\u9686\u4ed3\u5e93\ngit clone <repository-url>\ncd media-agent-mcp\n\n# \u4f7f\u7528uv\u521b\u5efa\u865a\u62df\u73af\u5883\u5e76\u5b89\u88c5\u4f9d\u8d56\nuv sync\n\n# \u6fc0\u6d3b\u865a\u62df\u73af\u5883\nsource .venv/bin/activate  # Linux/macOS\n# \u6216\n.venv\\Scripts\\activate     # Windows\n```\n\n### \u8fd0\u884c\u6d4b\u8bd5\n\n```bash\n# \u8fd0\u884c\u6d4b\u8bd5\u5957\u4ef6\nuv run test_server.py\n\n# \u8fd0\u884c\u7279\u5b9a\u6d4b\u8bd5\npython -m pytest tests/\n```\n\n### \u6784\u5efa\u548c\u53d1\u5e03\n\n```bash\n# \u6784\u5efa\u5305\nuv build\n\n# \u53d1\u5e03\u5230PyPI\nuv publish\n```\n\n### \u6dfb\u52a0\u65b0\u5de5\u5177\n\n1. \u5728\u76f8\u5e94\u6a21\u5757\u4e2d\u5b9e\u73b0\u529f\u80fd\n2. \u5728 `server.py` \u4e2d\u6dfb\u52a0 `@mcp.tool()` \u88c5\u9970\u5668\n3. \u6dfb\u52a0\u7c7b\u578b\u6ce8\u89e3\u548c\u6587\u6863\u5b57\u7b26\u4e32\n4. \u66f4\u65b0README\u6587\u6863\n5. \u6dfb\u52a0\u6d4b\u8bd5\u7528\u4f8b\n\n### \u4ee3\u7801\u89c4\u8303\n\n- \u4f7f\u7528\u7c7b\u578b\u6ce8\u89e3\n- \u9075\u5faaPEP 8\u4ee3\u7801\u98ce\u683c\n- \u6dfb\u52a0\u8be6\u7ec6\u7684\u6587\u6863\u5b57\u7b26\u4e32\n- \u5305\u542b\u9519\u8bef\u5904\u7406\n- \u8fd4\u56de\u7edf\u4e00\u7684JSON\u683c\u5f0f\n\n## \ud83d\udcca \u6027\u80fd\u4f18\u5316\n\n- \u4f7f\u7528\u5f02\u6b65\u5904\u7406\u63d0\u9ad8\u5e76\u53d1\u6027\u80fd\n- \u5b9e\u73b0\u7f13\u5b58\u673a\u5236\u51cf\u5c11\u91cd\u590d\u8ba1\u7b97\n- \u4f18\u5316\u6587\u4ef6\u4e0a\u4f20\u548c\u4e0b\u8f7d\u6d41\u7a0b\n- \u5408\u7406\u8bbe\u7f6e\u8d85\u65f6\u548c\u91cd\u8bd5\u673a\u5236\n\n## \ud83d\udd12 \u5b89\u5168\u8003\u8651\n\n- \u4e0d\u8981\u5728\u4ee3\u7801\u4e2d\u786c\u7f16\u7801API\u5bc6\u94a5\n- \u4f7f\u7528\u73af\u5883\u53d8\u91cf\u7ba1\u7406\u654f\u611f\u4fe1\u606f\n- \u9a8c\u8bc1\u8f93\u5165\u53c2\u6570\u9632\u6b62\u6ce8\u5165\u653b\u51fb\n- \u9650\u5236\u6587\u4ef6\u4e0a\u4f20\u5927\u5c0f\u548c\u7c7b\u578b\n- \u5b9a\u671f\u66f4\u65b0\u4f9d\u8d56\u5305\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\nMIT License\n\n## \ud83e\udd1d \u8d21\u732e\n\n\u6b22\u8fce\u63d0\u4ea4Issue\u548cPull Request\uff01\n\n### \u8d21\u732e\u6d41\u7a0b\n\n1. Fork \u4ed3\u5e93\n2. \u521b\u5efa\u529f\u80fd\u5206\u652f\n3. \u63d0\u4ea4\u66f4\u6539\n4. \u6dfb\u52a0\u6d4b\u8bd5\n5. \u63d0\u4ea4Pull Request\n\n## \ud83d\udcde \u652f\u6301\n\n\u5982\u6709\u95ee\u9898\uff0c\u8bf7\uff1a\n\n1. \u67e5\u770b\u672c\u6587\u6863\u7684\u6545\u969c\u6392\u9664\u90e8\u5206\n2. \u641c\u7d22\u5df2\u6709\u7684Issues\n3. \u63d0\u4ea4\u65b0\u7684Issue\n4. \u8054\u7cfb\u5f00\u53d1\u56e2\u961f\n\n## \ud83d\udcc8 \u7248\u672c\u5386\u53f2\n\n- **v0.1.0** (Alpha) - \u521d\u59cb\u7248\u672c\uff0c\u5305\u542b9\u4e2a\u6838\u5fc3\u5de5\u5177\n\n---\n\n**\u7248\u672c**: 0.1.0  \n**\u72b6\u6001**: Alpha  \n**Python\u8981\u6c42**: >= 3.12  \n**\u7ef4\u62a4\u8005**: Media Agent Team",
    "bugtrack_url": null,
    "license": null,
    "summary": "A Model Context Protocol server for media processing with AI tools",
    "version": "0.2.0",
    "project_urls": null,
    "split_keywords": [
        "ai",
        " image",
        " mcp",
        " media",
        " processing",
        " video"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4c67a802f82451718c6c5592905c7a054042bd7b7e23f5f0397ac351816977ea",
                "md5": "63658423aa919a3cb1a134282d1178d6",
                "sha256": "9f145d1693c0b51a027b4a2990e01269c01505c003e5625562c66d36ee660b2d"
            },
            "downloads": -1,
            "filename": "media_agent_mcp-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "63658423aa919a3cb1a134282d1178d6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 26659,
            "upload_time": "2025-07-26T04:31:26",
            "upload_time_iso_8601": "2025-07-26T04:31:26.364235Z",
            "url": "https://files.pythonhosted.org/packages/4c/67/a802f82451718c6c5592905c7a054042bd7b7e23f5f0397ac351816977ea/media_agent_mcp-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "783db385c482ff38c215f912b54ec56f0f20edda1f073ca082996b8075136b55",
                "md5": "fd3b0e1a57de1075646606e866b8c965",
                "sha256": "3933d38bd0ecba3e6e409d95d941d8f79d05ef2aad3fb3bb2254c5a2ff806181"
            },
            "downloads": -1,
            "filename": "media_agent_mcp-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "fd3b0e1a57de1075646606e866b8c965",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 63279,
            "upload_time": "2025-07-26T04:31:27",
            "upload_time_iso_8601": "2025-07-26T04:31:27.936144Z",
            "url": "https://files.pythonhosted.org/packages/78/3d/b385c482ff38c215f912b54ec56f0f20edda1f073ca082996b8075136b55/media_agent_mcp-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-26 04:31:27",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "media-agent-mcp"
}
        
Elapsed time: 1.40720s