🎵 音乐媒体MCP服务器
生成人工智能音乐视频的MCP(模型上下文协议)服务器。给它一个图像或视频,它将分析视觉内容,使用谷歌的Lyria 3模型创作匹配的配乐,将所有内容与FFmpeg合并,并返回可播放的视频伪影。
管道
Source Media (image/video URL)
→ Gemini Vision analyzes the visual content (if no prompt given)
→ Lyria 3 generates a 30-second AI music track
→ FFmpeg merges audio + media into a single .mp4
→ Uploads to Google Cloud Storage
→ Returns an HTML artifact with an inline video player特性
- 自动音乐提示 --如果没有提供音乐描述,Gemini Vision会分析图像/视频并自动生成合适的音乐提示
- 多种媒体类型 --支持图像(.jpg、.png、.webp)和视频(.mp4、.mov)
- 智能视频处理 --图像循环30秒,短视频循环填充,长视频修剪30秒
- HTML工件输出 --返回一个风格化的视频播放器,MCP兼容的聊天机器人会在线渲染该播放器
- 云运行就绪 --只需一个命令即可部署到Google Cloud Run
先决条件
- Python 3.10+
- FFmpeg 已安装并打开
PATH
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeg- 谷歌云 项目包括:
- Vertex AI API已启用(Lyria lyria-002 +双子座 gemini-2.0-flash-001) - 用于输出存储的GCS存储桶(具有公共读取权限或签名URL) - 应用程序默认凭据:
gcloud auth application-default login设置
- 克隆并安装:
git clone https://github.com/joshndala/music-media-mcp.git
cd music-media-mcp
python -m venv .venv
source .venv/bin/activate
pip install -e .- 配置环境:
cp .env.example .env
# Edit .env with your GCP project ID and GCS bucket name- 设置GCS CORS (聊天机器人工件中的视频播放所需):
# Create cors.json
echo '[{"origin":["*"],"method":["GET"],"responseHeader":["Content-Type","Content-Length","Range"],"maxAgeSeconds":3600}]' > cors.json
gsutil cors set cors.json gs://YOUR_BUCKET_NAME本地运行
# stdio transport (for Claude Desktop and other MCP desktop clients)
python server.py
# SSE transport (for web-based MCP clients)
python server.py --transport sse --port 8000
# Test with MCP Inspector
npx @modelcontextprotocol/inspector
# Then connect to http://localhost:8000/sse部署到云运行
# Build the container
gcloud builds submit \
--tag us-central1-docker.pkg.dev/YOUR_PROJECT/YOUR_REPO/music-media-server \
--project YOUR_PROJECT
# Deploy
gcloud run deploy music-media-server \
--image us-central1-docker.pkg.dev/YOUR_PROJECT/YOUR_REPO/music-media-server \
--region us-central1 \
--platform managed \
--allow-unauthenticated \
--set-env-vars "GCP_PROJECT_ID=YOUR_PROJECT,GCS_BUCKET_NAME=YOUR_BUCKET,GCP_LOCATION=us-central1" \
--memory 2Gi \
--timeout 300 \
--project YOUR_PROJECT您的SSE端点将位于: https://YOUR_SERVICE_URL/sse
MCP客户端配置
克劳德桌面(claude_desktop_config.json)
{
"mcpServers": {
"music-media": {
"command": "/path/to/.venv/bin/python",
"args": ["/path/to/server.py", "--transport", "stdio"],
"env": {
"GCP_PROJECT_ID": "your-project-id",
"GCS_BUCKET_NAME": "your-bucket-name",
"GCP_LOCATION": "us-central1"
}
}
}
}网络/聊天机器人(SSE)
将MCP客户端指向已部署的Cloud Run URL:
https://your-service-url.run.app/sse工具参考
generate_and_merge_media
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
source_media_url | string | ✅ | 指向源图像或视频的直接URL |
music_prompt | string | ❌ | 音乐风格描述(如果省略,则自动生成) |
退货: 一个完整的HTML文档,带有内联视频播放器。
示例提示:
"Upbeat electronic dance music with synth arpeggios""Calm ambient piano piece evoking a misty morning""Cinematic orchestral score with soaring strings"- _(省略自动AI分析)_
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
GCP_PROJECT_ID | ✅ | — | 谷歌云项目ID |
GCS_BUCKET_NAME | ✅ | — | GCS视频上传桶 |
GCP_LOCATION | ❌ | us-central1 | 顶点AI区域 |
许可证
麻省理工学院
