mcp-omni-context
MCP server that gives AI chat real vision by reading images, files, logs, and zip archives via local OCR in any language, with privacy-first processing.
README
<div align="center">
<img src="https://raw.githubusercontent.com/0xnurrabby/mcp-omni-context/master/assets/logo.svg" alt="mcp-omni-context" width="110">
mcp-omni-context
Give any AI chat real vision.
Read images, files, and zip archives in any language, for any AI model. Works everywhere MCP works. No Python, no servers. OCR runs locally by default.
</div>
โจ Features
| Feature | What it does | |
|---|---|---|
| ๐ผ๏ธ | Screenshot reading | Reads any screenshot, at any angle, in any language |
| ๐ค | Optional AI vision | Add a key in .env โ images read by GPT-4o-mini or Gemini (โ $0.001/image) |
| ๐ | Auto fallback | If the AI API fails (or no key set), it silently uses local OCR instead |
| ๐งฒ | Auto-detection | Pasted/dropped screenshots are found automatically in the temp/clipboard folders โ no copying files anywhere |
| ๐ | File & log reader | Code files and error traces, line by line |
| ๐ฆ | Zip explorer | Visual file tree plus every code file inside |
| ๐ | Any language | English, Bengali, Hindi, Arabic, Chinese and more |
| ๐ช | Zero setup for users | One command installs it for any AI tool |
| ๐ | Privacy first | With no API key, OCR runs 100% locally |
๐ Download & Run
Everything lives behind two tools: read_context_data and find_images.
Step 1 ยท Check you have Node.js (20.17+)
node -v
Step 2 ยท No command? Just ask your AI assistant
"please setup mcp-omni-context"
Step 3 ยท Or run it yourself
npx -y mcp-omni-context setup
Then restart your AI tool. Done. That's the whole setup.
It configures opencode, Codex, Claude Desktop, Cursor, Windsurf, Cline, Roo,
and VS Code, backs up your existing configs, and creates an uploads folder at
~/.mcp-omni-context/uploads.
๐ก Pasting a screenshot? Send it straight to your assistant. If the path is not obvious, the assistant calls
find_imagesto locate the freshest images in your temp, clipboard, Downloads, Desktop, Pictures, and uploads folders. You never have to save or copy a file manually.
โ๏ธ Optional: better accuracy with AI vision (~$0.001 / image)
By default every image is read by local OCR (tesseract.js) โ free and private.
For noticeably better UI/error-screen reading, add one API key to a file named
.env in your project folder (the same folder you run the AI tool from).
<details> <summary><b>Option A โ OpenAI (recommended)</b></summary>
- Create an API key at https://platform.openai.com/api-keys
- Create a
.envfile in your project and paste:
OPENAI_API_KEY=sk-your-key-here
That's it. Images are resized to max 1024px with sharp, compressed to JPEG,
and sent with detail: "low" โ keeping the cost at roughly $0.001 per image
with GPT-4o-mini.
</details>
<details> <summary><b>Option B โ Google Gemini</b></summary>
- Get a free key at https://aistudio.google.com/app/apikey
- Create a
.envfile in your project and paste:
GEMINI_API_KEY=your-gemini-key
</details>
<details> <summary><b>Where else can the key live?</b></summary>
Keys are read from (first match wins):
- Your environment variables (e.g.
set OPENAI_API_KEY=...on Windows,export OPENAI_API_KEY=...on macOS/Linux), or - a
.envfile in the current project folder, or - a
.envfile at~/.mcp-omni-context/.env.
Existing environment variables are always respected over .env values.
New keys take effect immediately; you only need to restart the AI tool.
</details>
๐ก๏ธ Fail-safe: if the vision API is down, returns an error, or the key is missing, the tool automatically falls back to local OCR โ you always get a result, never a crash.
๐ ๏ธ Tools
read_context_data
Reads images, files, logs, and zip archives and returns a strictly-ordered, LLM-ready text dump. Accepts:
- a path:
{"items": ["C:/Users/you/Desktop/shot.png"]} - many paths in one call:
{"items": ["a.png", "b.png", "error.log", "src/"]} - a bare file name (auto-resolved from the system temp/clipboard folders)
- an in-memory buffer:
{"items": [{"name": "a.png", "base64": "..."}]}
Each image is processed sequentially and wrapped in a clear delimiter:
--- [Image Index 1] Visual Analysis ---
[Source: C:/Users/you/Desktop/shot.png]
[Vision AI ยท gpt-4o-mini ยท detail=low ยท jpeg 181.2 KB ยท raster 2560x1440]
<the analysis / transcribed text>
--- [Image Index 2] Visual Analysis ---
...
find_images
Locates the freshest screenshots across your temp, clipboard, Downloads, Desktop, Pictures, Telegram Desktop, and uploads folders โ newest first.
find_images โ 10 newest images
find_images maxResults: 50 โ up to 50
find_images query: "bug" โ only files whose name contains "bug"
find_images sinceMinutes: 10โ only images from the last 10 minutes
๐ฆ Updating
Updates are automatic. Every client runs this via npx -y, so the newest
version loads on the next start. Zero clicks, zero reinstall.
<details> <summary><b>Want to update right now?</b></summary>
Just tell your assistant:
"update mcp-omni-context"
Or run the one-command update yourself:
npx -y mcp-omni-context update
It fetches the latest version and refreshes your configs and rules.
</details>
โ๏ธ Setup (manual)
The installer writes all of this for you. For the curious, here is how each client is configured.
<details> <summary><b>opencode</b> ยท <code>opencode.json</code></summary>
{
"mcp": {
"omni-context": {
"type": "local",
"command": ["npx", "-y", "mcp-omni-context"],
"enabled": true
}
}
}
</details>
<details> <summary><b>Claude Desktop</b> ยท <code>claude_desktop_config.json</code></summary>
{
"mcpServers": {
"omni-context": {
"command": "npx",
"args": ["-y", "mcp-omni-context"]
}
}
}
</details>
<details> <summary><b>Cline / Cursor / Windsurf / Roo</b> ยท <code>mcpServers</code></summary>
{
"mcpServers": {
"omni-context": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-omni-context"]
}
}
}
</details>
<details> <summary><b>Codex CLI</b> ยท <code>~/.codex/config.toml</code></summary>
[mcp_servers.omni-context]
command = "npx"
args = ["-y", "mcp-omni-context"]
</details>
โ๏ธ Environment variables
All of these can go in a .env file or your real environment.
| Variable | Default | What it does |
|---|---|---|
OPENAI_API_KEY |
โ | Enables GPT-4o-mini vision (resized to 1024px, detail: "low", ~$0.001/img) |
OPENAI_MODEL |
gpt-4o-mini |
Override the OpenAI vision model |
OPENAI_BASE_URL |
https://api.openai.com/v1 |
Use any OpenAI-compatible endpoint |
GEMINI_API_KEY |
โ | Enables Google Gemini vision instead |
GEMINI_MODEL |
gemini-2.0-flash |
Override the Gemini model |
MCP_OMNI_VISION |
auto |
auto ยท openai ยท gemini ยท tesseract (force local OCR) |
MCP_OMNI_ENV_FILE |
โ | Path to a specific .env file to read |
MCP_OMNI_VERBOSE |
off | 1 to log OCR/vision progress to stderr |
MCP_OMNI_PSM |
3 |
tesseract page-segmentation mode (0โ13) |
๐ How it reads
Your assistant reads context through read_context_data. It accepts any number
of images, files, logs, or zip archives in order, and returns a strictly ordered,
LLM-ready text dump.
<details> <summary><b>Reading in any language</b></summary>
OCR defaults to English + Bengali. For other languages, just tell your assistant the language (Hindi, Arabic, Chinese, Spanish, French, German, Russian, Japanese, Korean, Urdu, and many more). The language data downloads itself, or pre-download once:
npx -y mcp-omni-context --warmup eng,ben,hin,spa,fra,urd
</details>
<details> <summary><b>Project structure</b></summary>
src/
โโโ index.ts # the entire server (tool + vision + zip tree + setup + update)
dist/ # compiled output (published)
README.md
package.json
</details>
๐ Safety
| Guard | What it means | |
|---|---|---|
| ๐ซ | Sensitive files | .env, id_rsa, *.pem, secrets.*, tokens are skipped |
| ๐ฆ | Binary & heavy | ignore node_modules, media, and oversized blobs |
| ๐ก๏ธ | Zip-slip | blocks .. and absolute paths inside archives |
| ๐งผ | Auto-cleanup | temp files are purged after every run |
| ๐ธ | Low cost | AI vision resizes to 1024px and sends detail: "low" (~$0.001/img) |
๐ ๏ธ CLI reference
mcp-omni-context start the MCP server (stdio)
mcp-omni-context setup configure all supported clients
mcp-omni-context update fetch latest + refresh configs and rules
mcp-omni-context --check-update check the latest published version
mcp-omni-context --warmup [langs] pre-download OCR language data
mcp-omni-context --selftest check OCR works on your machine
mcp-omni-context --help show help
mcp-omni-context --version show version
<div align="center">
MIT License ยท built by @0xnurrabby
</div>
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.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
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.