multimodal-mcp
This server gives text-only LLMs the ability to "see" images by converting them into structured text descriptions via a configured vision model.
describe_image — Converts an image into a detailed, structured text description from multiple sources:
📋 Clipboard — Reads directly from the OS clipboard (e.g., after a screenshot), no pasting required
🌐 URL — Downloads from an
http(s)://URL📄 Data URI — Processes a
data:image/...;base64,...string📁 Local file path — Reads from disk
🔢 Raw base64 — Uses a raw base64 string directly
Descriptions include full OCR (preserving layout/tables), chart/graph data and values, key objects, colors, UI elements, and overall scene content.
Detail level:
high(default, best for OCR/dense content) orlow(quick summary)Custom instructions: Provide an
instructionparameter to focus the description on specific aspects (e.g., extract table data, convert a flowchart to Mermaid, identify UI components)Image placeholder handling: Detects when a client replaces a pasted image with a placeholder (e.g.,
[Image 1]) and reads from clipboard instead
multimodal_config_status — Verifies that the three required environment variables (VISION_BASE_URL, VISION_API_KEY, VISION_MODEL) are set, returning a boolean per variable without exposing the actual API key value.
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., "@multimodal-mcplook at my screenshot"
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.
multimodal-mcp
给任意 MCP 客户端配上一双"眼睛",让纯文本主模型也能处理图片。
核心设计:MCP 只把图片转成文字,不做推理。推理由你当前会话选的主模型完成(glm-5.2 / deepseek / qwen / 任何模型)。
工作原理
一个工具 describe_image,根据 image 参数自动判断图片来源:
| 行为 |
空 | 从系统剪贴板读图(截图后说"看下我的截图") |
| 下载 |
| 提取 base64 |
| 读本地文件 |
raw base64 | 直接用 |
返回结构化文字描述(OCR + 图表数据 + UI 细节),主模型基于描述自己推理。
另一个工具 multimodal_config_status 自检三个 vision 变量是否配齐(不打印 key)。
"剪贴板"路径解决客户端拦截粘贴图片的问题:截图后不粘贴到聊天框,打字说"看下我的截图",工具直接读剪贴板。跨平台跨客户端。
Related MCP server: Vision MCP Server
系统依赖
仅"剪贴板"路径需要:
平台 | 命令 | 安装 |
macOS |
|
|
Linux |
|
|
Windows | PowerShell | 内置 |
URL / data URI / 文件路径 / base64 四种路径无依赖。
安装与配置
需要 Python ≥ 3.10(仅 local 模式);uvx 模式只需 uv。
凭据
三个环境变量,写进客户端 MCP 配置的凭据字段:
变量 | 含义 |
| 视觉模型 API 地址,到 |
| API key |
| 模型名( |
| API 风格: |
主推理模型不在这里配——它是你客户端会话里选的那个。
各客户端的凭据字段名不一样:opencode 叫
environment,Claude / Cursor / Codex 叫env。install.py会自动用对的字段名。
方式 A:一键脚本(推荐)
在仓库目录里运行,自动检测已装客户端并写入配置 + 规则文件,幂等可重复跑:
python install.py # 交互式
python install.py --yes # 跳过确认
# 带凭据,一条命令配齐
python install.py \
--base-url https://dashscope.aliyuncs.com/compatible-mode/v1 \
--api-key sk-xxxxx \
--model qwen3.7-plus
# 强制 uvx / local 模式
python install.py --mode uvx --repo git+https://github.com/believe3344/multimodal-mcp
python install.py --mode local跑完重启客户端即可。--api-key 会进 shell 历史,介意就跑完手动填。
方式 B:手动配置
不用 install.py,按下面格式写进各客户端配置。两种运行模式:
uvx(不用 clone):command 跑
uvx --from git+URL multimodal-mcplocal(clone + venv):command 跑 venv 里的 python +
server.py
opencode(~/.config/opencode/opencode.json)— command 是数组,凭据字段叫 environment:
{
"mcp": {
"multimodal": {
"type": "local",
"command": ["uvx", "--from", "git+https://github.com/believe3344/multimodal-mcp", "multimodal-mcp"],
"environment": {
"VISION_BASE_URL": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"VISION_API_KEY": "sk-xxxxx",
"VISION_MODEL": "qwen3.7-plus"
}
}
}
}Claude Code / Desktop / Cursor(~/.claude.json / ~/Library/Application Support/Claude/claude_desktop_config.json / ~/.cursor/mcp.json)— command 字符串 + args 数组,凭据字段叫 env:
{
"mcpServers": {
"multimodal": {
"command": "uvx",
"args": ["--from", "git+https://github.com/believe3344/multimodal-mcp", "multimodal-mcp"],
"env": {
"VISION_BASE_URL": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"VISION_API_KEY": "sk-xxxxx",
"VISION_MODEL": "qwen3.7-plus"
}
}
}
}Codex CLI(~/.codex/config.toml)— TOML,env 是 inline table:
[mcp_servers.multimodal]
command = "uvx"
args = ["--from", "git+https://github.com/believe3344/multimodal-mcp", "multimodal-mcp"]
env = { VISION_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1", VISION_API_KEY = "sk-xxxxx", VISION_MODEL = "qwen3.7-plus" }local 模式:把上面 uvx 的 command/args 换成 venv python + server.py 绝对路径,凭据字段不变(opencode 仍 environment,其他仍 env)。command 必须是 venv 里的 python,否则缺 mcp / httpx 依赖。准备 venv:
cd /path/to/multimodal-mcp
uv venv --python 3.11 && source .venv/bin/activate
uv pip install -r requirements.txtWindsurf / Cline:MCP 配置走各自 UI(Settings > MCP),格式同上。
规则文件
install.py 会自动把"何时调 describe_image"的规则写进各客户端规则文件(opencode AGENTS.md / Claude CLAUDE.md / Cursor .mdc / Codex AGENTS.md / Windsurf .windsurfrules / Cline .clinerules)。手动配置时需自行添加,模板见 RULES.md。
测试
重启客户端后:
调
multimodal_config_status,确认三个变量都 set调
describe_image,image留空(读剪贴板)或传 URL
或用 MCP Inspector 独立测试(不依赖客户端,需先在 shell export VISION_* 三个变量):
npx @modelcontextprotocol/inspector .venv/bin/python server.py使用示例
截图
[用户] Cmd+Shift+4 截图,然后说"看下我的截图"
[agent] describe_image(image=None) → 读剪贴板 → 文字描述 → 回答图片 URL
[用户] 描述这张图:https://example.com/chart.png
[agent] describe_image(image="https://...") → 下载 → 描述 → 回答本地文件
[用户] 看 /tmp/screenshot.png 里的表格
[agent] describe_image(image="/tmp/screenshot.png") → 读文件 → 描述 → 回答粘贴附件(占位符)
客户端把粘贴的图片替换成 [Image 1] 占位符时,agent 按规则会调 describe_image、image 留空读剪贴板(图片还在剪贴板里)。
故障排查
现象 | 排查 |
| 凭据字段里三个 |
GPT-5 系列超时 / 404 | 设 |
| Key 错或没开通该模型 |
| BaseURL 不是 |
描述模糊 |
|
agent 不自动调 | 检查客户端是否加载 MCP、规则文件是否被读取 |
限制
每次调用一次视觉模型往返,延迟取决于该模型。
视觉模型描述什么,主模型就只看什么。极小细节可能丢失——用
instruction写具体。走 stdio;远程多人共用可改
streamable_http。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/believe3344/multimodal-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server