pdf2zh-next-mcp
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., "@pdf2zh-next-mcp Translate this PDF from English to Korean: /path/to/paper.pdf"
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.
pdf2zh-next-mcp
MCP server for PDF translation using pdf2zh-next as the PDF processing backend. Designed for Claude Desktop.
Instead of translating each segment independently (which loses context), this server extracts all segments at once and lets the LLM translate them together — preserving terminology consistency and context across the entire document.
Using Claude Code? Check out pdf2zh-next-skill — a lightweight skill-based approach without MCP overhead. It handles large PDFs better by leveraging Claude Code's direct file I/O and auto-continuation.
How it works
┌─────────────────────────────────────────────────┐
│ Claude Desktop │
│ │
│ 1. extract_segments ──→ segments + formulas │
│ 2. LLM translates all segments at once │
│ 3. assemble_translated ──→ final PDF │
└─────────────────────────────────────────────────┘The LLM sees every segment before translating — so terminology stays consistent, cross-page sentences flow naturally, and formula placeholders are preserved correctly.
Related MCP server: PDF2ZH MCP Server
Prerequisites
pdf2zh-next must be installed separately:
uv tool install pdf2zh-nextVerify installation:
pdf2zh_next --versionYou need uv to install both pdf2zh-next and this server.
Installation
From PyPI (recommended)
uv tool install pdf2zh-next-mcpFrom GitHub
uv tool install git+https://github.com/JaeHyeon-KAIST/pdf2zh-next-mcpFrom source
git clone https://github.com/JaeHyeon-KAIST/pdf2zh-next-mcp
cd pdf2zh-next-mcp
uv syncSetup
Add to your Claude Desktop MCP config:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
If installed from PyPI or GitHub:
{
"mcpServers": {
"pdf-translate": {
"command": "uvx",
"args": ["pdf2zh-next-mcp"]
}
}
}If running from source:
{
"mcpServers": {
"pdf-translate": {
"command": "uv",
"args": [
"run",
"--directory", "/path/to/pdf2zh-next-mcp",
"python", "-m", "pdf2zh_next_mcp.main"
]
}
}
}Tip: If Claude Desktop can't find
uvx, use the absolute path (e.g.,/opt/homebrew/bin/uvxon macOS,C:\Users\you\.local\bin\uvx.exeon Windows).
Usage
Just ask:
"Translate this PDF to Korean: /path/to/paper.pdf"
Behind the scenes:
extract_segmentsanalyzes the PDF layout and returns all text segmentsThe LLM translates everything at once (with full context)
assemble_translatedinjects translations and generates the final PDF
Output files:
*-mono.pdf— translated PDF*-dual.pdf— bilingual side-by-side*-glossary.json— terminology glossary
Limitations
Large PDFs (~30+ pages): Claude Desktop has a per-turn output token limit. For documents with many segments, the translation may fail mid-process with "response could not be fully generated". For large PDFs, use pdf2zh-next-skill with Claude Code instead.
MCP tool result size: Segments are paginated to stay within Claude Desktop's 25K token limit per tool response. This is handled automatically.
Troubleshooting
BabeldocError: cannot unpack non-iterable NoneType object
BabelDOC needs CMap files for font character mapping. If its automatic download times out, install them manually:
cd ~/Downloads
curl -L https://github.com/funstory-ai/BabelDOC-Assets/archive/refs/heads/main.zip -o BabelDOC-Assets.zip
unzip BabelDOC-Assets.zip
mkdir -p ~/.cache/babeldoc/cmap
cp BabelDOC-Assets-main/cmap/*.json ~/.cache/babeldoc/cmap/This is a one-time setup. The cache path is the same on all platforms.
License
MIT
Available Tools
5 toolsassemble_translatedA
번역된 세그먼트로 최종 PDF를 생성합니다.
백그라운드에서 비동기로 실행됩니다. 반환된 session_dir로 check_assembly_status를 호출하여 완료 여부를 확인하세요.
Args: session_dir: extract_segments에서 반환된 세션 디렉토리 경로 glossary_json: (선택) 용어집 JSON 문자열. 번역 시 생성된 용어집.
Inputs: session_dir (required), glossary_json. Returns: result
check_assembly_statusA
PDF 조립 진행 상황을 확인합니다.
assemble_translated 호출 후 이 툴을 호출하여 완료를 확인하세요. 서버가 내부에서 대기 후 응답하므로 별도 대기 불필요합니다.
Args: session_dir: extract_segments에서 반환된 세션 디렉토리 경로
Inputs: session_dir (required). Returns: result
check_extraction_statusA
세그먼트 추출 진행 상황을 확인합니다.
extract_segments 호출 후 이 툴을 호출하여 완료를 확인하세요. 서버가 내부에서 대기 후 응답하므로 별도 대기 불필요합니다. 완료되면 세그먼트와 번역 instruction을 반환합니다.
Args: session_dir: extract_segments에서 반환된 세션 디렉토리 경로 offset: 세그먼트 시작 인덱스 (기본값: 0). 세그먼트가 많을 때 나눠서 가져올 수 있습니다.
Inputs: session_dir (required), offset. Returns: result
extract_segmentsA
PDF 파일에서 번역 대상 세그먼트를 추출합니다.
백그라운드에서 비동기로 실행됩니다. 반환된 session_dir로 check_extraction_status를 호출하여 완료 여부를 확인하세요.
Args:
file: PDF 파일의 로컬 절대 경로. 예: /Users/username/Downloads/paper.pdf
주의: 반드시 사용자가 메시지에 입력한 로컬 경로를 사용하세요.
첨부 파일의 내부 경로(/mnt/user-data/uploads/...)는 사용할 수 없습니다.
lang_in: 원본 언어 코드 (기본값: en)
lang_out: 번역 대상 언어 코드 (기본값: ko)
output_dir: 출력 디렉토리 경로. 비어 있으면 입력 PDF와 같은 디렉토리에 저장.
pages: 번역할 페이지 범위. 비어 있으면 전체 페이지.
형식: '1-7,10' (17, 10페이지), '-5' (15), '3-' (3~끝).
참고문헌 등 특정 페이지를 제외하고 싶을 때 사용하세요.
Inputs: file (required), pages, lang_in, lang_out, +1 more. Returns: result
save_translated_segmentsA
번역된 세그먼트를 세션에 저장합니다.
여러 번 호출하면 기존 세그먼트에 누적됩니다. 모든 세그먼트 저장 후 assemble_translated를 호출하세요.
Args: session_dir: extract_segments에서 반환된 세션 디렉토리 경로 segments_json: 번역된 세그먼트 JSON 배열 문자열
Inputs: session_dir (required), segments_json (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool targets a distinct stage of the PDF translation pipeline: extraction initiation, extraction status, saving translations, assembly initiation, and assembly status. Even the two status-checking tools are clearly differentiated by their target phase (extraction vs assembly), making misselection unlikely.
All tool names follow a predictable verb_noun pattern (extract_, check_, save_, assemble_). The nouns clearly indicate the resource or phase (segments, extraction_status, translated_segments, translated, assembly_status), providing a consistent and intuitive naming convention.
With 5 tools, the set is well-scoped for the intended workflow. Each tool represents a necessary step in the asynchronous extraction-translation-assembly pipeline, and none are redundant or extraneous.
The tool set covers the complete lifecycle of the PDF translation process: initiate extraction, monitor/retrieve results, save translations, initiate assembly, and monitor/retrieve the final output. There are no obvious dead ends or missing operations required to complete the core workflow.
Related MCP Connectors
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
MCP server for detecting and redacting PII (Personally Identifiable Information) in PDF documents.
Convert PDF documents to Markdown for AI agents through an authenticated remote MCP server.
MCP server for Translation Services
Related MCP Servers
- AlicenseAqualityFmaintenanceAn MCP server that exports PDF documents to markdown format optimized for LLM processing.11BSD 3-Clause
- AlicenseAqualityDmaintenanceAn MCP server that translates scientific PDF documents while preserving original formulas, charts, and layout. It utilizes an OpenAI-compatible backend to provide tools for document translation and language listing.23AGPL 3.0
- AlicenseAqualityCmaintenanceAn MCP server for reading, rendering, and searching PDF files, specifically optimized for LLMs to extract text, tables, and technical diagrams. It enables metadata retrieval, multi-format text extraction, and page-to-image rendering using PyMuPDF.582MIT

pymupdf4llm-mcpofficial
AlicenseNot gradedqualityCmaintenanceMCP server for exporting PDF to markdown, optimized for LLM consumption.698 PyPI73AGPL 3.0