deepseek-vision-mcp
Provides image analysis capabilities by sending images to Google's Gemini Flash model, enabling agents to get detailed text descriptions, UI layout reports, and answers to questions about image content.
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., "@deepseek-vision-mcpUse describe_ui on screenshot.png and tell me where the submit button is."
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.
deepseek-vision-mcp
Gives text-only coding agents — DeepSeek in Reasonix, Claude Code, Cursor, Claude Desktop, or any MCP client — the ability to look at images. It adds two tools:
describe_image(path, question)— sends the file to Gemini Flash and returns a detailed text description: transcribed text, layout, UI elements, error messages.describe_ui(path)— structured UI report for a screenshot of a user interface (app window, web page, game menu): ASCII layout wireframe, element inventory (label | role | approx x%,y% | size | state) with exact visible text, and short visual notes. Prefer this when you need layout, positions and states, not prose.
Install
1. Install uv (skip if you have it — check with uv --version):
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh2. Register the server, globally — Reasonix stores CLI-installed servers in its
user-level config.toml, so this covers every project:
reasonix mcp add vision -- uvx --from git+https://github.com/DIV7NE/deepseek-vision-mcp vision-mcpExpect added MCP server "vision" — ready with 2 tools. See
Startup warnings if you also get WARN plugin: start auxiliary ….
For a single project instead, cd there first — a new terminal often starts in a system
folder you can't write to:
cd C:\path\to\your\project
uvx --from git+https://github.com/DIV7NE/deepseek-vision-mcp vision-mcp --installThat writes .mcp.json in the current folder, keeping any servers already listed. Pass a
path to target another client's config, creating it if needed:
uvx --from ... vision-mcp --install "$env:APPDATA\Claude\claude_desktop_config.json"vision-mcp --global runs the Reasonix command for you when the reasonix CLI is on
PATH, and prints the equivalent for other clients when it isn't.
3. Set your API key. Get a free one at https://aistudio.google.com/apikey. The server
reads GEMINI_API_KEY from its environment, and your MCP client passes its environment
down to the servers it launches:
# Windows
setx GEMINI_API_KEY your-key-here
# macOS / Linux — add to ~/.zshrc or ~/.bashrc
export GEMINI_API_KEY=your-key-heresetx only affects processes started afterwards, so close the terminal and fully quit
your MCP client, then reopen both. Check it took with echo $env:GEMINI_API_KEY.
To let Reasonix hold the key instead of your user profile, re-add the server with it attached — Reasonix treats these values as credentials and keeps them out of the server's identity fingerprint:
reasonix mcp add vision --env GEMINI_API_KEY=your-key-here -- uvx --from git+https://github.com/DIV7NE/deepseek-vision-mcp vision-mcpRelated MCP server: Atlas Vision MCP
Usage
Ask your agent:
use describe_image on C:\path\to\screenshot.png and tell me what the error says
Pass a question to ask something specific rather than getting a general description.
For screenshots of an interface — app windows, web pages, game menus — ask for the structured report instead:
use describe_ui on C:\path\to\screenshot.png and tell me where the PLAY button is
describe_ui returns the layout wireframe, every element with its approximate
position and state (selected/hover/active), and exact visible text.
Agent skill
skills/describe-ui/SKILL.md is a drop-in agent skill for clients that support
them (Reasonix, Claude Code, Cursor). It tells the agent to prefer describe_ui
for screenshots of interfaces and falls back to the structured prompt through
describe_image when the running server is stale. Copy it into your client's
skill directory, or install it globally with the client's own skill installer
(Reasonix: install_skill with scope: global).
Uninstall
Remove the global install:
reasonix mcp remove visionRemove it from one project — run in that folder, or pass a config path:
uvx --from git+https://github.com/DIV7NE/deepseek-vision-mcp vision-mcp --uninstallBoth leave every other server in place, and vision-mcp --uninstall --global runs the
Reasonix command for you. Global and project entries are separate, so remove both if you
installed both. Restart your client afterwards.
The downloaded package stays in uv's cache; uv cache clean clears it. The API key stays
in your environment until you remove it (setx GEMINI_API_KEY "" on Windows).
Troubleshooting
Startup warnings. WARN plugin: start auxiliary prompt client failed … context canceled and the matching resource line are harmless. Reasonix starts separate optional
clients to fetch a server's prompts and resources; this server offers neither, and the
short-lived CLI process cancels their context as it exits. The line that matters is
ready with 2 tools — a real failure would report zero.
PermissionError writing .mcp.json. You ran --install from a folder you can't
write to, usually C:\Windows\System32 where PowerShell starts. cd to your project
first, or pass a config path.
uvx not found on PATH. The MCP client (Reasonix, Claude Desktop) spawns
stdio servers with a fixed PATH that usually does not include uv's bin directory
(~/.local/bin after the astral installer), so command = "uvx" fails to launch
even though uvx works in your terminal. Fix: set command to the absolute path
(C:\Users\<you>\.local\bin\uvx.exe on Windows) or add that directory to the
server's PATH env in the client config. --install and the PowerShell installer
write the resolved absolute path automatically when uvx is on your shell PATH.
A global install seems ignored. Project config wins: a vision entry in a project's
.mcp.json or reasonix.toml overrides the global one. Delete the project entry.
Changes don't appear. Reasonix applies CLI config changes on the next session, so
restart it. Inside a running chat, /mcp add connects immediately instead.
404 mentioning the model. Set GEMINI_MODEL to a current model ID from
https://ai.google.dev/gemini-api/docs/models.
Manual config
If you prefer editing config yourself, this is the entry --install writes:
{
"mcpServers": {
"vision": {
"command": "uvx",
"args": ["--from", "git+https://github.com/DIV7NE/deepseek-vision-mcp", "vision-mcp"]
}
}
}uvx needs git available on PATH to fetch the repo; no GitHub account is required.
The command field is the absolute uvx path when the installer could resolve one
(see uvx not found on PATH); edit it back to a bare
uvx only if your client's launch PATH includes uv's bin directory.
Notes
The key is read from
GEMINI_API_KEYand never written into a config file.The model defaults to
gemini-3.6-flash, current per Google's model docs; override with aGEMINI_MODELenv var.The MCP SDK is pinned to
2.0.0, which renamedFastMCPtoMCPServer. An unpinned upgrade breaks the server.Gemini's free tier is generous (about 10 requests a minute) but may use submitted data for training, so don't send screenshots containing secrets unless billing is enabled.
Images must be PNG, JPEG, GIF, WebP or BMP, and under 15MB.
The agent reasons over Gemini's description, not the pixels: reliable for text, errors, and layout, unreliable for pixel-level visual judgment.
install-vision-mcp.ps1does every step at once on Windows, including installing uv and prompting for the key.
Available Tools
2 toolsdescribe_imageA
Look at an image file (screenshot, photo, diagram, UI mockup) and return
a detailed text description. Pass question to ask something specific
about the image instead of getting a general description.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| question | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It does not state whether the operation is read-only, whether it modifies anything, if there are privacy implications (e.g., uploading the image), or any limitations such as supported file formats. This lack of transparency is a significant gap for an AI agent deciding to invoke the tool.
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?
The description is compact, using only two sentences. It front-loads the primary purpose in the first sentence and adds the optional usage detail in the second. There is no fluff or redundant repetition of schema information, making it highly concise and well-structured.
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?
The tool is simple with only two parameters, and an output schema exists, so the return value doesn't need explanation. However, the absence of annotations and textual disclosure of safety/behavior creates a completeness gap. Additionally, it does not address how this tool relates to the sibling 'describe_ui', leaving the agent without guidance on tool selection.
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?
The description explicitly explains the 'question' parameter ('ask something specific about the image instead of getting a general description'), which adds practical meaning beyond the schema. However, it never explicitly describes the 'path' parameter, leaving its format or constraints unmentioned. Given the 0% schema description coverage, this partial compensation is adequate but not thorough.
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?
The description uses specific language 'Look at an image file' and 'return a detailed text description' to convey the action and resource. It clearly states the tool's purpose and the optional question usage. However, it does not distinguish itself from the sibling tool 'describe_ui', so it misses the opportunity to clarify what makes it unique.
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?
The description provides clear context for when to use the tool: 'Look at an image file' implies visual content analysis, and it explains the optional question parameter for targeted queries. It does not explicitly mention when not to use it or compare it to alternatives, but the context is strong enough to guide typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_uiA
Structured UI report for a screenshot of a user interface (app window, web page, game menu): ASCII layout wireframe, element inventory (label | role | approx x%,y% | size | state) with exact visible text, and short visual notes. Prefer this over describe_image when you need layout, element positions and states rather than general prose.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It thoroughly discloses the output structure (wireframe, element inventory, visual notes), making the tool's behavior clear. However, it does not mention potential input restrictions or error handling for the path parameter, which leaves a minor gap.
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?
Two sentences, each earning its place. The first packs in the full output format, the second provides guidance on when to use the tool. No wasted words.
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?
For a one-parameter analysis tool, the description provides enough context to understand what the tool returns and when to use it. The output schema exists but is not shown, so the textual description of output components is helpful. However, the lack of any explanation about the path parameter slightly reduces completeness.
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?
The schema has a single 'path' parameter with no description (0% schema description coverage). The tool description never mentions the path parameter, so it does not compensate for the missing schema detail. The agent must infer from the tool name and general context that 'path' refers to a screenshot file, but no explicit format or constraints are given.
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?
The description clearly states the tool produces a structured UI report for a screenshot, explicitly listing the output components (ASCII layout wireframe, element inventory with positions and states, visual notes). It also distinguishes itself from the sibling tool describe_image by referencing specific use cases.
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?
The description explicitly says 'Prefer this over describe_image when you need layout, element positions and states rather than general prose.' This gives direct, actionable guidance on when to choose this tool over the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools are closely related but have clearly differentiated purposes: describe_image is for general image description, while describe_ui is specifically for structured UI analysis. The description of describe_ui explicitly directs users to prefer it over describe_image for UI screenshots, reducing ambiguity.
Both tools follow an identical verb_noun pattern: describe_image and describe_ui. The naming is perfectly consistent, with no mixing of conventions or vague verbs.
With only 2 tools, the server feels slightly thin, but it serves a narrow purpose (vision description). It is on the borderline between 'too few' and 'acceptable', warranting a score of 3 rather than higher.
The tool surface covers general image description and a specialized UI analysis mode. Minor gaps exist, such as lack of explicit OCR or image comparison tools, but for the apparent scope of a vision description server, the coverage is reasonably complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
UI design from prompts, screenshots, and URLs for AI coding agents and theme tokens.
Generate images, GIFs, and PDFs from HTML, URLs, or templates — from your AI agent.
Browser-backed QA with evidence and fix-ready reports for coding agents.
Codebase intelligence for agents: 152 structured artifacts across 21 programs, one call.
Related MCP Servers
- AlicenseAqualityBmaintenanceGives text-only coding agents the ability to 'see' images, videos, and screenshots by routing them to a vision model and returning structured text.8321MIT
- 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.1114711MIT
- FlicenseAqualityBmaintenanceProvides image understanding capabilities to coding models without vision support by automatically invoking a vision model and returning text descriptions, enabling seamless context-aware coding with images.12
- AlicenseNot gradedqualityCmaintenanceProvides structured visual analysis tools for coding agents, enabling UI analysis, screenshot comparison, OCR, and crop-based refinement through VLM.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/DIV7NE/deepseek-vision-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server