# pdf-reader-mcp An MCP server that can extract text from PDFs and images. It supports: - Native text extraction from PDFs (embedded text) - OCR for scanned PDFs and images using Tesseract ## Requirements - Node.js >= 18.18 - For best OCR on PDFs, install Poppler (for `pdftoppm`) and Tesseract (CLI): ### macOS ```bash brew install poppler tesseract ``` ### Windows 1. **Tesseract**: Download and install from [GitHub releases](https://github.com/UB-Mannheim/tesseract/wiki) or use chocolatey: ```cmd choco install tesseract ``` 2. **Poppler**: Download from [poppler-windows](https://github.com/oschwartz10612/poppler-windows/releases/) and add to PATH, or use chocolatey: ```cmd choco install poppler ``` ### Linux (Ubuntu/Debian) ```bash sudo apt-get install poppler-utils tesseract-ocr ``` **Note**: Poppler is optional; without it we fall back to slower whole-file OCR. Tesseract CLI is preferred for OCR; if it is not installed, the server falls back to `tesseract.js` (which downloads language data on first run). ## Install ```bash npm install ``` ## Build ```bash npm run build ``` ## Run (stdio) ```bash npm start ``` This server uses stdio transport per MCP. Configure your MCP client with the command `node dist/index.js` in this folder. Example MCP client configuration (JSON): ``` { "mcpServers": { "pdf-reader-mcp": { "command": "node", "args": ["dist/index.js"], "env": { } } } } ``` ## Tool: extract_text_from_pdf Inputs (one of): - `path`: Path to a local PDF or image file - `base64`: Base64-encoded content (optionally with data URL prefix) Options: - `ocr` (boolean, default false): Force using OCR. When false, the server tries native extraction then falls back to OCR if needed. Output: The extracted text as a single text item.