yandex-vision-ocr-mcp
Provides OCR capabilities using Yandex Vision API, allowing text extraction from images and PDFs with support for multiple recognition models and languages.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@yandex-vision-ocr-mcpextract text from receipt.png"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Yandex Vision OCR MCP
A Model Context Protocol (MCP) server that exposes Yandex Vision OCR as tools, so any MCP-compatible client — opencode, Claude Desktop, Cursor, Cline — can extract text from images and PDFs.
Features
recognize_text— synchronous OCR for images (JPEG/PNG/WEBP/HEIC/HEIF) and single-page PDFs.recognize_pdf— asynchronous OCR for PDFs (single- or multi-page) and large files, viarecognizeTextAsync+getRecognitionpolling.Recognition models — printed text, multi-column, handwritten, tables, Markdown, and math formulas (LaTeX), selectable per call.
Accepts a local file path or raw base64 content.
Recognition languages selectable between
ruanden(defaultru; combine as["ru","en"]for mixed text). Auto-detect is not supported by this endpoint.Three output formats:
text(default),markdown, or fulljson(the rawtextAnnotationwith blocks/lines/words/tables/entities).Zero-touch error handling — API failures are returned as
isErrortool results, never crashes.Lazy credentials — the server boots and lists tools even before
YANDEX_*env vars are set, surfacing a clear error only on the first call.
Related MCP server: Tesseract PDF MCP Server
Prerequisites
Node.js ≥ 20.
A Yandex Cloud account with the Vision/OCR API enabled.
A folder ID + either an API key (recommended) or an IAM token. See the authentication docs.
Quick start
# Run directly with npx (no install needed)
npx -y yandex-vision-ocr-mcpThen wire it into your MCP client (see Configuration).
Configuration
The server reads credentials from environment variables:
Variable | Required | Description |
| optional | Yandex Cloud folder ID. Only sent as |
| one of | API key (recommended for long-lived usage). |
| one of | Short-lived IAM token (~12h). Use instead of an API key. |
See .env.example for a template.
Models
Pass model to any tool to pick the recognition behaviour:
Model | Best for |
| Single-column printed text. |
| Multi-column printed text. |
| Mixed handwritten + printed text (Russian, English). |
| Tables (Russian, English). |
| Printed text, also returned as Markdown. |
| Math formulas, returned as Markdown with LaTeX (e.g. |
Tip: use
format: "markdown"together with themarkdown/math-markdownmodels to receive the model's Markdown output directly.
Tools
Both tools accept the same input shape:
Argument | Type | Default | Description |
| string | — | Local file to OCR. Provide this or |
| string | — | Base64 content ( |
| string | inferred | Explicit MIME type override. |
| string[] |
| Recognition languages, selectable: |
| string |
| Recognition model — see Models. |
|
|
| Output format. |
Supported formats: JPEG, PNG, WEBP, HEIC, HEIF (images) and PDF. The
mimeTypesent to the API is derived automatically (you can pass a standard MIME type viamimeTypeif needed). BMP/TIFF are not supported by the service.
recognize_text— synchronous. Best for images and single-page PDFs.recognize_pdf— asynchronous (submit + poll). Best for multi-page PDFs and large files. Requires the input to be a PDF.
Example result (text format)
Hello World
Yandex OCRConnect to opencode
Add the server to your opencode.json under mcp:
{
"mcp": {
"yandex-vision-ocr": {
"type": "local",
"command": ["npx", "-y", "yandex-vision-ocr-mcp@latest"],
"enabled": true,
"environment": {
"YANDEX_FOLDER_ID": "b1g...",
"YANDEX_API_KEY": "your-api-key"
}
}
}
}If you cloned the repo instead, replace the
commandwith["node", "/absolute/path/to/yandex-vision-ocr-mcp/build/index.js"].
Connect to Claude Desktop / Cursor / Cline
{
"mcpServers": {
"yandex-vision-ocr": {
"command": "npx",
"args": ["-y", "yandex-vision-ocr-mcp@latest"],
"env": {
"YANDEX_FOLDER_ID": "b1g...",
"YANDEX_API_KEY": "your-api-key"
}
}
}
}{
"mcpServers": {
"yandex-vision-ocr": {
"command": "npx",
"args": ["-y", "yandex-vision-ocr-mcp@latest"],
"env": {
"YANDEX_FOLDER_ID": "b1g...",
"YANDEX_API_KEY": "your-api-key"
}
}
}
}Local development
git clone https://github.com/chupre/yandex-vision-ocr-mcp.git
cd yandex-vision-ocr-mcp
npm install
npm run build # type-check + compile to build/
npm test # run the vitest suite
npm run dev # run the server from source via tsx
npm run inspector # open the MCP Inspector UI against the buildUseful scripts:
Script | Description |
| Compile TypeScript to |
| Type-check without emitting. |
| Run the offline test suite. |
| Run the server from source (tsx). |
| Launch the MCP Inspector for manual testing. |
Testing
The offline suite covers input handling, MIME inference, response formatting, the HTTP client (via a fake transport, no network), tool wiring, and a full MCP round-trip over an in-memory transport.
Live integration tests hit the real Yandex OCR API and are skipped unless credentials and sample files are provided:
YANDEX_FOLDER_ID=... YANDEX_API_KEY=... \
YOCR_LIVE_IMAGE=./sample.png \
YOCR_LIVE_PDF=./sample.pdf \
npx vitest run tests/live.test.tsDocker
docker build -t yandex-vision-ocr-mcp .
docker run --rm -i \
-e YANDEX_FOLDER_ID=b1g... \
-e YANDEX_API_KEY=... \
yandex-vision-ocr-mcpAPI coverage
This server targets the Yandex Cloud Vision OCR REST API
(ocr.api.cloud.yandex.net/ocr/v1):
Route | Method | Used for |
| POST | Synchronous recognition ( |
| POST | Start async recognition ( |
| GET | Poll for the async result. |
Concepts: OCR overview · image · PDF · handwritten.
License
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Latest Blog Posts
- 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/chupre/yandex-vision-ocr-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server