关于 multimodal
multimodal 是一个 MCP 服务,通过统一接口调用多个提供方生成图像、视频和音频,并转录语音。它面向需要在 AI 客户端中使用多种媒体能力的用户,支持自动或按请求选择提供方,并将生成文件保存到磁盘。
主要功能
- 01生成和编辑图像
- 02生成视频
- 03生成语音和音效
- 04将音频转录为文本
- 05自动发现已配置的提供方
- 06将媒体文件保存到磁盘
适用场景
- 01从文本提示词创建图像或视频
- 02将文字转换为语音或音效
- 03转录音频文件中的语音
- 04在一次工作流中使用不同媒体提供方
MCP 相关
该 MCP 服务向客户端提供图像生成与编辑、视频生成、音频生成、转录及提供方查询工具。客户端可自动选择已配置的提供方,也可在请求中指定提供方。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @r16t/multimodal-mcpOPENAI_API_KEY密钥OpenAI API key for image, video, audio generation and transcriptionXAI_API_KEY密钥xAI API key for image and video generationGEMINI_API_KEY密钥Google Gemini API key for image, video, and audio generationELEVENLABS_API_KEY密钥ElevenLabs API key for audio generation and transcriptionBFL_API_KEY密钥BFL API key for FLUX image generation and editingMEDIA_OUTPUT_DIRDirectory for saved media files (defaults to cwd)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
6收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| prompt | string | 是 | 要生成的图像的文本描述 |
| quality | string | 否 | 质量级别:low、standard、high |
| provider | string | 否 | 要使用的提供商:openai、xai、google、bfl。若省略,则自动选择。 |
| aspectRatio | string | 否 | 宽高比:1:1、16:9、9:16、4:3、3:4 |
| outputDirectory | string | 否 | 保存生成文件的目录。支持绝对路径和相对路径(相对于 cwd 解析)。默认使用 MEDIA_OUTPUT_DIR 环境变量,否则使用 cwd。 |
| providerOptions | object | 否 | 直接传递的特定于提供方的参数 |
详细介绍
multimodal-mcp
多提供商媒体生成 MCP 服务。通过统一接口,使用 OpenAI、xAI、Gemini、ElevenLabs 和 BFL(FLUX),根据文本提示词生成图像、视频、音频和转录文本。
功能
- 🎨 图像生成 — 使用 OpenAI(gpt-image-1)、xAI(grok-imagine-image)、Gemini(imagen-4)或 BFL(FLUX Pro 1.1)生成图像
- ✏️ 图像编辑 — 使用 OpenAI、xAI、Gemini 或 BFL(FLUX Kontext)编辑图像
- 🎬 视频生成 — 使用 OpenAI(sora-2)、xAI(grok-imagine-video)或 Gemini(veo-3.1)生成视频
- 🔊 音频生成 — 使用 OpenAI(tts-1)、Gemini 或 ElevenLabs(Flash v2.5)进行文本转语音。使用 ElevenLabs 生成音效
- 🎙️ 音频转录 — 使用 OpenAI(Whisper)或 ElevenLabs(Scribe)进行语音转文本
- 🔄 自动发现 — 自动检测环境变量中配置的提供商
- 🎯 提供商选择 — 自动选择提供商,或为每个请求明确指定提供商
- 📁 文件输出 — 将所有生成的媒体保存到磁盘,并使用描述性文件名
快速开始
至少设置一个提供商的 API 密钥。大多数用户只需要一个;添加更多密钥即可使用其他提供商。
# Using OpenAI
claude mcp add multimodal-mcp -e OPENAI_API_KEY=sk-... -- npx -y @r16t/multimodal-mcp@latest
# Or using xAI
# claude mcp add multimodal-mcp -e XAI_API_KEY=xai-... -- npx -y @r16t/multimodal-mcp@latest
# Or using Gemini
# claude mcp add multimodal-mcp -e GEMINI_API_KEY=AIza... -- npx -y @r16t/multimodal-mcp@latest
# Or using ElevenLabs (audio + transcription)
# claude mcp add multimodal-mcp -e ELEVENLABS_API_KEY=xi-... -- npx -y @r16t/multimodal-mcp@latest
# Or using BFL/FLUX (images)
# claude mcp add multimodal-mcp -e BFL_API_KEY=... -- npx -y @r16t/multimodal-mcp@latest
使用其他编辑器?请参阅 Claude Desktop、Cursor、VS Code、Windsurf 和 Cline 的设置说明。
环境变量
| 变量 | 必需 | 说明 |
|---|---|---|
OPENAI_API_KEY | 至少一个提供商密钥 | OpenAI API 密钥 — 启用通过 gpt-image-1、sora-2、tts-1 和 whisper-1 进行的图像、视频、音频生成和转录 |
XAI_API_KEY | 至少一个提供商密钥 | xAI API 密钥 — 启用通过 grok-imagine-image 和 grok-imagine-video 进行的图像和视频生成 |
GEMINI_API_KEY | 至少一个提供商密钥 | Gemini API 密钥 — 启用通过 imagen-4、veo-3.1 和 gemini-2.5-flash-preview-tts 进行的图像、视频和音频生成 |
GOOGLE_API_KEY | — | GEMINI_API_KEY 的别名;两个名称均可使用 |
ELEVENLABS_API_KEY | 至少一个提供商密钥 | ElevenLabs API 密钥 — 启用通过 Flash v2.5 和 Scribe v1 进行的音频生成(TTS、音效)和转录 |
BFL_API_KEY | 至少一个提供商密钥 | BFL API 密钥 — 启用通过 FLUX Pro 1.1 和 FLUX Kontext 进行的图像生成和编辑 |
MEDIA_OUTPUT_DIR | 否 | 保存媒体文件的目录。默认为当前工作目录 |
可用工具
generate_image
根据文本提示词生成图像。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
prompt | string | 是 | 要生成图像的文本描述 |
provider | string | 否 | 要使用的提供商:openai、xai、google、bfl。省略时自动选择 |
aspectRatio | string | 否 | 宽高比:1:1、16:9、9:16、4:3、3:4 |
quality | string | 否 | 质量级别:low、standard、high |
outputDirectory | string | 否 | 保存生成文件的目录。可使用绝对路径或相对路径。默认为 MEDIA_OUTPUT_DIR 或当前工作目录 |
providerOptions | object | 否 | 直接传递给提供商的特定参数 |
generate_video
根据文本提示词生成视频。视频生成是异步的,可能需要几分钟。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
prompt | string | 是 | 要生成视频的文本描述 |
provider | string | 否 | 要使用的提供商:openai、xai、google。省略时自动选择 |
duration | number | 否 | 视频时长,单位为秒(受提供商限制) |
aspectRatio | string | 否 | 宽高比:16:9、9:16、1:1 |
resolution | string | 否 | 分辨率:480p、720p、1080p |
outputDirectory | string | 否 | 保存生成文件的目录。可使用绝对路径或相对路径。默认为 MEDIA_OUTPUT_DIR 或当前工作目录 |
providerOptions | object | 否 | 直接传递给提供商的特定参数 |
generate_audio
根据文本生成音频。支持文本转语音和音效。音频生成采用同步方式。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
text | string | 是 | 要转换为语音的文本,或要生成的音效描述 |
provider | string | 否 | 要使用的提供方:openai、google、elevenlabs。若省略,则自动选择 |
voice | string | 否 | 语音名称(因提供方而异)。OpenAI:alloy、ash、coral、echo、fable、nova、onyx、sage、shimmer。Google:Kore、Charon、Fenrir、Aoede、Puck 等。ElevenLabs:语音 ID |
speed | number | 否 | 语速倍数(仅限 OpenAI):0.25 到 4.0 |
format | string | 否 | 输出格式(仅限 OpenAI):mp3、opus、aac、flac、wav、pcm |
outputDirectory | string | 否 | 保存生成文件的目录。可使用绝对路径或相对路径。默认为 MEDIA_OUTPUT_DIR 或当前工作目录 |
providerOptions | object | 否 | 直接传递给提供方的专属参数。ElevenLabs:设置 mode: "sound-effect" 以生成音效,设置 model 以选择 TTS 模型 |
transcribe_audio
将音频转录为文本(语音转文本)。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
audioPath | string | 是 | 要转录的音频文件的绝对路径 |
provider | string | 否 | 要使用的提供方:openai、elevenlabs。若省略,则自动选择 |
language | string | 否 | 用于提示转录语言的语言代码(例如 en、fr、es) |
providerOptions | object | 否 | 直接传递给提供方的专属参数 |
list_providers
列出所有已配置的媒体生成提供方及其功能。不接受任何参数。
提供方功能
| 提供方 | 图像 | 图像编辑 | 视频 | 音频 | 转录 | 主要模型 |
|---|---|---|---|---|---|---|
| OpenAI | ✅ | ✅ | ✅ | ✅ | ✅ | gpt-image-1, sora-2, tts-1, whisper-1 |
| xAI | ✅ | ✅ | ✅ | — | — | grok-imagine-image, grok-imagine-video |
| Gemini | ✅ | ✅ | ✅ | ✅ | — | imagen-4, veo-3.1, gemini-2.5-flash-preview-tts |
| ElevenLabs | — | — | — | ✅ | ✅ | eleven_flash_v2_5, scribe_v1 |
| BFL | ✅ | ✅ | — | — | — | flux-pro-1.1, flux-kontext-pro |
图像宽高比
| 提供方 | 1:1 | 16:9 | 9:16 | 4:3 | 3:4 |
|---|---|---|---|---|---|
| OpenAI | ✅ | ✅ | ✅ | ✅ | ✅ |
| xAI | ✅ | ✅ | ✅ | ✅ | ✅ |
| Gemini | ✅ | ✅ | ✅ | ✅ | ✅ |
| BFL | ✅ | ✅ | ✅ | ✅ | ✅ |
视频宽高比和分辨率
| 提供方 | 16:9 | 9:16 | 1:1 | 480p | 720p | 1080p |
|---|---|---|---|---|---|---|
| OpenAI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| xAI | ✅ | ✅ | ✅ | — | ✅ | ✅ |
| Gemini | ✅ | ✅ | — | — | ✅ | ✅ |
音频格式
| 提供方 | mp3 | opus | aac | flac | wav | pcm |
|---|---|---|---|---|---|---|
| OpenAI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Gemini | — | — | — | — | ✅ | — |
| ElevenLabs | ✅ | ✅ | — | — | — | ✅ |
故障排除
未配置提供方
[config] No provider API keys detected
在 MCP 服务的 env 块中至少设置一个 OPENAI_API_KEY、XAI_API_KEY、GEMINI_API_KEY、ELEVENLABS_API_KEY 或 BFL_API_KEY。
提供方不支持所请求的媒体类型
不同提供方支持的媒体类型不同(参见提供方功能)。如果指定的 provider 未配置(没有 API 密钥)或不支持所请求的媒体类型,就会收到错误。省略 provider 参数,以便从已配置的提供方中自动选择。
视频生成超时
视频生成会轮询最多 10 分钟。如果视频在此时间内未完成,请求将因超时错误而失败。请尝试缩短 duration 或简化 prompt。
xAI 图像生成未返回数据
这表示 xAI API 返回了空响应。请检查 XAI_API_KEY 是否有效,以及提示词是否违反 xAI 内容政策。
Gemini 图像/视频生成失败:403
请确认已在 Google Cloud Console 中为 GEMINI_API_KEY 启用 Generative Language API。
开发
npm run build # Compile TypeScript to build/
npm test # Run tests with Vitest
npm run lint # Lint and auto-fix with ESLint
npm run typecheck # Type-check without emitting
npm run dev # Watch mode for TypeScript compilation
编辑器设置
将 OPENAI_API_KEY 替换为你选择的提供商(XAI_API_KEY、GEMINI_API_KEY、ELEVENLABS_API_KEY、BFL_API_KEY)。你可以设置多个密钥以启用多个提供商。
Claude Desktop
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"multimodal-mcp": {
"command": "npx",
"args": ["@r16t/multimodal-mcp@latest"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}
Cursor
添加到项目根目录中的 .cursor/mcp.json(或全局配置文件 ~/.cursor/mcp.json):
{
"mcpServers": {
"multimodal-mcp": {
"command": "npx",
"args": ["@r16t/multimodal-mcp@latest"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}
VS Code(GitHub Copilot)
添加到项目根目录中的 .vscode/mcp.json:
{
"servers": {
"multimodal-mcp": {
"command": "npx",
"args": ["@r16t/multimodal-mcp@latest"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}
Windsurf
添加到 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"multimodal-mcp": {
"command": "npx",
"args": ["@r16t/multimodal-mcp@latest"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}
Cline
添加到 ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json:
{
"mcpServers": {
"multimodal-mcp": {
"command": "npx",
"args": ["@r16t/multimodal-mcp@latest"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。