Skip to main content
Glama
DIV7NE
by DIV7NE

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 | sh

2. 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-mcp

Expect 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 --install

That 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-here

setx 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-mcp

Related 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 vision

Remove 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 --uninstall

Both 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_KEY and never written into a config file.

  • The model defaults to gemini-3.6-flash, current per Google's model docs; override with a GEMINI_MODEL env var.

  • The MCP SDK is pinned to 2.0.0, which renamed FastMCP to MCPServer. 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.ps1 does every step at once on Windows, including installing uv and prompting for the key.

Available Tools

2 tools
describe_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
questionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

A3.8/5.0
Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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