内容
伟达媒体MCP
一个小型模型上下文协议(MCP)服务器,暴露英伟达NIM媒体端点作为本地代理工具。
目标很简单:让AI代理通过与工具栈其余部分相同的MCP接口调用英伟达的图像生成、OCR和短视频理解等专业服务。
## 提供内容
| 工具 | 目的 | 输入 | 输出 |
|---|---|---|---|
| `nvidia_flux_generate` | 通过英伟达NIM Flux进行文本到图像的生成 | 提示、宽度、高度、可选输出路径 | 本地图像文件路径 + 元数据 `nvidia_ocr | 通过英伟达Nemotron OCR进行OCR | 本地图像路径 | 提取的文本、置信度、边界框 |
| `nvidia_video_describe` | 通过英伟达全模态模型进行短视频理解 | 本地视频路径 + 问题 | 自然语言描述/答案 |
## 存在原因
大多数代理运行时都擅长处理文本和 shell 工作,但媒体操作通常是一次性的脚本。此存储库将英伟达N功能封装为可重用的MCP工具,以便代理可以:
- 生成快速的创意资产,
- 读取截图和文档图像,
- 检查短视频,
- 将输出保存到本地以供后续渲染或审查,
- 将凭证从提示和源代码控制中分离出来。
## 安全和隐私立场
- 没有提交API密钥。
- 机密信息从环境变量或本地 `.env` 文件中读取,git 会忽略该文件。
- 默认情况下,输出写入本地目录。
- 服务器不会发布到社交媒体、或执行公共写入操作。
- 示例配置仅使用占位符。
## 要求
- Node.js 18+
- 英伟达N密钥
- 支持MCP的客户端/运行时
## 安装
```bash
git clone https://github.com/DrCrypto911/nvidia-media-m
cd nvidia-media-mcp
npm install
cp .env.example .env
```
在本地编辑 `.env`:
```bash
_KEY=***
NVIDIA_MEDIA_MCP_OUTPUT_DIR=./outputs
```
`.env` 文件被 git 忽略。不要提交真实的密钥。
## 运行
```bash
NVIDIA_API_KEY=*** node server.mjs
```
或者,使用存储库根目录中的本地 `.env` 文件:
```bash
node server.mjs
```
## MCP 客户端配置示例
在 MCP 客户端中使用 `server.mjs` 的绝对路径:
```json
{
"mcpServers": {
"nvidia-media": {
"command": "node",
"args": ["/absolute/path/to/nvidia-media-mcp/server.mjs"],
"env": {
"NVIDIA": "${NVIDIA_API_KEY}"
}
}
}
}
```
如果客户端不传递环境变量,请在 `server.mjs` 旁边保留 `.env` 文件。
## 工具详情
### `nvidia`
通过英伟达NIM上的Flux 2 Klein 4B进行文本到图像的转换。
```json
{
"prompt": "一个干净的AI媒体控制室的产品渲染",
"width": 1024,
"height": 1024,
"output_path": "/tmp/flux_render.jpg"
}
```
返回文件路径、大小、图像尺寸、格式和耗时。
### `nvidia_ocr_extract`
通过英伟达NIM上的Nemotron OCR v1进行OCR。
```json
{
"image_path": "/absolute/path/to/screenshot.png"
}
```
返回聚合文本以及每个检测的置信度和边界框。
### `nvidia_video_describe`
通过英伟达全模态模型进行短视频理解。
```json
{
"video_path": "/absolute/path/to/clip.mp4",
"question": "这个剪辑中发生了什么?"
}
```
为了获得最佳延迟和可靠性,请在将大视频发送到模型之前进行裁剪。
## 本地检查
```bash
npm run check
```
验证 `server.mjs` 是否能正确解析。实时端点测试需要一个真实的英伟达NIM API密钥,并可能会产生API使用费用。
## API说明
### Flux 2 Klein 4B
```text
POST https://ai.api.nvidia.com/v1/genai/black-forest-labs/flux.2-klein-4b
Body: {"prompt": "...", "width": N, "height": N}
Response: {"artifacts": [{"base64": "<JPEG bytes>"}]}
```
### Nemotron OCR v1
```text
POST https://ai.api.nvidia.com/v1/cv/nvidia/nemotron-ocr-v1
Body: {"input": [{"type": "image_url", "url": "data:image/X;base64,..."}]}
```
重要形状细节:`input` 是一个数组,而 `url` 位于每个项目的顶级。
## 路线图
- 添加音频转录/ASR包装器。
- 添加更安全的媒体大小预检和自动降级。
- 为OCR/视频分析添加结构化JSON输出模式。
- 添加基于fixture的测试,不需要实时API调用。
## 许可证
MIT