内容
# MCP Google Vertex AI 服务器
Model Context Protocol(MCP)服务器,利用 Google Vertex AI 的 Imagen 和 Veo 模型提供 AI 驱动的图像和视频生成能力。
## 功能特点
- 🎨 **图像生成**: 使用 Google 的 Imagen 模型创建 AI 图像
- 🎬 **视频生成**: 使用 Google 的 Veo 模型生成 AI 视频
- 💾 **本地存储**: 自动将生成的內容保存到本地服务器存储
- 🔒 **安全配置**: 基于环境的 API 凭证配置
- 🚀 **Express v5**: 构建在最新的 Express 框架上
- 📝 **TypeScript**: 完全类型化,以提供更好的开发体验
- ♻️ **DRY 原则**: 清晰、易维护且可重用的代码架构
## 先决条件
- Node.js 24.0.0 或更高版本
- 启用了 Vertex AI API 的 Google Cloud 项目
- 具有适当权限的服务帳戶凭证
## MCP 工具
### 生成图像
使用配置的 Imagen 模型(通过 `VERTEX_AI_IMAGE_MODEL` 设置)生成 AI 图像。
**参数:**
| 参数 | 类型 | 默认值 | 描述 |
| ----------------- | ----------------------------------------- | ----------- | ------------------------------------------ |
| `prompt` | 字符串 | 必需 | 要生成的图像的文本描述 |
| `numberOfImages` | 数值(1-8) | `1` | 要生成的图像数量 |
| `aspectRatio` | `1:1` \| `3:4` \| `4:3` \| `9:16` \| `16:9` | `1:1` | 宽高比 |
| `imageSize` | `1K` \| `2K` | `2K` | 输出分辨率 |
| `outputMimeType` | `image/png` \| `image/jpeg` | `image/png` | 输出格式 |
| `negativePrompt` | 字符串 | — | 图像中要避免的内容 |
| `guidanceScale` | 数值(1-20) | — | 模型遵循提示的紧密程度 |
| `seed` | 数值 | — | 用于可复制结果的随机种子 |
| `enhancePrompt` | 布尔值 | `false` | 在生成前自动增强提示 |
**示例:**
```json
{
"name": "generate-image",
"arguments": {
"prompt": "日落时分宁静的山景,伴有一个湖泊",
"aspectRatio": "16:9",
"numberOfImages": 2
}
}
```
### 生成视频
使用配置的 Veo 模型(通过 `VERTEX_AI_VIDEO_MODEL` 设置)生成 AI 视频。
**参数:**
| 参数 | 类型 | 默认值 | 描述 |
| -------------------- | ------------------------- | -------- | ----------------------------------------- |
| `prompt` | 字符串 | 必需 | 要生成的视频的文本描述 |
| `numberOfVideos` | 数值(1-4) | `1` | 要生成的视频数量 |
| `durationSeconds` | 数值(4-8) | `8` | 视频片段长度(4、6 或 8 秒) |
| `aspectRatio` | `16:9` \| `9:16` | `16:9` | 宽高比 |
| `resolution` | `720p` \| `1080p` \| `4K` | `1080p` | 视频分辨率 |
| `seed` | 数值 | — | 用于可复制结果的随机种子 |
| `negativePrompt` | 字符串 | — | 视频中要避免的内容 |
| `enhancePrompt` | 布尔值 | `true` | 在生成前自动增强提示 |
| `generateAudio` | 布尔值 | `false` | 生成视频的同时生成音频 |
| `lastFrame` | 字符串 | — | 用于最后一帧的图像(图像到视频) |
| `referenceImages` | 数组 | — | 参考图像,用于指导生成(见下文) |
**参考图像**(提供本地文件路径、云存储 URI 或公共 URL):
- 本地文件路径:`/path/to/image.png`
- 云存储 URI:`gs://my-bucket/image.jpg`
- 公共 URL:`https://cdn.example.com/image.jpg`
支持的格式:JPEG、PNG。最大尺寸:10 MB。
`referenceImages` 支持最多 3 个 `ASSET` 图像或 1 个 `STYLE` 图像。
**示例 — 文本到视频:**
```json
{
"name": "generate-video",
"arguments": {
"prompt": "一只蝴蝶在花园中飞舞",
"durationSeconds": 8,
"aspectRatio": "16:9",
"resolution": "1080p"
}
}
```
**示例 — 图像参考:**
```json
{
"name": "generate-video",
"arguments": {
"prompt": "产品在白色背景上旋转",
"referenceImages": [
{
"image": "/path/to/product.png",
"referenceType": "ASSET"
}
]
}
}
```
## 连接到 MCP 客户端
### Claude 桌面版
添加到您的 `claude_desktop_config.json`:
```json
{
"mcpServers": {
"google-vertex": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:3005/mcp"]
}
}
}
```
### VS Code
添加到您的 `.vscode/mcp.json`:
```json
{
"servers": {
"google-vertex": {
"type": "http",
"url": "http://localhost:3005/mcp"
}
}
}
```
### MCP 检验工具
使用 MCP 检验工具测试您的服务器:
```bash
npx @modelcontextprotocol/inspector
```
然后连接到:`http://localhost:3005/mcp`
## 架构
服务器遵循清晰的架构原则,关注点分离:
- **配置层**: 环境变量管理和验证
- **服务层**: Vertex AI 集成和存储管理
- **工具层**: 共享实用程序(例如参考图像解析)
- **服务器层**: MCP 协议实现和 Express 服务器设置
## 错误处理
服务器包含全面的错误处理:
- 工具调用的优雅错误响应
- 用于故障排除的详细错误消息
- 适当的 HTTP 状态代码
## 性能提示
- 为您的使用场景选择合适的宽高比和分辨率
- 监控 Vertex AI 配额和账单
- 考虑为高流量场景实施请求队列
## 许可证
MIT
## 致谢
- 使用 [Model Context Protocol SDK](https://github.com/modelcontextprotocol/typescript-sdk) 构建
- 由 [Google Vertex AI](https://cloud.google.com/vertex-ai) 提供支持
- 使用 [Express v5](https://expressjs.com/)