Skip to main content
Glama

Vision MCP Server (TypeScript)

Локальный сервер Model Context Protocol, который оборачивает мультимодальную модель MiMo-V2.5 от Xiaomi как инструмент зрения для ИИ-агентов.

Text Agent (e.g. DeepSeek / Claude)
  → MCP Client → inspect_image tool
  → Local image sandbox + Sharp crop/scale
  → MiMo-V2.5 (vision model, Anthropic Messages API)
  → VisualObservation JSON
  → Agent continues reasoning

Предварительные требования

Быстрый старт

git clone https://github.com/wenren93/mimo-vision-mcp.git
cd mimo-vision-mcp
npm install
cp .env.example .env
# Edit .env and set MIMO_API_KEY
npm run build
npm run demo -- /path/to/image.png "What is in this image?"

Запуск в качестве MCP-сервера

npm run start              # STDIO mode
npm run inspect            # MCP Inspector UI

Интеграция с Claude

claude mcp add vision \
  -e MIMO_API_KEY='your-key' \
  -e MIMO_BASE_URL='https://api.xiaomimimo.com/anthropic' \
  -e VISION_MODEL='mimo-v2.5' \
  -e VISION_ASSET_ROOT='/absolute/path/to/assets' \
  -- node /absolute/path/to/dist/server.js

📖 Полная документация на китайском ниже.


Документация на китайском — локальный MiMo Vision MCP (TypeScript)

Это полный конвейер без OpenRouter:

DeepSeek V4 Pro(纯文本主 Agent,Anthropic Messages 兼容 API)
  -> MCP Client
  -> 本地 inspect_image 工具
  -> 本地图片沙箱 + Sharp 裁剪/缩放
  -> MiMo-V2.5(Anthropic Messages 兼容 API)
  -> VisualObservation JSON
  -> DeepSeek 继续推理或操作浏览器

MiMo-V2.5 изначально поддерживает текст, изображения, видео и аудио, поэтому здесь он используется только как «визуальный датчик», обусловленный задачей. DeepSeek по-прежнему отвечает за планирование, вызов инструментов и итоговый ответ.

Проект включает:

  • src/server.ts: STDIO Vision MCP Server.

  • src/mimo-vision.ts: клиент понимания изображений MiMo-V2.5.

  • src/demo-agent.ts: полная демонстрация цикла DeepSeek Official API + MCP-инструменты.

  • src/add-asset.ts: безопасный импорт локальных изображений.

  • src/asset-store.ts: границы файлов, перекодирование, обрезка и сопоставление координат.

  • src/schemas.ts: Zod-схемы для вывода MiMo и вывода MCP.

Проект использует @modelcontextprotocol/server и @modelcontextprotocol/client из MCP TypeScript SDK v2; требуется Node.js 20 или выше. MCP TypeScript SDK

1. Рекомендуемый способ: локальный MCP + API Xiaomi MiMo

Установка:

cd mimo-vision-mcp
npm install
cp .env.example .env

Отредактируйте .env:

# MCP 视觉工具需要
MIMO_API_KEY=你的小米MiMo密钥
MIMO_BASE_URL=https://api.xiaomimimo.com/anthropic
VISION_MODEL=mimo-v2.5

# 仅端到端 Demo Agent 需要
DEEPSEEK_API_KEY=你的DeepSeek密钥
DEEPSEEK_BASE_URL=https://api.deepseek.com/anthropic
TEXT_MODEL=deepseek-v4-pro

VISION_ASSET_ROOT=./assets
VISION_MAX_FILE_MB=10
VISION_MAX_PIXELS=40000000
VISION_TIMEOUT_MS=45000

Адрес запроса MiMo — https://api.xiaomimimo.com/anthropic/v1/messages. Изображения передаются через Anthropic content block: type=image, source.type=base64, с отдельными полями media_type и чистыми данными Base64; публичный URL изображения не требуется. Понимание изображений MiMo; Anthropic Messages API MiMo

Related MCP server: VisionPower

2. Проверка полного конвейера одной командой

npm run demo -- /绝对路径/page.png "图中登录按钮在哪里?"

Процесс выполнения:

  1. Изображение перекодируется в PNG, генерируется случайный assetId.

  2. Демо запускает локальный MCP-сервер и читает список инструментов.

  3. DeepSeek V4 Pro решает вызвать inspect_image.

  4. MCP-сервер отправляет контролируемое изображение в mimo-v2.5.

  5. MiMo возвращает OCR, визуальные доказательства и нормализованные координаты.

  6. Zod проверяет выходные данные и сопоставляет координаты локальной обрезки с исходным изображением.

  7. DeepSeek формирует ответ на основе визуальных наблюдений.

На стороне DeepSeek используется https://api.deepseek.com/anthropic/v1/messages, идентификатор модели — deepseek-v4-pro; маршрутизация через третьи стороны не используется. Anthropic API DeepSeek; Tool Calls DeepSeek

3. Отдельный запуск MCP-сервера

Самому MCP-серверу нужен только MIMO_API_KEY:

npm run build
npm run start

Использование MCP Inspector:

npm run inspect

Сначала импортируйте тестовое изображение:

npm run add-asset -- /绝对路径/page.png

MCP-сервер также предоставляет инструмент-мост import_image. Claude может сначала вызвать import_image({ sourcePath }), а затем передать возвращённый assetId в inspect_image:

claude mcp add vision \
  -e MIMO_API_KEY='你的 MiMo API Key' \
  -e MIMO_BASE_URL='https://api.xiaomimimo.com/anthropic' \
  -e VISION_MODEL='mimo-v2.5' \
  -e VISION_ASSET_ROOT='/绝对路径/mimo-vision-mcp/assets' \
  -- node /绝对路径/mimo-vision-mcp/dist/server.js

Порядок вызова:

import_image({ sourcePath: "/你的路径/page.png" })
→ { assetId: "img_....png" }
→ inspect_image({ assetId: "img_....png", goal: "找到登录按钮" })

При импорте изображение перекодируется в PNG и копируется в песочницу VISION_ASSET_ROOT.

Параметры вызова:

{
  "assetId": "img_生成的ID.png",
  "goal": "找到登录按钮并返回位置",
  "mode": "ui",
  "resolution": "auto"
}

4. Подключение собственного агента

Скопируйте mcp.config.example.json и замените пути и ключи на реальные значения:

{
  "mcpServers": {
    "vision": {
      "command": "node",
      "args": ["/绝对路径/mimo-vision-mcp/dist/server.js"],
      "env": {
        "MIMO_API_KEY": "你的密钥",
        "MIMO_BASE_URL": "https://api.xiaomimimo.com/anthropic",
        "VISION_MODEL": "mimo-v2.5",
        "VISION_ASSET_ROOT": "/绝对路径/mimo-vision-mcp/assets"
      }
    }
  }
}

Если обвязка агента использует Anthropic Messages, можно ориентироваться на src/demo-agent.ts:

  1. client.listTools() читает инструменты MCP.

  2. Сопоставьте MCP Schema с tools[].name/description/input_schema.

  3. После получения content[].type=tool_use выполните client.callTool().

  4. Поместите structuredContent в content block tool_result пользовательского сообщения и передайте его обратно в DeepSeek.

5. Развёртывание инференса MiMo-V2.5 локально

Приложение и MCP-часть по-прежнему используют TypeScript; для уровня инференса можно использовать vLLM с поддержкой Anthropic Messages API. После запуска совместимого сервиса нужно изменить только:

MIMO_BASE_URL=http://127.0.0.1:8000
MIMO_API_KEY=local
VISION_MODEL=mimo-v2.5

vLLM уже предоставляет конечную точку /v1/messages, совместимую с Anthropic. Основной способ запуска приведён ниже; реальные параметры параллелизма необходимо настраивать в зависимости от GPU-кластера:

vllm serve XiaomiMiMo/MiMo-V2.5 \
  --served-model-name mimo-v2.5 \
  --host 127.0.0.1 \
  --port 8000 \
  --trust-remote-code \
  --reasoning-parser qwen3

MiMo-V2.5 — это FP8 MoE с 310B общих параметров и 15B активных. 15B — это лишь объём активаций на каждый токен, а не вес, который нужно загрузить; обычный персональный компьютер не сможет практически разместить исходную модель. Официальное эталонное развёртывание использует параллельные вычисления на нескольких GPU. Карточка модели и развёртывание MiMo-V2.5; Anthropic Messages API vLLM

Таким образом, изображения не покидают локальную машину; но в примере главный агент DeepSeek по-прежнему вызывает официальный API DeepSeek. Если требуется полностью автономный конвейер, необходимо дополнительно развернуть основную текстовую модель.

6. Интеграция скриншотов браузера

Исполнитель браузера сохраняет скриншот текущего viewport в VISION_ASSET_ROOT:

const assetId = `shot_${crypto.randomUUID()}.png`;
await page.screenshot({
  path: path.join(process.env.VISION_ASSET_ROOT!, assetId),
  fullPage: false,
});

inspect_image возвращает координаты в диапазоне 0..1. Нажмите в центр:

const clickX = (box.x + box.width / 2) * viewport.width;
const clickY = (box.y + box.height / 2) * viewport.height;
await page.mouse.click(clickX, clickY);

По-прежнему рекомендуется отдавать приоритет DOM/Accessibility Tree, а визуальные данные использовать как запасной вариант. Перед кликом сделайте новый скриншот, чтобы прокрутка, анимация или всплывающие окна не сделали координаты недействительными.

7. JSON-вывод и границы безопасности

В документации MiMo, совместимой с Anthropic, в настоящее время не заявлены параметры response_format или строгой JSON Schema, поэтому этот проект не отправляет поля, специфичные для OpenAI, а делает следующее: системный промпт требует чистый JSON, в промпт встроена Schema, выполняется разбор JSON и строгая проверка Zod. Несоответствующие результаты завершаются ошибкой; полуструктурированный текст не передаётся главному агенту.

  • Параметры MCP принимают только assetId, но не произвольные URL или абсолютные пути.

  • Изображения можно читать только из VISION_ASSET_ROOT; при импорте они перекодируются и очищаются от метаданных.

  • Ограничиваются размер файла и максимальное количество пикселей, чтобы снизить риск «картинной бомбы».

  • Текст на изображениях считается ненадёжными данными и не может использоваться как инструкция для агента.

  • В STDIO stdout — это канал MCP JSON-RPC; логи можно писать только в stderr.

8. Разработка

# 安装依赖
npm install

# 开发模式运行
npm run dev

# 类型检查
npm run typecheck

# 代码检查
npm run lint
npm run lint:fix

# 代码格式化
npm run format
npm run format:check

# 运行测试
npm test

Тесты не вызывают внешние модели; они проверяют импорт изображений, сопоставление обрезки и реальное STDIO MCP-рукопожатие. Перед выпуском рекомендуется добавить регрессионные образцы для китайского OCR, веб-интерфейсов, размытых скриншотов, диаграмм и инъекций в промпты изображений.

9. Вклад

Приветствуется вклад! Подробнее см. в CONTRIBUTING.md.

10. Лицензия

Проект распространяется под лицензией MIT.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that uses Xiaomi MiMo v2.5 multimodal model to provide image recognition capabilities (description, multi-image analysis, OCR, and image info validation) for text-only main models like deepseek-v4-flash, accepting local paths, URLs, file://, and base64 data inputs.
    4
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for local Ollama vision analysis, enabling text-only agents like Claude Code to inspect images via a single tool. Processes images locally with Ollama, keeping image bytes on the machine and returning text reports.
    2
    MIT

View all related MCP servers

Related MCP Connectors

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

  • MCP server for Hailuo (MiniMax) AI video generation

  • MCP server for Grok Imagine AI video generation

View all MCP Connectors

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/wenren93/mimo-vision-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server