deepseek-vision-mcp
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-mcpAnalyze the image at /path/to/chart.png and describe what it shows"
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(Chinese README)
给无视觉能力的文本 LLM(如 DeepSeek)当「眼睛」的 MCP 服务器 —— 一个稳定、可替换后端的云端视觉适配层。
设计理念(四层分工)
主模型 = 大脑:解释、推理、判断、建议、任务决策
Vision MCP = 眼睛:忠实描述「我看到了什么」
Skill = 工作规范:特定领域的规则(不在此项目)
Claude Code = 调度与执行:调工具、改文件、执行任务
本 MCP 只回答「我看到了什么」,不回答「这意味着什么」,不替主模型思考。
Related MCP server: vision-mcp
功能特性
双协议分流:OpenAI 兼容 Chat Completions(通用视觉模型)+ PaddleOCR 专用 OCR 协议
图片三段式处理:加载 → 校验 → 预处理(EXIF 校正、等比缩放)
内容寻址缓存(
image_sha256):重复分析同一张图秒回,省额度临时错误自动重试(≤2 次指数退避)
失败透明:视觉服务失败时明确报错,绝不伪造结果
安装
需要 Python 3.11+ 和 uv。
uv sync配置
所有配置通过环境变量注入(.mcp.json 的 env 或 .env)。
变量 | 说明 | 默认值 |
| 视觉 API 的 key | 无,必填 |
| OpenAI 兼容 Chat 接口 base URL | 无,必填 |
| PaddleOCR 专用 OCR 接口完整地址 | 无(用 PaddleOCR 时填) |
|
| 无,必填 |
|
| 无,必填 |
| 缓存总开关 |
|
|
|
|
| 缓存目录覆盖(空=平台默认) | 空 |
| 缓存有效期(天) |
|
| 缓存最大容量(MB) |
|
| fallback 开关 |
|
| 临时错误重试上限 |
|
| 单次 API 超时(秒) |
|
参考 .env.example。
注册到 Claude Code
项目级(.mcp.json)或用户级(~/.claude.json 的 mcpServers):
{
"mcpServers": {
"deepseek-vision-mcp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/deepseek-vision-mcp", "deepseek-vision-mcp"],
"env": {
"VISION_API_KEY": "sk-...",
"VISION_API_BASE_URL": "https://your-vision-api.example.com/v1",
"VISION_OCR_ENDPOINT": "https://your-ocr-api.example.com/v1/paddleocr",
"VISION_OCR_MODEL": "PaddleOCR-VL-1.5",
"VISION_FULL_MODEL": "your-vision-model"
}
}
}
}若
uv不在 PATH,command用 uv 的完整路径。
Windows 示例(uv 通常不在 PATH,command 用完整路径,目录用正斜杠):
{
"mcpServers": {
"deepseek-vision-mcp": {
"command": "C:/Users/你的用户名/.local/bin/uv.exe",
"args": ["run", "--directory", "D:/path/to/deepseek-vision-mcp", "deepseek-vision-mcp"],
"env": {
"VISION_API_KEY": "sk-...",
"VISION_API_BASE_URL": "https://your-vision-api.example.com/v1",
"VISION_FULL_MODEL": "your-vision-model"
}
}
}
}若 uv 通过其它方式安装(pipx / scoop / choco),把 command 指向对应的 uv.exe 路径即可。
使用
在对话里对主模型说:
「看下这张图
D:\xxx\chart.png」→analyze_image(path, mode="full")「把这张图的文字提取出来
D:\xxx\table.png」→analyze_image(path, mode="ocr")
工具
analyze_image
path_or_url:本地图片路径或 http(s) URL(PNG / JPEG / WEBP / GIF / BMP)mode:"full"(默认,全面理解)或"ocr"(仅提取文字)
如何添加新 Provider
在
src/deepseek_vision_mcp/providers/新建文件,继承base.Provider并实现analyze。在
router.py的get_provider中按模型名(或其他判断)返回你的 Provider。完成,
analyze_image上层接口无需改动。
说明
本工具不提供视觉模型,只做「适配层」。你需要自带视觉 API 的 key。
License
MIT
deepseek-vision-mcp(English README)
An MCP server that acts as the "eyes" for text-only LLMs (such as DeepSeek) — a stable, provider-swappable cloud vision adapter layer.
Design Philosophy (Four Layers)
Main model = Brain: interpret, reason, judge, advise, decide tasks
Vision MCP = Eyes: faithfully describe "what I see"
Skill = Work spec: domain-specific rules (not in this project)
Claude Code = Orchestrator: call tools, edit files, execute tasks
This MCP only answers "what I see", not "what it means", and never thinks on behalf of the main model.
Features
Dual-protocol routing: OpenAI-compatible Chat Completions (general vision models) + PaddleOCR dedicated OCR protocol
Three-stage image pipeline: load → validate → preprocess (EXIF correction, aspect-ratio-preserving resize)
Content-addressed cache (
image_sha256): repeated analysis of the same image returns instantlyAutomatic retry on transient errors (≤2 attempts, exponential backoff)
Failure transparency: reports errors clearly, never fabricates results
Installation
Requires Python 3.11+ and uv.
uv syncConfiguration
All configuration is injected via environment variables (.mcp.json env or .env).
Variable | Description | Default |
| Vision API key | none, required |
| OpenAI-compatible Chat API base URL | none, required |
| PaddleOCR dedicated OCR endpoint (full URL) | none (set when using PaddleOCR) |
| Model for | none, required |
| Model for | none, required |
| Cache switch |
|
|
|
|
| Cache dir override (empty = platform default) | empty |
| Cache TTL (days) |
|
| Max cache size (MB) |
|
| Fallback switch |
|
| Max retries on transient errors |
|
| Per-request timeout (seconds) |
|
See .env.example.
Registering with Claude Code
Project-level (.mcp.json) or user-level (mcpServers in ~/.claude.json):
{
"mcpServers": {
"deepseek-vision-mcp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/deepseek-vision-mcp", "deepseek-vision-mcp"],
"env": {
"VISION_API_KEY": "sk-...",
"VISION_API_BASE_URL": "https://your-vision-api.example.com/v1",
"VISION_OCR_ENDPOINT": "https://your-ocr-api.example.com/v1/paddleocr",
"VISION_OCR_MODEL": "PaddleOCR-VL-1.5",
"VISION_FULL_MODEL": "your-vision-model"
}
}
}
}If
uvis not on PATH, use the full path touvforcommand.
Windows example (uv is usually not on PATH; use the full path for command and forward slashes for the directory):
{
"mcpServers": {
"deepseek-vision-mcp": {
"command": "C:/Users/yourname/.local/bin/uv.exe",
"args": ["run", "--directory", "D:/path/to/deepseek-vision-mcp", "deepseek-vision-mcp"],
"env": {
"VISION_API_KEY": "sk-...",
"VISION_API_BASE_URL": "https://your-vision-api.example.com/v1",
"VISION_FULL_MODEL": "your-vision-model"
}
}
}
}If uv is installed another way (pipx / scoop / choco), point command at the corresponding uv.exe.
Usage
Tell the main model:
"Look at this image
D:\xxx\chart.png" →analyze_image(path, mode="full")"Extract the text from this image
D:\xxx\table.png" →analyze_image(path, mode="ocr")
Tool
analyze_image
path_or_url: local image path or http(s) URL (PNG / JPEG / WEBP / GIF / BMP)mode:"full"(default, full understanding) or"ocr"(text extraction only)
Adding a New Provider
Create a new file under
src/deepseek_vision_mcp/providers/, subclassbase.Providerand implementanalyze.Return your provider from
get_providerinrouter.py(keyed by model name or other criteria).Done — the upper-level
analyze_imagetool needs no changes.
Note
This tool does not provide vision models; it is only an adapter layer. You need to bring your own vision API key.
License
MIT
Available Tools
1 toolanalyze_imageA
当用户提供图片、截图、图表、照片,或要求查看图像内容时,调用本工具获取图片的视觉内容描述。
注意:本工具面向「自身无法直接查看图片」的主模型。若你自身具备原生视觉、能直接查看图片内容,应优先使用自己的原生视觉能力,无需调用本工具;仅在自身无法直接看图时才使用本工具。
默认使用 mode=full 进行完整视觉理解。仅当用户明确要求精确提取图片文字/表格内容时,使用 mode=ocr。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "full"(默认,全面理解)或 "ocr"(仅提取文字)。 | full |
| path_or_url | Yes | 本地图片路径或 http(s) URL。 |
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 of behavioral disclosure. It discloses the two operational modes and their behavior (full visual understanding vs. OCR text extraction), which is sufficient for a read-only image analysis 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 concise and well-structured: trigger conditions, usage caveat about native vision, and mode selection guidance are all front-loaded. No sentence is wasted, and the note about native vision is essential for correct agent decision-making.
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 description covers the core context: what the tool does, when to invoke it, how to choose modes, and the required parameter. An output schema exists, so the return format does not need explanation. The tool is simple with only two parameters, and the description is complete for correct invocation.
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?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining when to use mode=ocr versus mode=full, which goes beyond the schema's brief mode description. The path_or_url parameter is already well-covered by the schema.
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's purpose: when the user provides an image, screenshot, chart, or photo, call the tool to obtain a visual content description. It uses a specific verb and resource, and the note about native vision distinguishes its intended role from the model's own capabilities.
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 defines when to use the tool (when the model cannot directly view images) and when not to use it (if the model has native vision). It also provides clear mode selection guidance: use mode=full by default, and mode=ocr only for explicit text/table extraction.
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. Dates show when Glama detected each change.
1 tool update
v1.0.0- First observed
analyze_image
TDQS
There is only one tool, so there is no possibility of confusing it with another tool. Its purpose is clearly scoped to image analysis.
The single tool name follows a clear verb_noun pattern and there are no conflicting naming conventions to cause inconsistency.
One tool is at the low end, but it is justified for a narrow vision-analysis server. The built-in full/OCR modes keep it reasonably well-scoped rather than feeling empty.
For the stated purpose of providing image understanding to a non-vision model, the tool covers both general visual description and explicit OCR text/table extraction. There are no obvious missing core operations for this narrow domain.
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
OCR, transcription, file extraction, and image generation for AI agents via MCP.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
471Multimodal video analysis MCP — transcription, vision, and OCR for any video URL.
Related MCP Servers
- AlicenseAqualityCmaintenanceBridges a vision model to enable text-only models like DeepSeek to describe images, extract text, and compare images via MCP tools.5379MIT
- AlicenseNot gradedqualityCmaintenanceAdds image recognition and UI grounding capabilities to text-only LLMs through MCP tools, supporting local and cloud vision backends.32MIT
- AlicenseNot gradedqualityCmaintenanceProvides multimodal vision MCP tools for image analysis, OCR, object detection, text-to-image generation, and image similarity, integrating OpenAI, Qwen, and Gemini.321MIT
- AlicenseNot gradedqualityCmaintenanceProvides vision capabilities to text-only LLMs via MCP, enabling image understanding, Q&A, OCR, and image processing through cloud multimodal APIs.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/dclddb/deepseek-vision-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server