opencode-vision-mcp

opencode-vision-mcp

Enables text-only models to understand images by intercepting pasted images, saving them locally, and using a vision MCP server to analyze them with multimodal backends like Qwen-VL, Doubao, or GLM-4V.

Category
访问服务器

README

opencode-vision-mcp

不支持多模态的模型(如 DeepSeek)提供"看图"能力的完整解决方案:vision MCP server + opencode 粘贴落盘插件

让 DeepSeek 等纯文本模型也能直接看懂你粘贴/引用的图片:

你在对话框粘贴图片
  ↓ 插件 vision-paste.js 拦截(chat.message hook)
图片自动落盘到本地文件
  ↓ 插件把图片 part 改写为"仅模型可见"的路径指引
模型读到路径 → 调用 vision_analyze_image 工具
  ↓ vision MCP server 读取图片 → 转发给多模态后端
通义千问 Qwen-VL / 豆包 / GLM-4V 返回文字描述
  ↓
模型把识别结果转达给你

图片字节全程不进入主模型上下文——主模型只接触"路径字符串"和"文字描述",不会被 base64 污染。


功能特性

  • 🖼️ 粘贴即识别:opencode 对话框直接粘贴图片,自动落盘并识别,无需手动保存路径
  • 🔄 多后端可切换:通义千问 Qwen-VL / 豆包 / GLM-4V,环境变量切换或单次调用覆盖
  • 🧮 结果缓存:同图同参数重复识别直接命中缓存,节省 API 费用(默认 128 条 / 1 小时)
  • 🔁 自动重试:429 限流 / 5xx 服务端错误指数退避重试(默认 2 次)
  • 🖼️ 多图对比:一次传入多张图片做对比分析
  • 🔒 Key 安全:API key 仅存本地 .env,不进入代码库

目录结构

opencode-vision-mcp/
├── server.py              # vision MCP server 主程序(stdio 传输)
├── plugins/
│   └── vision-paste.js    # opencode 插件:粘贴图片自动落盘
├── requirements.txt       # Python 依赖
├── .env.example           # 环境变量模板
├── README.md              # 本文件
└── LICENSE                # MIT

安装

1. 环境要求

  • Python >= 3.10
  • opencode(仅插件需要)
  • 至少一个多模态后端的 API key(见下表)

2. 克隆并安装 MCP server

git clone https://github.com/Jsliu28/opencode-vision-mcp.git
cd opencode-vision-mcp

# 创建虚拟环境并安装依赖
python -m venv .venv
# Windows:
.\.venv\Scripts\Activate.ps1
# macOS/Linux:
source .venv/bin/activate

pip install -r requirements.txt

# 配置 API key
cp .env.example .env
# 编辑 .env,填入你的 key(见下节)

3. 配置 API key

复制 .env.example.env 后填写。至少配置一个后端即可;配置多个后可用 provider 参数切换。

标识 名称 API key 环境变量 默认模型
qwen 通义千问 Qwen-VL DASHSCOPE_API_KEY qwen-vl-max
doubao 火山方舟豆包 ARK_API_KEY doubao-1-5-vision-pro-32k-250115
zhipu 智谱 GLM-4V ZHIPU_API_KEY glm-4v-plus

Key 申请地址:

4. 安装 opencode 插件

plugins/vision-paste.js 复制到 opencode 插件目录:

# Windows
copy plugins\vision-paste.js %USERPROFILE%\.config\opencode\plugins\

# macOS/Linux
cp plugins/vision-paste.js ~/.config/opencode/plugins/

重启 opencode 生效。


配置到 opencode

编辑 ~/.config/opencode/opencode.json

{
  "mcp": {
    "vision": {
      "type": "local",
      "command": ["python", "C:/你的路径/opencode-vision-mcp/server.py"],
      "enabled": true,
      "environment": {
        "VISION_DEFAULT_PROVIDER": "qwen"
      }
    }
  }
}

说明:API key 在 .env 中,server 启动时会自动读取,无需重复配置在 environment 里(如同时存在,environment 优先)。 如果 python 不在 PATH 中,使用虚拟环境解释器绝对路径,如 C:/你的路径/opencode-vision-mcp/.venv/Scripts/python.exe


使用示例

在 opencode 对话框中

你:粘贴一张图片(或拖拽文件生成 @ 路径)
    "这张图里有什么?"

opencode:自动识别并返回图片描述
你:粘贴两张图片
    "对比这两张截图有什么不同?"

opencode:多图对比分析

直接传路径 / URL

你:分析 C:/Users/me/photo.png
你:识别 https://example.com/cat.jpg

指定后端 / 模型

你:用豆包分析这张图 C:/Users/me/photo.png

工具说明

vision_analyze_image

分析一张或多张图片,返回文字描述。参数:

参数 类型 必填 说明
images string[] 图片引用列表(1 张或多张),每项为本地绝对路径或 http(s) URL
prompt string 对图片的问题/指令,默认"详细描述图片内容,多张时对比分析"
provider string qwen / doubao / zhipu,覆盖默认后端
model string 具体模型名,留空用该后端默认模型
temperature number 0~2,默认 0.3

vision_list_providers

列出当前各后端配置状态(是否已填 API key)与可用模型。


环境变量

变量 默认值 说明
VISION_DEFAULT_PROVIDER qwen 默认后端:qwen / doubao / zhipu
DASHSCOPE_API_KEY - 通义千问 key
ARK_API_KEY - 火山方舟 key
ZHIPU_API_KEY - 智谱 key
VISION_CACHE_ENABLED true 是否启用结果缓存
VISION_CACHE_SIZE 128 缓存最大条数
VISION_CACHE_TTL 3600 缓存有效期(秒)
VISION_MAX_RETRIES 2 失败重试次数
VISION_RETRY_BASE_DELAY 1.0 首次重试等待秒数(之后指数翻倍,上限 10s)

常见问题

Q: 粘贴图片后没有任何反应? A: 确认插件已放入 ~/.config/opencode/plugins/ 并重启 opencode;确认 vision MCP 已启用(/mcp 查看)。

Q: 提示"后端未配置"? A: 检查 .env 中对应 key 是否填写正确,vision_list_providers 可查看配置状态。

Q: 图片能上传但识别失败? A: 单张图片限制 20MB;本地路径必须是绝对路径;URL 需可公开访问(部分网站有防盗链)。

Q: 识别结果能缓存吗? A: 默认开启。同图同参数(含 prompt/temperature)重复调用直接命中缓存。

Q: API key 会泄露到代码库吗? A: 不会。.env 已被 .gitignore 排除,key 仅存本地。


License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选