mcp-vision(这个词汇本身可能是一个特定领域或项目中的专有名词,没有直接的中文对应翻译,但可以理解为“MCP视觉”或根据上下文具体翻译为相关领域的术语,如“机器控制协议视觉系统”等,具体需根据实际应用场景确定。)
使用Google Gemini Flash-Lite的极简MCP服务器,用于视觉分析。
它的功能/作用是什么
提供了一个单一的MCP工具,该工具直接将您的图像和一条指令字符串发送到Google Gemini Flash-Lite,并返回模型的原始文本回答。
- 一个工具,一项工作:
vision.analyze - 后端Google AI Studio 或 Vertex AI(任选其一)
- 默认模型:
models/gemini-flash-lite-latest - 模式文本 + 图片(v1版本中无音频/视频)
安装
npm install
npm run build配置
复制 .env.example 到;向;朝 .env 并进行配置:
选项1:AI Studio(推荐使用,简洁明了)
GEMINI_PROVIDER=ais
GEMINI_API_KEY=your_api_key_here获取您的API密钥,请访问:https://aistudio.google.com/app/apikey
选项2:Vertex AI
GEMINI_PROVIDER=vertex
GOOGLE_CLOUD_PROJECT=your-project-id
GEMINI_LOCATION=us-central1认证选项(任选其一即可):
- 应用程序默认凭据(推荐):设置
GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json或者逃跑gcloud auth application-default login - 用户凭据:运行
gcloud auth login
服务器使用的令牌解析顺序:
- 如果已安装,请使用
google-auth-library获取ADC令牌(无需gcloud) gcloud auth application-default print-access-tokengcloud auth print-access-token
可选设置
# Use a different model
GEMINI_MODEL=models/gemini-flash-lite-latest
# Auto-resize images - DEFAULT is 2048px (set to 0 to disable)
VISION_MAX_LONG_EDGE=2048Claude 桌面设置
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"vision": {
"command": "node",
"args": ["/absolute/path/to/mcp-vision/dist/index.js"],
"env": {
"GEMINI_PROVIDER": "ais",
"GEMINI_API_KEY": "your_api_key_here"
}
}
}
}或者使用 npx:
{
"mcpServers": {
"vision": {
"command": "npx",
"args": ["-y", "mcp-gemini-vision"],
"env": {
"GEMINI_PROVIDER": "ais",
"GEMINI_API_KEY": "your_api_key_here"
}
}
}
}使用
该工具接受:
输入:
{
"images": "https://example.com/screenshot.png" | ["/path/to/img1.png", "data:image/png;base64,..."],
"instruction": "Natural language task for the screenshot(s)."
}输出:
{
"text": ""
}支持的图像格式
- HTTP(S) URL(网址):
https://example.com/image.png - 文件URL:
file:///absolute/path/to/image.png - 绝对路径:
/absolute/path/to/image.png - 数据URI:
data:image/png;base64,iVBORw0KG...
示例说明
重叠检查:
"Return JSON {overlap:boolean, examples:[{text,bbox,reason}]} — do any borders overlap any text?"美学分析:
"In one sentence: does the hero feel cramped? If so, suggest one fix."OCR(光学字符识别):
"What does the toast say? Quote exactly."提取UI元素:
"Extract all visible button labels as a JSON array."空白评分:
"Rate hero whitespace 0–1; if <0.6, give exactly one fix."它是如何工作的
- 对图像进行归一化处理接受URL、文件路径、file:// URL或数据URI
- HTTP(S) URL 会带超时设置进行获取并验证 - 所有图像均经过验证,确认为真实图像 sharp (防止信息外泄) - MIME类型来源于实际的图像格式,而非文件扩展名
- 自动调整大小大于2048像素(可配置)的图片会自动缩小尺寸
- 调用Gemini一次构建包含图像和指令文本的部件数组,设置60秒超时
- 返回原始数据返回 Gemini 返回的确切内容(不进行模式强制转换)
- 错误处理在JSON解析时使用try/catch,并回退到文本以获取更好的诊断信息
安全与限制
- 图像验证所有图像均已验证通过
sharp.metadata()上传前(防止任意文件泄露) - 尺寸限制每张图片最大18MB,每次请求最多10张图片
- 超时60秒用于HTTP获取和API调用
- 自动调整大小默认开启,设置为2048px
VISION_MAX_LONG_EDGE=0(禁用,但验证仍然运行) - 仅图片+文字 (v1版本中无音频/视频)
对于较大或经常重复使用的资源,请考虑使用Gemini文件API(未来将进行增强)。
发展
npm run dev # Watch mode
npm run build # Compile TypeScript
npm start # Run compiled server许可证
麻省理工学院(MIT)
