photo-vlm-mcp
A local Ollama-backed MCP server that gives coding assistants a portable photo-understanding toolset including photo analysis, OCR, scene inspection, comparison, and metadata extraction.
README
photo-vlm-mcp
photo-vlm-mcp is a local, Ollama-backed MCP server that gives coding assistants a
portable photo-understanding toolset:
analyze_photo- ask questions about a real-world photo.photo_ocr- extract text from labels, receipts, whiteboards, signs, and photographed pages.inspect_scene- return structured objects, scene context, visible text, quality, and uncertainty.compare_photos- compare before/after or near-duplicate photos.extract_metadata- read dimensions, orientation, EXIF fields, GPS, and optional SHA-256.health- check Ollama reachability and configured model availability.
It is designed for user-level registration with Claude Code, Codex, Antigravity, Cursor, Cline, Windsurf, Zed, and other MCP clients.
Requirements
- Python 3.11+
- Ollama running locally
- A vision-capable Ollama model
Recommended local models:
ollama pull qwen3-vl:8b
ollama pull minicpm-v
If qwen3-vl:8b is unavailable in your Ollama build, use qwen2.5vl:7b or another
vision model from ollama.com/search?c=vision.
Install
Directly from GitHub:
python -m pip install "git+https://github.com/YehudRaanan/photo-vlm-mcp.git"
Or run without a persistent install using uvx:
uvx --from "git+https://github.com/YehudRaanan/photo-vlm-mcp.git" photo-vlm-mcp --version
For local development:
git clone https://github.com/YehudRaanan/photo-vlm-mcp.git
cd photo-vlm-mcp
python -m pip install -e .
With optional Tesseract OCR support:
python -m pip install -e ".[tesseract]"
Run
photo-vlm-mcp
The server uses MCP over stdio, so it normally runs under an MCP client rather than as a long-lived terminal command.
Helpful local checks:
photo-vlm-mcp --version
photo-vlm-mcp --print-config
Register With Claude Code
claude mcp add photo-vlm --scope user -- photo-vlm-mcp
With explicit model config:
claude mcp add photo-vlm --scope user `
-e OLLAMA_URL=http://127.0.0.1:11434 `
-e PHOTO_VLM_MODEL=qwen3-vl:8b `
-e PHOTO_OCR_MODEL=minicpm-v `
-- photo-vlm-mcp
Register With Codex / Antigravity / Other MCP Clients
Add this server to the client user-level MCP config:
{
"mcpServers": {
"photo-vlm": {
"command": "photo-vlm-mcp",
"env": {
"OLLAMA_URL": "http://127.0.0.1:11434",
"PHOTO_VLM_MODEL": "qwen3-vl:8b",
"PHOTO_OCR_MODEL": "minicpm-v"
}
}
}
}
If the console script is not on PATH, use:
{
"command": "python",
"args": ["-m", "photo_vlm_mcp"]
}
Configuration
| Variable | Default | Meaning |
|---|---|---|
OLLAMA_URL |
http://127.0.0.1:11434 |
Ollama endpoint |
PHOTO_VLM_MODEL |
qwen3-vl:8b |
Model for analysis, scene inspection, comparison |
PHOTO_OCR_MODEL |
minicpm-v |
Model for VLM OCR |
PHOTO_VLM_MAX_TOKENS |
1024 |
Default generation limit |
PHOTO_VLM_TIMEOUT |
120 |
Ollama request timeout in seconds |
PHOTO_VLM_KEEP_ALIVE |
10m |
Ollama keep-alive setting |
PHOTO_VLM_MAX_DIM |
2048 |
Downscale longest side before inference |
PHOTO_VLM_MAX_IMAGE_MB |
20 |
Reject larger images |
PHOTO_VLM_FETCH_TIMEOUT |
15 |
URL fetch timeout |
PHOTO_VLM_ALLOW_PRIVATE_URLS |
0 |
Allow private/loopback URLs |
PHOTO_VLM_ALLOWED_ROOTS |
unset | Optional path allow-list, separated by ; on Windows or : elsewhere |
Legacy aliases VLM_MODEL, OCR_MODEL, and related VLM_* variables are also accepted.
QA
python -m pytest
python -m ruff check src tests scripts
python -m black --check src tests scripts
python -m isort --check-only src tests scripts
The unit tests mock Ollama and validate image input handling, metadata extraction, prompt construction, and client behavior. Live model quality evaluation belongs in a separate environment with Ollama and selected models installed.
See also:
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.