mimo-vision-mcp
Vision MCP Server (TypeScript)
Ein lokaler Model Context Protocol-Server, der das multimodale Modell MiMo-V2.5 von Xiaomi als Vision-Tool für KI-Agenten kapselt.
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 reasoningVoraussetzungen
Node.js >= 20
Schnellstart
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?"Als MCP-Server ausführen
npm run start # STDIO mode
npm run inspect # MCP Inspector UIIn Claude integrieren
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📖 Vollständige Dokumentation auf Chinesisch unten.
Chinesische Dokumentation — Lokaler MiMo-Vision-MCP (TypeScript)
Dies ist eine vollständige Pipeline, die nicht über OpenRouter läuft:
DeepSeek V4 Pro(纯文本主 Agent,Anthropic Messages 兼容 API)
-> MCP Client
-> 本地 inspect_image 工具
-> 本地图片沙箱 + Sharp 裁剪/缩放
-> MiMo-V2.5(Anthropic Messages 兼容 API)
-> VisualObservation JSON
-> DeepSeek 继续推理或操作浏览器MiMo-V2.5 unterstützt nativ Text-, Bild-, Video- und Audioeingaben. Daher wird es hier nur als aufgabenkonditionierter „visueller Sensor“ verwendet. DeepSeek ist weiterhin für Planung, Tool-Aufrufe und die endgültige Antwort verantwortlich.
Das Projekt enthält:
src/server.ts: STDIO-Vision-MCP-Server.src/mimo-vision.ts: MiMo-V2.5-Bildverständnis-Client.src/demo-agent.ts: Vollständige Demo mit offizieller DeepSeek-API und MCP-Tool-Schleife.src/add-asset.ts: Sicherer Import lokaler Bilder.src/asset-store.ts: Dateigrenzen, Neucodierung, Zuschneiden und Koordinatenabbildung.src/schemas.ts: Zod-Schemas für MiMo-Ausgabe und MCP-Ausgabe.
Das Projekt verwendet @modelcontextprotocol/server und @modelcontextprotocol/client aus dem MCP TypeScript SDK v2 und benötigt Node.js 20 oder höher. MCP TypeScript SDK
1. Empfohlener Ansatz: Lokaler MCP + 小米 MiMo API
Installation:
cd mimo-vision-mcp
npm install
cp .env.example .env.env bearbeiten:
# 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=45000Die MiMo-Anfrageadresse lautet https://api.xiaomimimo.com/anthropic/v1/messages. Bilder werden mit einem Anthropic-Content-Block übergeben: type=image, source.type=base64, wobei media_type und die reinen Base64-Daten getrennt übergeben werden; eine öffentliche Bild-URL ist nicht erforderlich. MiMo Bildverständnis; MiMo Anthropic Messages API
Related MCP server: VisionPower
2. Die gesamte Pipeline mit einem einzigen Befehl verifizieren
npm run demo -- /绝对路径/page.png "图中登录按钮在哪里?"Ablauf:
Das Bild wird als PNG neu codiert und eine zufällige
assetIdgeneriert.Die Demo startet den lokalen MCP-Server und liest die Werkzeugliste.
DeepSeek V4 Pro entscheidet,
inspect_imageaufzurufen.Der MCP-Server sendet das kontrollierte Bild an
mimo-v2.5.MiMo liefert OCR, visuelle Belege und normalisierte Koordinaten.
Zod validiert die Ausgabe und bildet die lokalen Zuschneidekoordinaten auf das Originalbild ab.
DeepSeek erzeugt die Antwort auf Basis der visuellen Beobachtung.
Auf der DeepSeek-Seite wird https://api.deepseek.com/anthropic/v1/messages verwendet; die Modell-ID ist deepseek-v4-pro. Es wird nicht über Dritte geroutet. DeepSeek Anthropic API; DeepSeek Tool Calls
3. MCP-Server eigenständig ausführen
Der MCP-Server selbst benötigt nur MIMO_API_KEY:
npm run build
npm run startMCP Inspector verwenden:
npm run inspectZuerst ein Testbild importieren:
npm run add-asset -- /绝对路径/page.pngDer MCP-Server bietet auch das Brückenwerkzeug import_image. Claude kann zuerst import_image({ sourcePath }) aufrufen und dann die zurückgegebene assetId an inspect_image übergeben:
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.jsAufrufreihenfolge:
import_image({ sourcePath: "/你的路径/page.png" })
→ { assetId: "img_....png" }
→ inspect_image({ assetId: "img_....png", goal: "找到登录按钮" })Beim Import wird das Bild als PNG neu codiert und in die Sandbox VISION_ASSET_ROOT kopiert.
Aufrufparameter:
{
"assetId": "img_生成的ID.png",
"goal": "找到登录按钮并返回位置",
"mode": "ui",
"resolution": "auto"
}4. Einbindung in einen eigenen Agenten
Kopieren Sie mcp.config.example.json und ändern Sie Pfad und Schlüssel auf die tatsächlichen Werte:
{
"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"
}
}
}
}Wenn der Agent-Harness Anthropic Messages verwendet, finden Sie ein Beispiel in src/demo-agent.ts:
client.listTools()liest die MCP-Tools.Das MCP-Schema wird auf
tools[].name/description/input_schemaabgebildet.Nach dem Empfang von
content[].type=tool_usewirdclient.callTool()ausgeführt.structuredContentwird in dentool_result-Content-Block der Benutzernachricht eingefügt und an DeepSeek zurückgegeben.
5. MiMo-V2.5-Inferenz ebenfalls lokal bereitstellen
Anwendung und MCP-Teil verwenden weiterhin TypeScript; für die Modellinferenzschicht kann vLLM verwendet werden, das die Anthropic Messages API unterstützt. Nach dem Start des kompatiblen Dienstes muss nur Folgendes geändert werden:
MIMO_BASE_URL=http://127.0.0.1:8000
MIMO_API_KEY=local
VISION_MODEL=mimo-v2.5vLLM bietet bereits einen Anthropic-kompatiblen Endpunkt unter /v1/messages. Die zentrale Startmethode lautet wie folgt; die tatsächlichen Parallelitätsparameter müssen an den GPU-Cluster angepasst werden:
vllm serve XiaomiMiMo/MiMo-V2.5 \
--served-model-name mimo-v2.5 \
--host 127.0.0.1 \
--port 8000 \
--trust-remote-code \
--reasoning-parser qwen3MiMo-V2.5 ist ein FP8-MoE mit 310B Gesamtparametern und 15B aktivierten Parametern. 15B ist nur die Aktivierungsmenge pro Token, was nicht bedeutet, dass nur 15B Gewichte geladen werden müssen; ein normaler PC kann das Originalmodell nicht praktikabel ausführen. Die offizielle Referenzbereitstellung erfolgt mit mehreren GPUs parallel. MiMo-V2.5 Modellkarte und Bereitstellung; vLLM Anthropic Messages API
Auf diese Weise verlassen Bilder den Computer nicht; der DeepSeek-Hauptagent im Beispiel ruft jedoch weiterhin die offizielle DeepSeek-API auf. Wenn die gesamte Pipeline vollständig offline sein soll, muss zusätzlich das Haupttextmodell selbst gehostet werden.
6. Browser-Screenshot-Anbindung
Der Browser-Executor schreibt den aktuellen Viewport-Screenshot in 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 gibt Koordinaten von 0 bis 1 zurück. Klicken Sie auf den Mittelpunkt:
const clickX = (box.x + box.width / 2) * viewport.width;
const clickY = (box.y + box.height / 2) * viewport.height;
await page.mouse.click(clickX, clickY);Es wird weiterhin empfohlen, zuerst den DOM-/Accessibility-Tree zu verwenden und die visuelle Methode als Fallback einzusetzen. Erstellen Sie vor dem Klicken einen neuen Screenshot, damit Scrollen, Animationen oder Pop-ups die Koordinaten nicht ungültig machen.
7. JSON-Ausgabe und Sicherheitsgrenzen
Die Anthropic-kompatible Dokumentation von MiMo deklariert derzeit weder response_format noch strenge JSON-Schema-Parameter. Daher sendet dieses Projekt keine OpenAI-spezifischen Felder, sondern führt Folgendes aus: Der Systemprompt verlangt reines JSON, das Schema wird in den Prompt eingebettet, JSON wird geparst und mit Zod strikt validiert. Nicht konforme Ergebnisse schlagen direkt fehl; halbstrukturierter Text wird nicht an den Hauptagenten übergeben.
MCP-Parameter akzeptieren nur
assetId, keine beliebige URL und keine absoluten Pfade.Bilder können nur aus
VISION_ASSET_ROOTgelesen werden; beim Import werden sie neu codiert und Metadaten entfernt.Dateigröße und maximale Pixelanzahl werden begrenzt, um das Risiko von Bildbomben zu verringern.
Text in Bildern wird als nicht vertrauenswürdige Daten behandelt und kann nicht als Anweisung für den Agenten verwendet werden.
Der stdout von STDIO ist der MCP-JSON-RPC-Kanal; Logs dürfen nur auf stderr geschrieben werden.
8. Entwicklung
# 安装依赖
npm install
# 开发模式运行
npm run dev
# 类型检查
npm run typecheck
# 代码检查
npm run lint
npm run lint:fix
# 代码格式化
npm run format
npm run format:check
# 运行测试
npm testDie Tests rufen keine externen Modelle auf; sie validieren den Bildimport, die Zuschneidezuordnung und den echten STDIO-MCP-Handshake. Vor der Veröffentlichung wird empfohlen, Regressionstestbeispiele für chinesische OCR, Web-Oberflächen, unscharfe Screenshots, Diagramme und Bild-Prompt-Injection hinzuzufügen.
9. Beiträge
Beiträge sind willkommen! Weitere Informationen finden Sie in CONTRIBUTING.md.
10. Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert.
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
- AlicenseBqualityCmaintenanceA lightweight MCP server for image analysis using any OpenAI-compatible API endpoint, enabling AI agents to analyze images via a single tool.160MIT
- AlicenseAqualityAmaintenanceA portable image-understanding MCP server that lets agents analyze local images, URLs, or base64 images via an OpenAI-compatible vision model.176865MIT

mimo-vision-mcpofficial
AlicenseAqualityCmaintenanceAn 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.41MIT- AlicenseNot gradedqualityBmaintenanceMCP 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.2MIT
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
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/wenren93/mimo-vision-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server