pdf-translate MCP
Local MCP server for Claude Desktop that translates PDF files using a pipeline of extraction, parallel API translation, checking, and applying.
README
pdf-translate MCP
Local MCP server for Claude Desktop that runs the full pdf-translate pipeline:
extract.py → parallel API translation → check.py → apply.py
Install
cd D:\Internship\skill\pdf-translate-mcp
pip install -r requirements.txt
Parent scripts (extract.py, check.py, apply.py) live in D:\Internship\skill\ and are called automatically.
Claude Desktop config
Edit %APPDATA%\Claude\claude_desktop_config.json — merge into existing mcpServers:
"pdf-translate": {
"command": "C:\\Users\\neelima\\Anaconda3\\python.exe",
"args": ["D:\\Internship\\skill\\pdf-translate-mcp\\server.py"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-YOUR_KEY_HERE"
}
}
Fully quit Claude Desktop (tray → Exit), reopen, start a new chat.
Tools
| Tool | When to use |
|---|---|
start_translate_pdf_job |
Recommended for 50-page PDFs. Returns job_id in <1s; poll with get_translate_pdf_job. |
get_translate_pdf_job |
Poll every 15–30s until status is done or failed. |
translate_pdf_path |
Small/fast one-shot jobs only (Desktop kills tools after ~4 min). |
translate_pdf_base64 |
Tiny PDFs only (~<750KB raw). |
Example prompt (job-based — use this for 50 pages)
Call
start_translate_pdf_jobonC:\Users\neelima\Downloads\50_pages_french.pdfwithtarget_langen andoutput_pathC:\Users\neelima\Downloads\50_pages_french_en.pdf. Pollget_translate_pdf_jobevery 20 seconds until done. Reportstats.timing_sand wall-clock time.
Example prompt (blocking path — small PDFs only)
Call
translate_pdf_pathonC:\Users\neelima\Downloads\small.pdfwithtarget_langen.
Base64 limit
Do not use translate_pdf_base64 for multi-page PDFs in Desktop. read_media_file and tool results are capped at 1MB; a 1.09 MB PDF becomes ~1.5M chars of base64 and fails before translation starts.
Local test (no Claude)
# Extract only (no API key)
python tests\test_pipeline_local.py --extract-only "C:\Users\neelima\Downloads\50_pages_french.pdf"
# Full pipeline (needs ANTHROPIC_API_KEY)
$env:ANTHROPIC_API_KEY = "sk-ant-..."
python tests\test_pipeline_local.py "C:\Users\neelima\Downloads\50_pages_french.pdf" -t en
Job artifacts: pdf-translate-mcp/runs/<job_id>/
Timing (typical 50-page doc)
| Stage | ~seconds |
|---|---|
| extract | 2–5 |
| translate | 45–60 |
| check | <1 |
| apply | 35–45 |
| total | ~85–110 |
Troubleshooting
“Linux cloud VM” / paths not reachable / no translate_pdf_path
You are almost certainly in Cowork mode, not a local MCP chat.
| Mode | Where it runs | translate_pdf_path |
C:\Users\... paths |
|---|---|---|---|
| Regular Desktop chat | Your PC | Yes (if MCP connected) | Yes |
| Cowork | Remote Linux VM | No | No |
Fix: In Claude Desktop, start a normal new chat (not Cowork). Cowork uses the pdf-translate skill in a VM; your MCP server only works in regular chat.
pdf-translate tools not listed
- Quit Desktop fully (tray → Exit) after editing
claude_desktop_config.json. - Reopen → new regular chat.
- Check logs:
%APPDATA%\Claude\logs\formcp-server-pdf-translate.logor[pdf-translate]inmcp.log. - If only
filesystemappears in logs, Desktop never startedpdf-translate— fix JSON syntax or Python path.
Server not listed
- Connection error: Run
python server.pymanually — should hang waiting on stdin (that’s normal). - ANTHROPIC_API_KEY: Must be in the
envblock of Desktop config.
4-minute timeout
Claude Desktop hard-kills any MCP tool call after ~4 minutes, even if the server is still working. Your 08:52 run proves this: the server was still translating when Desktop cancelled.
Use start_translate_pdf_job + get_translate_pdf_job for 50-page PDFs. The start call returns in under a second; poll until status is done.
If the MCP log shows asyncio.run() cannot be called from a running event loop, restart Claude Desktop after updating the server.
Large base64 fails
Use translate_pdf_path instead. Desktop caps tool payloads at ~1MB.
See PLAN.md for architecture notes.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.