VisionPower
This server provides a describe_image tool that enables AI agents to analyze and understand images using an OpenAI-compatible vision model.
Supported Input Methods:
📁 Local file path (
image_path): Absolute path to a local image file🌐 Public URL (
image_url): A publichttp/httpsURL to an image🔢 Base64-encoded data (
image_base64): Raw base64 image data, optionally with a MIME type hint (image/jpeg,image/png,image/webp,image/gif,image/bmp)🖼️ Multiple images (
images[]): An ordered array of images for sequential multi-image analysis
Key Capabilities:
Screenshot reading and text extraction (OCR)
Chart, graph, and document interpretation
UI layout analysis and error screenshot diagnosis
Visual question answering via a custom
prompt(up to 20,000 characters), or leave it empty for a general descriptionConfigurable to work with any OpenAI-compatible vision model (e.g., Qwen-VL, GPT-4o) via environment variables
Security: Enforces path whitelisting, magic-byte validation, strict Base64 validation, and SSRF/private network protection for URLs.
Dual Integration: Can be used as an MCP tool for agents without shell access, or as a self-contained script for agents with code execution capabilities. A rescue-proxy layer is also available to handle non-multimodal models that reject image inputs, replacing images with generated text descriptions to prevent session deadlocks.
Allows the server to use OpenAI-compatible vision models (e.g., GPT-4o) as the image analysis backend, providing flexible and high-quality image understanding.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VisionPowerread the text from this screenshot"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
👁️ VisionPro Suite
给非多模态主模型(GLM-4.5/5.2 · DeepSeek · Qwen 等)配 Claude Code 用的视觉能力套件:MCP 预防层 + 反代救生层两道防线。
原
visionpower已重命名为visionpro;本仓库是 visionpro 套件,包含两层防御:
MCP 预防层(
src/+VisionPower-Skill/)—— 给 Agent 装上describe_image工具,主模型主动把图片转成文字描述再喂给 LLM。99% 的场景在这里就被挡住了。救生层(
rescue-proxy/)—— 偶尔有图漏过 hook(MCP/WebFetch/Bash 内联 base64、subagent 转述、system prompt 贴图),到了 API 层被 GLM/DeepSeek/Qwen 返回400 this model does not support image input,整个 session 死循环。救生代理自动检测 400、调 Doubao 描述图、把图块替换成文字、重新发请求——session 救回,下一轮就走 pass-through。
什么时候用哪一层
情况 | 用哪一层 | 为什么 |
Claude Code 配多模态模型(Claude Sonnet/Opus、GPT-4o、本地 Qwen3-VL 等) | 都不需要 | 模型自己支持图 |
非多模态主模型(GLM-4.5/5.2、DeepSeek、Qwen-Text 等),想用 Claude Code | MCP 预防层(必装) | 主动挡 99% 的图 |
MCP 装了但偶尔撞 400 死循环(subagent 转述图、web fetch 内联图、system prompt 贴图) | MCP + 救生代理(都装) | 救生层兜住漏网的 |
非多模态主模型 + 严格零图片策略 | MCP + 救生代理 + hook 三件套 | 救生层是最后一道 |
Related MCP server: mcp-see
本仓库结构
vision-pro-mcp/
├── src/ # 预防层:MCP server(describe_image 工具)
├── VisionPower-Skill/ # 预防层:Skill 形态(零依赖脚本)
└── rescue-proxy/ # 救生层:HTTP 反代,自动救 400 image-not-supported两层的联系:救生代理复用 VISIONPRO_* 环境变量调同一个视觉模型(默认 Doubao doubao-seed-2.0-pro),配置只写一次。
👁️ VisionPro(原 VisionPower)
给你的 AI Agent 装上眼睛 —— 一个轻量、安全、即插即用的图片理解能力,同时支持 MCP 与 Skill 两种接入形态。
VisionPro 让 Codex、Claude Desktop、Cursor、Cline、Cherry Studio 等 Agent 获得识别图片内容、读取截图文字(OCR)、解读图表、按顺序分析多张图片的能力。
它不绑定任何模型:默认走阿里云百炼 / DashScope 的 Qwen-VL(OpenAI-compatible 接口),也可通过模型名和 Base URL 配置切换到 GPT-4o 或任何兼容 OpenAI /chat/completions 视觉输入的服务。同一套内核提供两种接入形态——MCP 和 Skill,按你的 Agent 能力任选其一或都装。
✨ 特性
🧩 一个能力,两种形态 —— 同一内核,既可作为 MCP 工具
describe_image,也可作为自包含的 Skill(一个零依赖脚本,下载即用)。🖼️ 四种输入源 —— 本地路径
image_path、公网image_url、image_base64、以及多图有序数组images[]。🔢 多图有序分析 —— 自动标记
Image 1 / Image 2 / …并要求模型按相同顺序作答。🔌 模型无关 —— 任意 OpenAI-compatible 视觉服务,改两个环境变量即可切换。
🔒 安全优先 —— 路径白名单、文件 magic-byte 校验、私网/SSRF 防护、严格 base64 与输入 schema 校验。详见 安全设计。
🔁 稳健 —— 上游限流 / 5xx / 网络抖动自动重试(指数退避),超时同时覆盖响应体读取,不会卡死请求。
🪶 极简依赖 —— 运行时仅依赖官方 MCP SDK 与 zod,无原生模块、无图像库。
🌐 国内友好 —— 内置 npmmirror 镜像与本地安装路径,弱网也能稳定启动。
🎬 它能做什么
把图片交给 Agent,让它分析:
输入
{
"image_path": "/Users/me/Desktop/dashboard.png",
"prompt": "读取这张截图里的关键数字并总结趋势。"
}输出(示例)
这是一张销售看板截图。顶部 KPI 显示本月 GMV ¥1,284,500,环比 +12.3%;
订单数 8,420,环比 +4.1%。中间折线图显示近 6 个月持续上升,3 月有一次明显回落。
右侧饼图中「华东」占比最高(38%),其次是「华南」(25%)……📸 截图阅读、🧾 票据/表格提取、📊 图表解读、🧭 UI 走查、🐞 报错截图诊断 —— 凡是「让 Agent 看一眼图」的场景都适用。
🧭 两种形态,怎么选
两种形态功能等价,区别只在接入方式。按你的 Agent 能力选:
你的 Agent | 选哪个 | 为什么 |
Claude Desktop、Cursor、Cline、Cherry Studio(连 MCP,可能没有代码执行) | 暴露结构化 | |
Codex、Claude Code 等有 shell / 代码执行的 Agent | 运行自带的零依赖脚本,无需安装、无需常驻进程 | |
纯聊天、无代码执行的 MCP 宿主 | MCP | Skill 形态没有脚本运行环境 |
两种可以同时安装。像 Codex 这种既能连 MCP 又有 shell 的 Agent,用哪种都行。
作为 MCP 使用
最快路径:交给 Agent 自己装
复制下面这段话发给你的 Agent(替换成你的 API Key):
请帮我安装并配置 VisionPower MCP。
视觉模型 API Key:填写你的 API Key(会以明文写入配置,注意文件安全)
模型:qwen3-vl-flash
Base URL:https://dashscope.aliyuncs.com/compatible-mode/v1
【安装】先实测 npm 源连通性:
- 官方源稳定 → npx -y --package visionpower@latest visionpower
- 不稳定/中国大陆网络 → npx -y --registry=https://registry.npmmirror.com --package visionpower@latest visionpower
- 仅当 npx 连续失败,才 npm install -g visionpower@latest 并把 command 配成 visionpower
【写配置——重点】
不要套用通用模板。先在本 Agent 的配置目录里找一个【已经存在且正在运行的 MCP server 配置】
作为格式模板,严格照搬它的【文件位置 + 字段结构】来新增 visionpower。
若存在多个候选文件,以“已有 MCP server 在用”的那个为准,不要写到 provider 模型配置里。
【验证】分两步确认:
1. 进程级:用写入的 command+env 拉起进程做 MCP 握手,确认 tools/list 返回 describe_image;
2. 告知用户:配置在宿主启动时读取,需重启该 Agent 工具才会在会话中生效。准备工作:Node.js 18+,以及一个支持视觉模型的 OpenAI-compatible API Key(阿里云百炼 Key 申请:https://bailian.console.aliyun.com/?tab=model#/api-key)。
手动安装
适用于 Claude Desktop、Cursor、Cline、Cherry Studio 等用 JSON/TOML 配置 MCP 的工具。这些宿主不会替你下载、也不会自动测连接——先在终端确认能拉到包、API Key 能通,再贴配置,最少返工。
① 先在终端下载并自检
跑一次下面的命令,它会拉取 VisionPower 并尝试 MCP 握手;握手成功就说明你的网络、包、Key 都没问题:
# 官方源
npx -y --package visionpower@latest visionpower
# 中国大陆 / 弱网
npx -y --registry=https://registry.npmmirror.com --package visionpower@latest visionpower进程正常挂起不报错(看到
Running VisionPower MCP server之类输出)即说明通了,Ctrl+C退出。包已缓存到本地,后续宿主启动会更快。 偶尔失败?弱网或长期使用可改全局安装:npm install -g visionpower@latest(国内加--registry=https://registry.npmmirror.com)。
② 写进宿主配置
{
"mcpServers": {
"visionpower": {
"command": "npx",
"args": ["-y", "--package", "visionpower@latest", "visionpower"],
"env": {
"VISIONPOWER_API_KEY": "填写你的 API Key",
"VISIONPOWER_MODEL": "qwen3-vl-flash",
"VISIONPOWER_BASE_URL": "https://dashscope.aliyuncs.com/compatible-mode/v1"
}
}
}
}国内镜像把
args换成["-y", "--registry=https://registry.npmmirror.com", "--package", "visionpower@latest", "visionpower"]。
③ Codex 用 TOML(不是 JSON),写入 ~/.codex/config.toml:
[mcp_servers."visionpower"]
type = "stdio"
command = "npx"
args = ["-y", "--package", "visionpower@latest", "visionpower"]
[mcp_servers."visionpower".env]
VISIONPOWER_API_KEY = "填写你的 API Key"
VISIONPOWER_MODEL = "qwen3-vl-flash"
VISIONPOWER_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"配置在宿主启动时读取,写完需重启该工具才会在会话中生效。
作为 Skill 使用
Skill 形态是一个自包含、零安装、零依赖的文件夹 VisionPower-Skill/:里面有 SKILL.md 和一个可直接 node 运行的脚本 describe_image.mjs。不依赖任何 CLI、不用 npm install,下载这一个文件夹就能用——只需要 Node 18+ 和一个 API Key。适合 Codex、Claude Code 等有代码执行能力的 Agent。
文件夹叫
VisionPower-Skill(方便下载识别),但 skill 本身的名字是visionpower(见SKILL.md的name:)。所以安装时装到~/.claude/skills/visionpower/,让安装目录名和 skill 名一致。
最快路径:交给 Agent 自助安装
把下面这段话发给你的 Agent,它会安装 Skill,然后主动问你用哪个模型、并把 API Key 写进持久配置文件:
请帮我安装 VisionPower Skill。
1. 从 https://github.com/RunhuaHuang/VisionPower 获取 VisionPower-Skill 文件夹
(git clone 整个仓库,或单独下载该文件夹)。它是自包含的,无需 npm install。
2. 把文件夹里的内容安装为名为 visionpower 的技能(Claude Code 示例):
mkdir -p ~/.claude/skills/visionpower
cp VisionPower-Skill/SKILL.md VisionPower-Skill/describe_image.mjs ~/.claude/skills/visionpower/
3. 确认 Node 18+:node --version;再跑 node ~/.claude/skills/visionpower/describe_image.mjs --help 验证。
4. 然后请询问我要用哪个视觉模型(默认 qwen3-vl-flash,也可选 qwen3-vl-plus 或 gpt-4o),
并向我要 API Key,然后帮我把它写进持久配置文件 ~/.visionpower/config.json(mode 600),
格式 {"apiKey":"...","model":"..."}(OpenAI 再加 "baseUrl":"https://api.openai.com/v1")。
不要把完整 Key 回显给我。
5. 最后用一张示例图片确认 Skill 可用。成功后脚本会自动写入
~/.visionpower/skill-state.json(configVerified=true);以后再调用不要重复检查配置,
直接运行脚本。只有脚本返回缺 Key / 鉴权 / 配置错误时,才重新引导我配置。手动安装
把技能内容装为名为
visionpower的技能(Claude Code 个人级示例):mkdir -p ~/.claude/skills/visionpower cp VisionPower-Skill/SKILL.md VisionPower-Skill/describe_image.mjs ~/.claude/skills/visionpower/项目级则放到
<你的项目>/.claude/skills/visionpower/。其他 Agent 放进它约定的技能目录即可——即使没有自动加载机制,也可以直接让它「读取这个 SKILL.md 并按说明运行 describe_image.mjs」。确认 Node 18+,并把 API Key 写进持久配置文件(脚本每次运行都会自动读取,配一次永久生效):
node --version # 需要 v18+ mkdir -p ~/.visionpower cat > ~/.visionpower/config.json <<'JSON' { "apiKey": "填写你的 API Key", "model": "qwen3-vl-flash" } JSON chmod 600 ~/.visionpower/config.json为什么用配置文件而不是
export VISIONPOWER_API_KEY=...?因为 Agent 起的子 shell 通常读不到你写在~/.zshrc里的环境变量,于是「明明配了却每次还要重配」。配置文件不受 shell 影响,最稳。环境变量仍然可用,且会覆盖配置文件。SKILL.md内置「首次设置」流程:触发时若没配 Key,Agent 会主动引导你选模型、写好这个文件;成功调用后还会写入~/.visionpower/skill-state.json作为已验证开关,后续不再做配置预检,除非调用失败。
用起来
之后直接对 Agent 说「读一下这张截图的文字」并给出图片绝对路径,它会自动触发并执行(<skill> 为技能文件夹的绝对路径):
node <skill>/describe_image.mjs --image-path /absolute/path/to/image.png --prompt "读取文字并总结"脚本完整用法见 接口参考 · Skill 脚本。
🧩 工作原理
flowchart TB
M["MCP 宿主<br/>Claude Desktop · Cursor · Cline · Cherry Studio"]
S["有 shell 的 Agent<br/>Codex · Claude Code · …"]
M -- "describe_image 工具" --> CORE
S -- "node describe_image.mjs(自带脚本)" --> CORE
CORE["VisionPower 内核<br/>输入校验 · 安全检查 · 归一化"]
CORE --> API["视觉模型<br/>Qwen-VL · GPT-4o · …"]
API --> CORE两种形态共用同一份内核逻辑(src/vision-core.js + src/config.js):MCP server 直接引用它;Skill 的 describe_image.mjs 由 npm run build:skill 从同一份内核自动打包成一个零依赖脚本(测试会校验两者同步,永不漂移)。内核只做「校验 + 归一化 + 转发」,不缓存图片、不抓取 image_url(由上游模型服务拉取)。
🧰 接口参考
describe_image(MCP 工具 / CLI 的 JSON 请求)
参数 | 类型 | 说明 |
| string | 本地图片的绝对路径。 |
| string | 公网可访问的 |
| string | 不含 |
| enum |
|
| array | 多图有序数组,每项是上面四个字段的组合。不要与顶层单图字段混用。 |
| string | 对图片的具体问题或指令;留空则返回详尽的整体描述。 |
image_path/image_url/image_base64三选一(多图时数组内每项也是三选一)。
{ "image_path": "/absolute/path/to/image.png", "prompt": "读取截图里的文字并总结。" }{ "image_url": "https://example.com/image.png", "prompt": "这张图片里有什么?" }{ "image_base64": "...", "image_mime_type": "image/png", "prompt": "提取所有可见文字。" }{
"images": [
{ "image_path": "/absolute/path/to/first.png" },
{ "image_url": "https://example.com/second.jpg" }
],
"prompt": "按顺序读取每张图片中的文字并总结。"
}多图调用时,VisionPower 会按提交顺序标记 Image 1、Image 2…,并要求模型按相同顺序分段返回。
Skill 脚本
Skill 形态用自带脚本 describe_image.mjs(<skill> 为技能文件夹绝对路径):
node <skill>/describe_image.mjs --image-path <绝对路径> [--prompt <文本>]
node <skill>/describe_image.mjs --image-url <https 地址> [--prompt <文本>]
node <skill>/describe_image.mjs request.json # 传 JSON 请求文件
echo '<JSON 请求>' | node <skill>/describe_image.mjs # 或从 stdin 传入选项 | 说明 |
| 本地图片绝对路径 |
| 公网 http(s) 图片地址 |
| base64 数据(大数据建议改用 JSON 文件或 stdin) |
| 配合 |
| 问题或指令(可选) |
| 从文件读取 JSON 请求(结构同上表 |
| 查看帮助 |
未提供任何源参数时,脚本会从 stdin 读取 JSON 请求(结构与 MCP 工具完全一致,含多图 images[])。结果打印到 stdout;失败时打印 VisionPower error: <原因> 到 stderr 并以非零码退出。
🤖 支持的模型
只要服务商兼容 OpenAI 的 /chat/completions 视觉输入格式,就能接入。改 VISIONPOWER_MODEL 和 VISIONPOWER_BASE_URL 两个变量即可切换。
服务商 |
|
| 说明 |
阿里云百炼 / DashScope |
|
| 默认,快速且性价比高。 |
阿里云百炼 / DashScope |
|
| 更高质量的 Qwen-VL,取决于账号权限。 |
阿里云百炼 / DashScope |
|
| 账号可用该多模态模型时可直接替换。 |
OpenAI |
|
| 通用视觉理解能力强。 |
OpenAI |
|
| 成本更低的 OpenAI 选项。 |
其他 OpenAI-compatible | 服务商提供的模型 ID | 服务商提供的 | 把模型名和接口地址替换成你的配置即可。 |
"env": {
"VISIONPOWER_API_KEY": "填写你的 API Key",
"VISIONPOWER_MODEL": "gpt-4o",
"VISIONPOWER_BASE_URL": "https://api.openai.com/v1"
}⚙️ 配置(环境变量 / 配置文件)
两种形态共用同一套配置。优先级:环境变量 > 配置文件 > 默认值。
配置文件:~/.visionpower/config.json(可用 VISIONPOWER_CONFIG 改路径)。这是 Skill 推荐的配置方式——因为 Agent 起的子 shell 通常读不到你写在 shell profile 里的环境变量,而配置文件每次运行都会被自动读取,配一次永久生效。键名用 apiKey / model / baseUrl / maxImages / timeoutMs 等:
{
"apiKey": "填写你的 API Key",
"model": "qwen3-vl-flash"
}环境变量(会覆盖配置文件):
名称 | 必填 | 默认值 | 说明 |
| ✅ | 视觉模型服务商的 API Key。 | |
|
| 视觉模型名称。 | |
|
| OpenAI-compatible Base URL,不要包含 | |
| (空 = 不限制) | 逗号分隔的允许目录白名单, | |
|
| 单张本地/Base64 图片最大字节数。 | |
|
| 上游接口超时时间(毫秒)。 | |
|
| 最大输出 token 数。 | |
|
| 单次调用最多分析的图片数量。 | |
|
| 上游 429/5xx 或网络错误时的自动重试次数(指数退避 + 抖动)。 | |
|
| 设为 | |
|
| 是否启用进程内结果缓存:同一会话内相同的「图片+问题」直接返回上次结果,不再调用模型。设为 | |
|
| 结果缓存最多保留的条数;设为 | |
|
| 单条缓存的存活时间(毫秒),过期后下次相同请求会重新调用模型。 | |
|
| 仅 Skill 脚本使用:记录配置是否已成功验证,避免后续重复预检。 |
命名:主前缀是
VISIONPOWER_*。API Key 还可回退读取OPENAI_API_KEY。
迁移(0.x → 1.x)
旧版 README 中的
RUN_VISION_API_KEY已更名为VISIONPOWER_API_KEY。请把 MCP 配置或 shell 环境里的RUN_VISION_API_KEY改成VISIONPOWER_API_KEY。推荐把
npx -y visionpower直接替换为npx -y --package visionpower@latest visionpower,避免npx优先命中项目本地的旧版node_modules/.bin/visionpower。中国大陆镜像对应命令:
npx -y --registry=https://registry.npmmirror.com --package visionpower@latest visionpower。
🔒 安全设计
VisionPower 在把图片交给模型前做了多层校验,适合在能读本地文件的 Agent 里使用:
路径白名单 —— 配置
VISIONPOWER_ALLOWED_DIRS后,image_path必须落在白名单目录内;先realpath解析符号链接再比对,防止软链逃逸。绝对路径强制 —— 拒绝相对路径,避免歧义。
Magic-byte 校验 —— 本地图片会比对文件真实字节与扩展名是否一致,扩展名和内容不符直接拒绝。
严格 Base64 校验 —— 拒绝
data:前缀、非法字符、错误填充,并做一次回编码一致性检查。私网 / SSRF 防护 ——
image_url拦截localhost、私有/保留 IPv4 段、IPv6 唯一本地/链路本地地址,以及 IPv4-mapped IPv6,并拒绝带凭据的 URL。体积与数量上限 —— 单图字节数、单次图片数量、输出 token、请求超时均可配置并强制约束。
严格输入 schema —— 基于 zod 校验,未知字段与字段组合冲突都会被明确拒绝。
🧪 本地开发
npm install
npm test # 单元测试(配置解析 + 图片归一化 + 安全校验 + Skill 脚本同步校验)
npm run smoke # 端到端:启动 MCP server 确认工具可用 + Skill 脚本拒绝空请求
npm run build:skill # 改了内核后,重新生成 VisionPower-Skill/describe_image.mjs
npm start # 直接以 stdio 启动 MCP server源码结构:src/vision-core.js(内核逻辑)、src/config.js(配置)、src/schema.js(MCP 输入 schema)、src/index.js(MCP 出口)。Skill 出口 VisionPower-Skill/describe_image.mjs 由 scripts/build-skill.mjs 从内核自动生成(npm test 会校验其同步)。
🚑 救生层:rescue-proxy/
一句话定位:当主模型是 GLM/DeepSeek/Qwen 等不支持图的模型,MCP 预防层偶尔被绕过、图漏到 API 层,session 死循环——这个反代自动救回来。
它解决什么
实测场景:你用 glm-5.2:cloud 配 Claude Code。MCP 描述了 99% 的图,但有 4 类图绕不开 hook:
用户用
Ctrl+V粘贴截图(直接进 user message)WebFetch/Bash工具输出里内联的 base64(data:image/png;base64,...)Subagent 转述时把图当作上下文塞回去
systemprompt 里贴的图(messages[0].role: "system")
这些图到了 API 层,glm-5.2 返回 400 this model does not support image input。conversation history 已含图数据——session 后续每条消息都带这些图,反复 400,"重启也没用"。
它怎么救
本地起一个 Node HTTP 反向代理(默认 127.0.0.1:8787),Claude Code 通过 ANTHROPIC_BASE_URL 指向它。代理对所有请求 pass-through(含 SSE 流式),只在收到上游 400 + 错误信息含 image/unsupported media 时自动:
扫请求体所有
type: "image"content block(含tool_result嵌套)调 Doubao(
doubao-seed-2.0-pro)对每张图拿描述把 image block 替换为
{"type":"text","text":"<图片描述>"},保留cache_control以维持提示缓存重新 POST 上游,响应透传
下一轮请求(conversation history 已无图)走 pass-through,session 救回。
装与跑
# 一次性准备
cd rescue-proxy
npm install --prefer-offline
# 启动(默认监听 127.0.0.1:8787,写 pid 到 /tmp/visionpro-rescue-proxy.pid)
./start.sh
# 或前台跑看日志:
node proxy.js
# 测试(7 个 transform 单元测 + 4 个端到端 fake-upstream 测)
npm test代理读 VISIONPRO_API_KEY / VISIONPRO_BASE_URL / VISIONPRO_MODEL(与 MCP 同一份配置)。
接 Claude Code
~/.bashrc 末尾加:
export ANTHROPIC_BASE_URL=http://127.0.0.1:8787新开终端 source ~/.bashrc && claude,所有 session 自动走代理。代理死掉时 ANTHROPIC_BASE_URL 仍然指向 8787——claude 拿不到响应就报错,但不会污染 conversation history(错的请求是代理层的事,不是上游层)。
不改动的部分
✅ 透传所有 headers:
anthropic-beta(含claude-code-20250219,interleaved-thinking-2025-05-14,...)、anthropic-version、x-api-key、Authorization、x-stainless-*、x-claude-code-session-id✅ 透传
cache_control:替换 image → text 时保留原cache_control字段,破坏 prompt caching 才是真灾难✅
system字段原样透传:glm-5.2把 system 当messages[0].role: "system",代理不"修复"成官方格式✅ SSE 流式:
stream: true时上游返回text/event-stream,代理保持Transfer-Encoding: chunked+Content-Type: text/event-stream,逐 chunk 透传✅
tool_result嵌套扫描:Read 图片、Read.ipynbcell output 会在messages[].content[].content[]里放图,递归扫
限制(务必知道)
替换有损:图片 → 文字描述,OCR 准、复杂图描述可能漏细节。预防层(MCP 描述)能拿到更好的描述——救生层是最后一道。
doubao 失败时:返回原 400 给你,不静默吞错。日志里会标
[rescue] doubao failed: <reason>。非图片 400 不触发救生:必须是
image/unsupported media等关键字。rate limit、context length等其他 400 原样回传。
❓ 常见问题
功能等价,区别在接入方式:MCP 暴露结构化工具、跨 MCP 宿主通用、连无代码执行的纯聊天宿主也能用;Skill 是「一段指令 + 一个自带的零依赖脚本」,需要 Agent 有 shell/代码执行能力(如 Codex、Claude Code)。详见 两种形态,怎么选。两种可同时安装。
确认装了 Node 18+(node --version),且用脚本的绝对路径调用(如 node ~/.claude/skills/visionpower/describe_image.mjs --help)。报「API key not configured」就按 SKILL.md 的「首次设置」把 Key 写进 ~/.visionpower/config.json。若你"明明 export 了环境变量却还是不识别",多半是 Agent 的子 shell 没继承到——改用配置文件即可。
npx 首次运行会下载 VisionPower,之后通常走本地缓存。弱网或长期使用建议全局安装。
模型可用性取决于你的服务商账号、地域和权限,换成账号下可用的视觉模型即可。image_path 报错通常是因为配置了 VISIONPOWER_ALLOWED_DIRS 而图片不在白名单内,或路径不是绝对路径。
📄 许可证
MIT — 双版权声明:
© Runhua —
src/与VisionPower-Skill/(原 VisionPower 核心与 Skill 形态)© helalove0812 —
rescue-proxy/全部代码、README 重写、visionpro 重命名与 suite 打包
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/helalove0812-source/visionpro-suite'
If you have feedback or need assistance with the MCP directory API, please join our Discord server