Extracts PDF text locally, with macOS PDFKit and Vision OCR fallbacks and optional AI retry.
Connect Runs on your machine
claude mcp add pdf-to-text -e PDF_TO_TEXT_MCP_ROOT=<PDF_TO_TEXT_MCP_ROOT> -e OPENAI_API_KEY=<OPENAI_API_KEY> -e OPENAI_MODEL=<OPENAI_MODEL> -e AI_MAX_OUTPUT_TOKENS=<AI_MAX_OUTPUT_TOKENS> -e MAX_PARALLEL_EXTRACTIONS=<MAX_PARALLEL_EXTRACTIONS> -e EXTRACTION_QUEUE_CAPACITY=<EXTRACTION_QUEUE_CAPACITY> -e EXTRACTION_QUEUE_WAIT_MS=<EXTRACTION_QUEUE_WAIT_MS> -e WRITE_TEXT=<WRITE_TEXT> -- npx -y @jim-panse/[email protected]
{
"mcpServers": {
"pdf-to-text": {
"command": "npx",
"args": [
"-y",
"@jim-panse/[email protected]"
],
"env": {
"PDF_TO_TEXT_MCP_ROOT": "<PDF_TO_TEXT_MCP_ROOT>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"OPENAI_MODEL": "<OPENAI_MODEL>",
"AI_MAX_OUTPUT_TOKENS": "<AI_MAX_OUTPUT_TOKENS>",
"MAX_PARALLEL_EXTRACTIONS": "<MAX_PARALLEL_EXTRACTIONS>",
"EXTRACTION_QUEUE_CAPACITY": "<EXTRACTION_QUEUE_CAPACITY>",
"EXTRACTION_QUEUE_WAIT_MS": "<EXTRACTION_QUEUE_WAIT_MS>",
"WRITE_TEXT": "<WRITE_TEXT>"
}
}
}
}
{
"mcpServers": {
"pdf-to-text": {
"command": "npx",
"args": [
"-y",
"@jim-panse/[email protected]"
],
"env": {
"PDF_TO_TEXT_MCP_ROOT": "<PDF_TO_TEXT_MCP_ROOT>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"OPENAI_MODEL": "<OPENAI_MODEL>",
"AI_MAX_OUTPUT_TOKENS": "<AI_MAX_OUTPUT_TOKENS>",
"MAX_PARALLEL_EXTRACTIONS": "<MAX_PARALLEL_EXTRACTIONS>",
"EXTRACTION_QUEUE_CAPACITY": "<EXTRACTION_QUEUE_CAPACITY>",
"EXTRACTION_QUEUE_WAIT_MS": "<EXTRACTION_QUEUE_WAIT_MS>",
"WRITE_TEXT": "<WRITE_TEXT>"
}
}
}
}
{
"servers": {
"pdf-to-text": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@jim-panse/[email protected]"
],
"env": {
"PDF_TO_TEXT_MCP_ROOT": "<PDF_TO_TEXT_MCP_ROOT>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"OPENAI_MODEL": "<OPENAI_MODEL>",
"AI_MAX_OUTPUT_TOKENS": "<AI_MAX_OUTPUT_TOKENS>",
"MAX_PARALLEL_EXTRACTIONS": "<MAX_PARALLEL_EXTRACTIONS>",
"EXTRACTION_QUEUE_CAPACITY": "<EXTRACTION_QUEUE_CAPACITY>",
"EXTRACTION_QUEUE_WAIT_MS": "<EXTRACTION_QUEUE_WAIT_MS>",
"WRITE_TEXT": "<WRITE_TEXT>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
PDF_TO_TEXT_MCP_ROOTRequired | Required existing directory that defines the root-relative filesystem namespace for PDF input and derived text output. |
OPENAI_API_KEYOptional, secret | Optional secret. Enables one AI extraction retry when local extraction is inadequate; omit for local-only operation. |
OPENAI_MODELOptional | Optional OpenAI model used only for AI retry. Defaults to gpt-5.4-mini. |
AI_MAX_OUTPUT_TOKENSOptional | Optional cap for all AI-generated output tokens, including non-visible reasoning tokens. Integer minimum 800; defaults to 32000. |
MAX_PARALLEL_EXTRACTIONSOptional | Integer concurrency limit from 1 to 32. Defaults to min(os.availableParallelism(), 4). |
EXTRACTION_QUEUE_CAPACITYOptional | Integer maximum waiting requests from 0 to 100; zero disables waiting. |
EXTRACTION_QUEUE_WAIT_MSOptional | Maximum queue wait in milliseconds, integer 1 through 2147483647. Does not limit active work. |
WRITE_TEXTOptional | Optionally save successful extraction text beside the source PDF. |
Details
| Package | @jim-panse/[email protected] (NPM, stdio) |
| First published | 15 Oct 2026 |
| Last updated | 15 Oct 2026 |
| Registry name | io.github.Jim-Panse/pdf-to-text |
More files and documents servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
