Back to MCP directory
publicPublicdnsLocal runtime

mcp-vision-relay

MCP Vision Relay 是一个 MCP 服务器,通过封装本地安装的 Gemini 和 Qwen 命令行工具,为 Claude、Codex 等仅支持文本的 MCP 客户端提供图像分析能力,使其能够处理本地路径、URL 或 base64 编码的图片。

article

README

🚀 MCP Vision Relay

MCP Vision Relay 将本地安装的多模态 CLI(目前支持 Google Gemini CLI 与 Qwen CLI)封装为 Model Context Protocol (MCP) 服务器,帮助 Claude、Codex 等支持 MCP 的工具直接使用它们的看图能力。通过将调用请求通过 Gemini/Qwen CLI 进行中转,MCP Vision Relay 为那些部署提供了一条经济实惠的途径,使其在那些目前,当 Claude Code 连接到 k2、DeepSeek 或 MiniMax M2 等提供商时,背后的模型仅支持文本,没有内置的视觉能力。通过 MCP Vision Relay,这些部署无需更换提供商即可重新获得多模态功能。

MseeP.ai Security Assessment Badge

English | 中文说明

✨ 主要特性

  • 统一图像工具gemini_analyze_imageqwen_analyze_image 两个工具覆盖路径、URL、base64 三种输入。
  • 提供商中继架构 – 通过 provider 抽象切换或扩展不同 CLI,保留模型、输出格式等配置能力。
  • 强大的输入处理 – 自动校验图片大小、扩展名,必要时下载或写入临时文件并在使用后清理。
  • 可配置执行 – 支持可选 sandbox、超时、额外旗标、模型覆盖,以及 .env/环境变量配置。
  • 可操作输出 – 对 stdout 进行规整并附加元信息,便于客户端在 UI 中展示或后续处理。

🚀 快速开始

前提条件

  1. Node.js ≥ 18
  2. 已安装并能在命令行直接调用的 Gemini CLI 与/或 Qwen CLI
  3. 对应 CLI 的登陆/鉴权已完成(确保 gemini -p "hi"qwen -p "hi" 能返回结果)

安装与构建

npm install
npm run build

运行 MCP 服务器

# 开发模式(tsx 直接启动 TypeScript)
npm run dev

# 生产模式(使用编译产物)
npm run start

服务器通过 stdio 与 MCP 客户端通信,适用于 claude mcp addcodex mcp add 等命令。

💻 使用示例

Claude

claude mcp add mcp-vision-relay -- npx tsx /absolute/path/to/mcp-vision-relay/src/index.ts

Codex CLI

codex mcp add mcp-vision-relay -- node /absolute/path/to/mcp-vision-relay/dist/index.js

完成后即可在会话/任务中选择 mcp-vision-relay 的工具调用。

📚 详细文档

可用工具

gemini_analyze_image

分析图像并返回 Gemini CLI 给出的描述。

| 参数 | 类型 | 说明 | | --- | --- | --- | | image | string | 必填;本地路径、HTTP(S) URL 或 base64 字符串 | | prompt | string? | 额外指令,默认使用 GEMINI_DEFAULT_PROMPT | | model | string? | 覆盖默认模型(如 gemini-2.0-flash) | | outputFormat | "text" \| "json"? | 控制 -o 输出格式 | | sandbox | boolean? | 是否添加 -s sandbox 旗标 | | extraFlags | string[]? | 附加自定义参数 | | timeoutMs | number? | CLI 超时(默认 120000ms) |

返回内容包含一段 Markdown 文本与元信息(模型、输入来源、耗时等)。

qwen_analyze_image

走 Qwen CLI 进行图像理解。逻辑与 Gemini 类似,但会在需要时自动把本地文件转成 data URL 供 CLI 读取。

| 参数 | 类型 | 说明 | | --- | --- | --- | | image | string | 必填;本地路径、HTTP(S) URL 或 base64 字符串 | | prompt | string? | 额外指令,默认使用 QWEN_DEFAULT_PROMPT | | model | string? | Qwen 模型(如 qwen2.5-omni-medium) | | sandbox | boolean? | 是否加 -s | | extraFlags | string[]? | 附加参数 | | timeoutMs | number? | CLI 超时(默认 120000ms) |

配置

复制 .env.example 进行配置,常用条目:

  • GEMINI_CLI_COMMAND / QWEN_CLI_COMMAND:CLI 可执行文件路径。
  • GEMINI_DEFAULT_MODEL / QWEN_DEFAULT_MODEL:默认模型名。
  • GEMINI_OUTPUT_FORMAT:控制 Gemini 输出(textjson)。
  • MCP_COMMAND_TIMEOUT_MS:全局超时(毫秒)。
  • MCP_MAX_IMAGE_BYTES:允许的最大图片大小。
  • MCP_ALLOWED_IMAGE_EXTENSIONS:允许的扩展名列表。
  • MCP_IMAGE_TEMP_DIR:存放下载/解码后临时文件的目录。

如需针对单次调用覆盖 CLI 命令,可在工具参数中提供 cliPath(Gemini/Qwen 均支持)。

本地诊断

项目提供两个简单脚本,便于手动验证 CLI 调用:

npx tsx scripts/dev/manual-gemini-test.ts
npx tsx scripts/dev/manual-qwen-test.ts

确保在执行前已完成 npm run build 或使用 ts-node/tsx

项目结构

src/
  index.ts                 # 程序入口,加载 env 并启动 MCP 服务器
  config/                  # 配置解析(appConfig 等)
  providers/               # CLI provider 适配层(Gemini/Qwen)
  server/                  # MCP server wiring
  tools/                   # MCP 工具定义与注册
  utils/                   # 文件、CLI 调度等公共工具
scripts/
  dev/                     # 手动验证脚本
test-assets/               # 示例图像资源

路线图

  • ✅ Gemini CLI 图像分析
  • ✅ Qwen CLI 图像分析(含自动 data URL)
  • ⏳ 资源列表与更多多模态 provider
  • ⏳ 自动化测试与 lint/format pipeline

📄 许可证

MIT License。欢迎提交 issue / PR 贡献改进。

致谢

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client