vlm-mcp
VLM-MCP
MCP-сервер для понимания изображений на основе VLM. Поддерживает локальный llama.cpp и онлайн-VLM (например, Qwen3-VL-Flash) через единый OpenAI-совместимый API.
English
Возможности
Два бэкенда: локальный llama.cpp + онлайн Qwen3-VL-Flash, единый OpenAI-совместимый API
Трёхуровневый кэш: L1 — кэш кодирования изображений, L2 — кэш ответов (с TTL), L3 — KV-кэш llama-server
Управление сессиями: контекст многоходовых диалогов, автоматическое вытеснение и очистка по таймауту
Шаблоны промптов: встроенные describe / ocr / chart / translate / qa
Управление жизненным циклом: подпроцесс llama-server автоматически запускается и останавливается вместе с MCP, ручное управление не требуется
Здоровье бэкендов: автоматическое отключение бэкендов при ошибках API-ключа, поддержка ручного включения/отключения
Многоисточниковые изображения: локальный путь, HTTP URL, Base64 Data URI, резервный вариант с чистым Base64
Архитектура
MCP Client (SSE :11432)
│
▼
server.py ── tool layer (analyze_image / create_session / ...)
│
├── session_manager.py ── session lifecycle
├── cache.py ── L1 image cache + L2 response cache
├── image_utils.py ── image parsing (path/URL/Base64)
│
▼
providers/ ── OpenAI-compatible interface
│
├── llama-cpp (localhost:11433) ← auto-launched by llama_launcher.py
└── qwen-vl (dashscope API)Быстрый старт
Требования
Компонент | Примечания |
Python 3.11+ | Среда выполнения |
Менеджер пакетов | |
Нативный бинарник ( | |
Qwen3-VL-8B GGUF | Языковая модель + визуальный проектор |
Примечание: этот проект использует нативный бинарник llama.cpp (
llama-server), а НЕllama-cpp-python. Python-привязки не нужны — просто скачайте исполняемый файл llama.cpp.
Рекомендуемая модель: скачайте два файла из Qwen3-VL-8B-Instruct-GGUF:
Файл | Рекомендуемый | Примечания |
Модель зрения |
| Квантование Q4_K_M, баланс скорости и точности |
Визуальный проектор |
| Должен быть F16, не квантовать |
8 ГБ видеопамяти достаточно. В режиме только онлайн (только бэкенд qwen-vl) можно пропустить llama.cpp и GGUF-модели.
Установка
git clone https://github.com/YC-CLT/VLM-mcp.git
cd VLM-mcp
uv syncНастройка
cp config.example.json config.jsonОтредактируйте config.json:
{
"backends": {
"llama-cpp": {
"enabled": true,
"base_url": "http://localhost:11433/v1",
"api_key": "sk-no-key-required",
"model_name": "qwen3-vl"
},
"qwen-vl": {
"enabled": false,
"base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"api_key": "your-dashscope-api-key",
"model_name": "qwen-vl-flash"
}
},
"default_backend": "llama-cpp",
"cache_enabled": true,
"llama": {
"server_exe": "llama-server",
"model": "D:/path/to/Qwen3VL-8B-Instruct-Q4_K_M.gguf",
"mmproj": "D:/path/to/mmproj-Qwen3VL-8B-Instruct-F16.gguf",
"ngl": 99
}
}Ключевые поля:
backends.<name>.enabled: установитеfalse, чтобы вручную отключить бэкендllama.model/llama.mmproj: абсолютные пути к файлам моделей (обязательно)llama.ngl: слои GPU,99= всё на GPU,0= только CPUllama.server_exe: исполняемый файл llama-server, по умолчанию ищется в PATH
Запуск
uv run main.pyПодпроцесс llama-server автоматически запускается и останавливается вместе с MCP. Ручное управление не требуется.
MCP SSE endpoint: http://127.0.0.1:11432/sse
Запуск из любой директории:
uv run --directory D:\CodeFile\VLM-mcp main.py
Конфигурация MCP-клиента
Добавьте в конфигурацию вашего MCP-клиента:
{
"mcpServers": {
"vlm-mcp": {
"url": "http://127.0.0.1:11432/sse"
}
}
}MCP-инструменты
Инструмент | Параметры | Описание |
|
| Анализ изображения с поддержкой шаблонов и сессий |
|
| Создание сессии многоходового диалога |
|
| Закрытие сессии |
| — | Список всех активных сессий |
| — | Список бэкендов и их статус |
| — | Список доступных шаблонов промптов |
Шаблоны
Шаблон | Параметры | Описание |
| — | Общее описание изображения |
| — | Извлечение текста |
| — | Анализ диаграмм |
|
| Перевод изображения (по умолчанию: zh) |
|
| Вопросы и ответы по изображению |
Примеры
// Single analysis
{
"tool": "analyze_image",
"args": {
"image": "D:/photos/cat.png",
"prompt": "What is in this image?"
}
}
// Using template
{
"tool": "analyze_image",
"args": {
"image": "https://example.com/chart.png",
"template": "chart"
}
}
// Multi-turn session
{ "tool": "create_session", "args": { "backend": "llama-cpp" } }
// → { "session_id": "xxx" }
{ "tool": "analyze_image", "args": { "image": "...", "prompt": "...", "session_id": "xxx" } }
{ "tool": "analyze_image", "args": { "prompt": "Tell me more", "session_id": "xxx" } }
{ "tool": "close_session", "args": { "session_id": "xxx" } }Константы конфигурации
Неконфиденциальные константы в config.py:
Константа | По умолчанию | Описание |
| 20 | Максимальный размер изображения |
| 10 | Таймаут загрузки изображения (с) |
| 100 | Лимит кэша L1 |
| 500 | Лимит кэша L2 |
| 3600 | TTL кэша онлайн-бэкенда (с) |
| 1800 | TTL кэша локального бэкенда (с) |
| 1800 | Таймаут сессии (с) |
| 5 | Максимум сессий на бэкенд |
| "INFO" | Уровень логирования |
Разработка
uv sync --dev
uv run pytest tests/ -vЧасто задаваемые вопросы
llama-server работает на CPU?
Проверьте llama.ngl в config.json — 99 = всё на GPU, 0 = только CPU.
llama-server не запускается?
Убедитесь, что server_exe исполняемый и пути model/mmproj существуют. Проверьте llama_server.log.
Онлайн-бэкенд возвращает 401?
Недействительный API-ключ автоматически отключает бэкенд. Установите корректный ключ и перезапустите. Или установите "enabled": false, чтобы пропустить.
Конфликт портов?
MCP порт 11432, порт llama-server 11433. Измените llama.port в config.json или порт в server.py.
Related MCP server: MCP Vision Server
中文
特性
双后端支持:本地 llama.cpp + 在线 Qwen3-VL-Flash,统一 OpenAI 兼容 API
三层缓存:L1 图片编码缓存、L2 响应缓存(带 TTL)、L3 llama-server KV Cache
会话管理:多轮对话上下文保持,自动淘汰与超时清理
提示词模板:内置 describe / ocr / chart / translate / qa 模板
生命周期管理:llama-server 子进程与 MCP 同起同停,启动即用,无需手动管理
后端健康:API Key 错误自动禁用后端,支持手动启用/禁用
多图片来源:本地路径、HTTP URL、Base64 Data URI、纯 Base64 回退
架构
MCP Client (SSE :11432)
│
▼
server.py ── 工具层 (analyze_image / create_session / ...)
│
├── session_manager.py ── 会话生命周期
├── cache.py ── L1 图片缓存 + L2 响应缓存
├── image_utils.py ── 图片解析 (路径/URL/Base64)
│
▼
providers/ ── OpenAI 兼容接口
│
├── llama-cpp (localhost:11433) ← llama_launcher.py 自动启动
└── qwen-vl (dashscope API)快速开始
环境要求
注意:本项目使用 llama.cpp 原生二进制(
llama-server),不是llama-cpp-python。 无需安装 Python 绑定(即无需llama-cpp-python,这个和单llama.cpp相互独立),只需下载 llama.cpp 可执行文件即可。
推荐模型下载:从 Qwen3-VL-8B-Instruct-GGUF 下载两个文件:
文件 | 推荐 | 说明 |
视觉模型 |
| Q4_K_M 量化,平衡速度与精度 |
图像编码器 |
| 建议 F16,不必量化 |
这样8G显存就可以跑
纯在线模式(仅用 qwen-vl 后端)可跳过 llama.cpp 和 GGUF 模型。
安装
git clone https://github.com/YC-CLT/VLM-mcp.git
cd VLM-mcp
uv sync配置
cp config.example.json config.json编辑 config.json:
{
"backends": {
"llama-cpp": {
"enabled": true,
"base_url": "http://localhost:11433/v1",
"api_key": "sk-no-key-required",
"model_name": "qwen3-vl"
},
"qwen-vl": {
"enabled": false,
"base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"api_key": "your-dashscope-api-key",
"model_name": "qwen-vl-flash"
}
},
"default_backend": "llama-cpp",
"cache_enabled": true,
"llama": {
"server_exe": "llama-server",
"model": "D:/path/to/Qwen3VL-8B-Instruct-Q4_K_M.gguf",
"mmproj": "D:/path/to/mmproj-Qwen3VL-8B-Instruct-F16.gguf",
"ngl": 99
}
}关键字段:
backends.<name>.enabled:设为false可手动禁用后端llama.model/llama.mmproj:本地模型文件绝对路径(必填)llama.ngl:GPU 层数,99表示全部 offload 到 GPU,0为纯 CPUllama.server_exe:llama-server 可执行文件,默认从 PATH 查找
运行
uv run main.py启动后会自动拉起 llama-server 子进程,MCP 退出时自动停止。无需手动管理 llama-server。
MCP SSE 端点:http://127.0.0.1:11432/sse
从任意目录运行:
uv run --directory D:\CodeFile\VLM-mcp main.py
MCP 客户端配置
在你的 MCP 客户端配置文件中添加:
{
"mcpServers": {
"vlm-mcp": {
"url": "http://127.0.0.1:11432/sse"
}
}
}MCP 工具
工具 | 参数 | 说明 |
|
| 分析图片,支持模板和会话 |
|
| 创建多轮对话会话 |
|
| 关闭会话 |
| — | 列出所有活跃会话 |
| — | 列出后端及其状态 |
| — | 列出可用提示词模板 |
模板
模板 | 参数 | 说明 |
| — | 通用图片描述 |
| — | 文字提取 |
| — | 图表分析 |
|
| 图片翻译(默认中文) |
|
| 图片问答 |
使用示例
// 单次分析
{
"tool": "analyze_image",
"args": {
"image": "D:/photos/cat.png",
"prompt": "这张图片里有什么?"
}
}
// 使用模板
{
"tool": "analyze_image",
"args": {
"image": "https://example.com/chart.png",
"template": "chart"
}
}
// 多轮会话
{ "tool": "create_session", "args": { "backend": "llama-cpp" } }
// → { "session_id": "xxx" }
{ "tool": "analyze_image", "args": { "image": "...", "prompt": "...", "session_id": "xxx" } }
{ "tool": "analyze_image", "args": { "prompt": "继续分析", "session_id": "xxx" } }
{ "tool": "close_session", "args": { "session_id": "xxx" } }配置常量
非敏感常量集中于 config.py,可在代码中直接修改:
常量 | 默认值 | 说明 |
| 20 | 图片最大体积 |
| 10 | 图片下载超时(秒) |
| 100 | L1 缓存上限 |
| 500 | L2 缓存上限 |
| 3600 | 在线后端缓存 TTL(秒) |
| 1800 | 本地后端缓存 TTL(秒) |
| 1800 | 会话超时(秒) |
| 5 | 每后端最大会话数 |
| "INFO" | 日志级别 |
开发
uv sync --dev
uv run pytest tests/ -v常见问题
llama-server 跑在 CPU 上?
检查 config.json 中 llama.ngl 是否为 99(全 GPU),0 为纯 CPU。
llama-server 启动失败?
确认 server_exe 可执行(PATH 中或绝对路径),model/mmproj 路径存在。查看 llama_server.log。
在线后端 401 错误?
API Key 无效时会自动禁用该后端,设好 Key 后重启即可恢复。也可手动设 "enabled": false 跳过。
端口被占用?
MCP 端口 11432,llama-server 端口 11433。修改 config.json 中 llama.port 或 server.py 中端口号。
许可
MIT
This server cannot be installed
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 Servers
- AlicenseAqualityDmaintenanceEnables image analysis and understanding using Vision Language Models through OpenAI-compatible APIs. Supports analyzing images from URLs or local files with custom prompts.12MIT
- AlicenseAqualityDmaintenanceProvides advanced image analysis capabilities including object recognition, OCR text extraction, and multi-turn visual dialogues using OpenAI-compatible APIs. It supports both local files and Base64 inputs with additional features for session persistence and web-based configuration management.3MIT
- FlicenseNot gradedqualityCmaintenanceEnables image recognition using vision models via OpenAI-compatible APIs, supporting multiple platforms like OpenAI, DeepSeek, and Ollama.
- 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
Related MCP Connectors
LLM chat, text summarization and AI image generation
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Universal AI API Orchestrator — 1,554 tools, 96 services. One install.
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/YC-CLT/VLM-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server