Name | media-agent-mcp JSON |
Version |
0.2.0
JSON |
| download |
home_page | None |
Summary | A Model Context Protocol server for media processing with AI tools |
upload_time | 2025-07-26 04:31:27 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.12 |
license | None |
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"
}