vision-bridge-mcp
Click on "Deploy 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., "@vision-bridge-mcpLook at ./screenshots/error.png and tell me what's failing."
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.
vision-bridge-mcp
Give your text-only OpenCode agent eyes.
OpenCode's text-only models (e.g. DeepSeek V4) can't read images — so if you
attach a screenshot of an error, a whiteboard sketch, or a photo of a UI
mockup, the agent has no idea what's in it. vision-bridge-mcp is a small
MCP server that plugs straight into
OpenCode and gives it two new tools: analyze_image (general
description / visual Q&A) and ocr_image (exact text transcription),
both backed by the Gemini API (gemini-3.6-flash by default — override with GEMINI_MODEL if Google
retires it later; check https://ai.google.dev/gemini-api/docs/models for current model IDs).
Once it's configured, you just tell the agent to look at a file:
Look at ./screenshots/error.png and tell me what's failing.and it will call analyze_image itself — no manual copy-pasting into a
chat window, no separate CLI step.
Requirements
Node.js 18 or later
A free Gemini API key — get one at https://aistudio.google.com/apikey (free tier: 1,500 requests/day, no credit card required)
Related MCP server: Vision MCP Server
Install
No cloning required. Add this to your OpenCode config
(opencode.json in your project root, or ~/.config/opencode/opencode.json
for a global setup):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"vision-bridge": {
"type": "local",
"command": ["npx", "-y", "vision-bridge-mcp"],
"environment": {
"GEMINI_API_KEY": "your-api-key-here"
}
}
}
}Restart OpenCode (or run opencode mcp to reconnect) and the
analyze_image and ocr_image tools will show up automatically. npx
downloads and caches the package the first time it runs — nothing to build
or install by hand.
Prefer an env var over hardcoding the key in the config file? Set
GEMINI_API_KEYin your shell profile instead and drop the"environment"block — the server reads it from the process environment either way.
Running it standalone (for development or testing)
git clone https://github.com/YOUR_GITHUB_USERNAME/vision-bridge-mcp.git
cd vision-bridge-mcp
npm install
cp .env.example .env # then fill in GEMINI_API_KEY
npm startThe server speaks MCP over stdio, so on its own it just sits there waiting for a client (like OpenCode) to connect — that's expected.
Tools
analyze_image
General-purpose image understanding. Give it a path and, optionally, a custom prompt.
Parameter | Required | Description |
| yes | Path to a local image (absolute, or relative to OpenCode's cwd) |
| no | Custom instruction. Defaults to a developer-focused description. |
ocr_image
Transcribes visible text verbatim — useful for error dialogs, terminal screenshots, or photographed notes.
Parameter | Required | Description |
| yes | Path to a local image (absolute, or relative to OpenCode's cwd) |
Both tools support PNG, JPEG, WEBP, GIF, and HEIC/HEIF, up to 20MB by default.
Configuration
All configuration is via environment variables (set them directly, in a
.env file for standalone use, or in the "environment" block of your
opencode.json MCP entry):
Variable | Required | Default | Description |
| yes | — | Your Gemini API key |
| no |
| Any Gemini model with vision support |
| no |
| Reject images larger than this |
The server starts even without GEMINI_API_KEY set (so opencode mcp can
still list the tools) — it only errors, with a clear message, the moment a
tool is actually called without a key configured.
Error handling
Every tool call either succeeds with a text result, or fails with
isError: true and a specific, actionable message — a missing file, an
unsupported format, a file over the size limit, a missing/invalid API key,
or an upstream Gemini error. The server itself never crashes on a bad call.
Development
npm install
npm test # unit tests (node's built-in test runner, no network needed)
npm run lintThe test suite covers path resolution, MIME-type detection, and file
validation (missing files, directories, empty files, oversized files) —
the input-handling logic most likely to break on real-world usage. The
Gemini API call itself isn't mocked/tested here since it requires a live
key; if you want to verify that path, set GEMINI_API_KEY and run
npm start, then connect with any MCP client (or the
MCP Inspector).
Publishing (maintainers)
npm login
npm publish --access publicBump the version in package.json first — npx -y vision-bridge-mcp
always resolves to the latest published version.
Contributing
See CONTRIBUTING.md.
License
MIT — see LICENSE.
Available Tools
2 toolsanalyze_imageD
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | Optional custom instruction for what to look for or how to describe the image. If omitted, a general developer-focused description is returned. | |
| image_path | Yes | Path to a local image file (absolute, or relative to the directory OpenCode was started in). Supports PNG, JPEG, WEBP, GIF, HEIC/HEIF. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ocr_imageD
| Name | Required | Description | Default |
|---|---|---|---|
| image_path | Yes | Path to a local image file to extract text from (absolute, or relative to the directory OpenCode was started in). Supports PNG, JPEG, WEBP, GIF, HEIC/HEIF. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.2- First observed
analyze_image - First observed
ocr_image
TDQS
Scored across 2 tools
The tool names suggest distinct purposes — one for general image analysis and one for OCR. However, the complete lack of descriptions introduces some ambiguity about their exact boundaries.
Both tools follow the same verb_noun pattern: analyze_image and ocr_image. The naming convention is clear, consistent, and predictable.
With only two tools, the server feels minimal and borderline thin for an image-related service. The count is not excessive, but it is at the low edge of what could be considered a functional toolset.
A vision-bridge server with only image analysis and OCR lacks obvious capabilities like object detection, image comparison, or metadata extraction. The surface appears significantly incomplete for a general vision service.
Maintenance
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Generate images, GIFs, videos, and PDFs from HTML, URLs, or templates — from your AI agent.
Video, audio, and image processing for AI agents: convert, transcribe, upscale - 150+ operations.
Image & PDF tools for AI agents: compress, convert, resize, PDF, AI vision, pipeline.
Related MCP Servers
- FlicenseAqualityNot gradedmaintenanceEnables AI agents to analyze images through vision AI providers (Gemini, OpenAI, Claude), performing tasks like image description, object detection with bounding boxes, region-specific analysis, and precise color extraction without consuming context window with raw pixels.4-
- AlicenseAqualityDmaintenanceEnables AI agents to analyze images, extract text, compare images, and analyze video through any OpenAI-compatible vision model.4151 npm20MIT
- AlicenseAqualityAmaintenanceEnables text-only coding agents to analyze local images using a dedicated vision provider, returning markdown and structured JSON evidence for screenshots, diagrams, UI mockups, and error captures.1190 npm10MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to analyze images using any OpenAI-compatible vision API, providing tools for image analysis, OCR, error diagnosis, diagram understanding, and chart analysis.MIT