FastOCR MCP server
OfficialFastOCR MCP lets you OCR local PDFs/images via FastOCR and manage the resulting documents and page balance.
OCR a local PDF/image and return extracted text or save a searchable PDF.
Use
ocr_file(or legacyocr_pdf); larger jobs return a document id for later retrieval.Fetch a document’s status, text, or searchable PDF with
get_document.List recent documents with status and page counts.
Check remaining OCR page balance and statement page balance.
Permanently delete FastOCR-hosted documents and stored files.
The README also advertises bank statement extraction tools, but those tools are not present in the provided server schema.
Click on "Deploy 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., "@FastOCR MCP server OCR ~/Downloads/scanned-contract.pdf and summarize the termination clause"
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.
An MCP server that lets your client OCR a local scanned PDF or image over stdio; files go only to the FastOCR API.
Quickstart
Create an API key in the developer console.
Add the server to Claude Code:
claude mcp add fastocr -e FASTOCR_API_KEY=your_api_key -- uvx fastocr-mcpAsk: "OCR ~/Scans/contract.pdf".
With uv there is nothing to install; the client runs uvx fastocr-mcp. Prefer pip? Run pip install fastocr-mcp and use the command fastocr-mcp. Python 3.10 or newer.
Related MCP server: flexorch-mcp
Other clients
Every client needs the same command, uvx fastocr-mcp, and your key in FASTOCR_API_KEY.
Add this to claude_desktop_config.json (Settings > Developer > Edit Config), then restart Claude Desktop:
{
"mcpServers": {
"fastocr": {
"command": "uvx",
"args": ["fastocr-mcp"],
"env": { "FASTOCR_API_KEY": "your_api_key" }
}
}
}Add this to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": {
"fastocr": {
"type": "stdio",
"command": "uvx",
"args": ["fastocr-mcp"],
"env": { "FASTOCR_API_KEY": "your_api_key" }
}
}
}Add this to .vscode/mcp.json in your workspace. VS Code uses servers, not mcpServers:
{
"servers": {
"fastocr": {
"type": "stdio",
"command": "uvx",
"args": ["fastocr-mcp"],
"env": { "FASTOCR_API_KEY": "your_api_key" }
}
}
}If you installed with pip, use "command": "fastocr-mcp" and "args": [].
Examples
Ask your client in plain language:
"OCR ~/Downloads/scanned-contract.pdf and summarize the termination clause."
"Read the text in /Users/me/Desktop/receipt.jpg."
"Make a searchable copy of /Users/me/archive/1998-letters.pdf."
"List my last five FastOCR documents."
The text above is the unedited output FastOCR returned for a scanned page.
Tools
Tool | What it does |
| Uploads a local PDF or image, runs OCR and waits up to 45 seconds; a larger document returns its id for |
| The same tool as |
| Status and page counts of a document; with |
| The most recent documents in the account, newest first. |
| Beta. Uploads a bank statement (PDF, PNG, JPG, JPEG or WebP), waits up to 45 seconds, saves the file ( |
| Waits up to 45 seconds for a statement that |
| The pages left on the account: free pages (they reset monthly), contract pages if any, and Page Packs, plus the link to buy more. Costs no pages. |
| Deletes a document and its stored files on FastOCR. Local files are not touched. |
What you get back
You get | How |
The text of the document |
|
A searchable PDF |
|
Status and page counts |
|
A bank statement as Excel, CSV, JSON or QuickBooks files, with a summary |
|
Your recent documents |
|
Languages and files
100+ languages, detected automatically. No language setting is needed.
PDF files up to 1 GiB, and PNG, JPG, JPEG, GIF, WebP and BMP images up to 20 MiB. An image counts as one page.
Built on the official
fastocr-sdkand the official MCP Python SDK.
Pages and pricing
Any signed-in FastOCR account can create an API key and start right away. Every account gets 20 free pages a month, shared with PDFs on the website; an image is one page. When you need more, buy a Page Pack on the pricing page. Packs and the page balance are the same on the website and in the API; ask your agent to run get_balance to see what is left. Bank statement pages are a separate balance (statement_pages_remaining in get_balance), shared with the website's bank statement converter; new accounts start with some free statement pages. Accounts process 2 documents at once, or 10 with an API contract or 10,000 or more pages bought. You accept the API terms with your first key.
Tool errors are written for the agent to act on: a rejected key, an account out of pages (buy_pages), too many documents processing at once (concurrency_limit), a missing file, or an unsupported file type. Each message says what to do next. A document that runs out of pages fails with buy_pages; the tool says so and links to the pricing page. Error codes are listed in the API docs.
Variable | Purpose |
| Required. Your API key. |
| Optional. Overrides |
Support and license
Questions: support@fastocr.org. Bugs and requests: GitHub issues. Python SDK: fastocr-python. MIT license; see LICENSE. Made by FastOCR.
Available Tools
6 toolsdelete_documentADestructiveIdempotent
Permanently delete a FastOCR document and its stored files (original, text, searchable PDF).
A document that is still processing cannot be deleted. Local files are not touched.
Inputs: document_id (required). Returns: result
get_balanceARead-only
Get how many pages the FastOCR account can still process. Costs no pages.
Documents spend free pages first (they reset monthly), then contract pages, then Page Packs. pages_remaining counts the Page Packs only, so add the free and contract pages for the total. contract_* are omitted without an API contract. statement_pages_remaining is a separate balance that OCR does not spend. Check this before OCRing a large PDF; buy_pages_url is where to add pages.
Inputs: no named parameters. Returns: result
get_documentAIdempotent
Get a FastOCR document's status, and optionally its text or searchable PDF.
Statuses: awaiting_upload, processing, completed, partial (the account ran out of pages partway), failed. With output='text' or 'pdf' this waits up to 45 seconds; if the document is still processing, call it again. Fetching a result again costs no pages. Without output_path, long text and PDFs are saved in the system temp directory.
Inputs: document_id (required), output, output_path. Returns: result
list_documentsARead-only
List the most recent documents in the FastOCR account with their status and page counts.
Inputs: limit. Returns: result
ocr_fileA
OCR a local PDF or image with FastOCR and return its text or save a searchable PDF.
Uploads the file, runs OCR and waits up to 45 seconds. With output='text' the text is returned; text longer than 20,000 characters is cut, and the full text is written to output_path or to .ocr.txt next to the input file. With output='pdf' the searchable PDF is saved to output_path or to .searchable.pdf next to the input file. Either default file replaces an earlier result with the same name. Each processed page uses one page of the account's balance; an image is one page. Large documents take longer: then this returns a document id, and get_document with the same output fetches the result. Never call ocr_file again for that file, which bills it again.
Inputs: path (required), output, output_path. Returns: result
ocr_pdfB
The same tool as ocr_file, kept under its earlier name. Prefer ocr_file.
Inputs: path (required), output, output_path. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
The five distinct operations (OCR, list, get, balance, delete) are clearly separable by resource and action. The only overlap is ocr_pdf, which is explicitly documented as a legacy alias of ocr_file with a 'prefer ocr_file' instruction, but its presence still creates a real risk of double-billing if an agent calls both.
All six names use a uniform snake_case verb_noun pattern (ocr_file, list_documents, get_document, get_balance, delete_document). The single deviation, ocr_pdf, fits the same pattern and is deliberately framed as a legacy alias of ocr_file.
Six tools is well-scoped for an OCR service covering submit, list, retrieve, quota, and delete. However, one of the six is a redundant alias rather than a unique capability, so effectively five tools carry the surface.
The lifecycle is covered end-to-end: OCR a file, check status/results, list recent documents, check remaining page balance, and delete documents. Minor gaps remain, such as no multi-file/batch submission and no pagination or filtering options for list_documents.
Maintenance
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Document processing over MCP: merge, split and compress PDFs, run OCR, extract document text.
Document conversion and OCR for AI agents: PDF, Office docs, images to text.
Document conversion MCP server: PDF to Markdown, image OCR, spreadsheet parsing.
Related MCP Servers
- FlicenseAqualityDmaintenanceExtracts text content from PDFs and images using Mistral's OCR API, enabling OCR capabilities in MCP-compatible clients like Cursor and Claude Desktop.18-

flexorch-mcpofficial
AlicenseAqualityBmaintenanceEnables Claude and other MCP-compatible agents to process documents, extract structured data, detect PII, and export LLM-ready datasets through natural language tool calls.821 PyPI1MIT- AlicenseNot gradedqualityCmaintenanceEnables document text recognition and extraction from images and PDFs using Claude Vision, including support for scanned documents and structured output, without requiring local OCR engines.MIT
- AlicenseAqualityCmaintenanceEnables MCP clients like Claude Code to extract text from images, screenshots, and scanned documents via PaddleOCR PP-OCRv6.1BSD 3-Clause