deepl-mcp-server

MCP.Pizza Chef: DeepL

DeepL builds and maintains this one themselves, and its thirteen tools do exactly what the documentation says they do. Translate a block of text or a whole file, including PDF, Word, PowerPoint, Excel and web pages, and it writes the translated copy next to the original. It can also rephrase a sentence in a different tone, apply a glossary so your product names stay put, and follow a house style you have saved. You need a DeepL key, and every translation counts against your plan's character allowance.

Communication
Files/PDF
Writing

Use This MCP server To

Translate a contract into German without leaving the chat Turn a whole PDF into Spanish and save the copy Rephrase this paragraph so it sounds more formal Keep our product names untranslated using a saved glossary Check which languages I can translate into

README

deepl-mcp-server

Version License: MIT

A Model Context Protocol (MCP) server that exposes DeepL text translation, document translation, rephrasing, and glossary and style rule lookups as MCP tools.

Usage

You need Node.js 18 or newer and a DeepL API key. Pick an API plan and create a key in your DeepL account.

The server communicates over stdio, so it is normally started by an MCP client rather than by hand. To try it directly:

DEEPL_API_KEY=your-api-key npx -y deepl-mcp-server

It exits immediately if DEEPL_API_KEY is not set.

To work on the server itself:

git clone https://github.com/DeepL/deepl-mcp-server.git
cd deepl-mcp-server
npm install

Configuration

Register it as a stdio server with DEEPL_API_KEY in the server's environment. In Claude Code:

claude mcp add deepl --env DEEPL_API_KEY=your-api-key -- npx -y deepl-mcp-server

For clients configured through a JSON file:

{
  "mcpServers": {
    "deepl": {
      "command": "npx",
      "args": ["-y", "deepl-mcp-server"],
      "env": {
        "DEEPL_API_KEY": "your-api-key"
      }
    }
  }
}

Where that file lives and how each client expects local stdio servers to be declared:

To run a local checkout instead of the published package, use node as the command and the absolute path to src/index.mjs as the argument.

Tools

Tool Description Parameters
translate-text Translates text into a target language. text, targetLangCode, sourceLangCode?, formality?, glossaryId?, styleId?, context?, preserveFormatting?, splitSentences?, customInstructions?
translate-document Translates a document file (PDF, DOCX, PPTX, XLSX, HTML, TXT, and more) and writes the result to disk. inputFile, targetLangCode, outputFile?, sourceLangCode?, formality?, glossaryId?, styleId?, outputFormat?
rephrase-text Rephrases text, optionally into another language. text, targetLangCode?, style?, tone?
get-source-languages Lists the language codes accepted as a translation source. none
get-target-languages Lists the language codes accepted as a translation target. none
get-writing-styles Lists the style values rephrase-text accepts. none
get-writing-tones Lists the tone values rephrase-text accepts. none
list-glossaries Lists every glossary in the account with its id, name, dictionaries, and creation time. none
get-glossary-info Returns the same metadata as list-glossaries for a single glossary. glossaryId
get-glossary-dictionary-entries Returns the term entries of one glossary dictionary, meaning one language pair in one direction. glossaryId, sourceLangCode, targetLangCode
list-style-rules Lists the style rules in the account with their id, name, language, and timestamps. page?, pageSize?, detailed?
get-style-rule Returns one style rule in full, including its configured rules and custom instructions. styleId
get-custom-instruction Returns a single custom instruction belonging to a style rule. styleId, instructionId

Notes:

  • text takes either a single string or an array of strings. Each entry is translated or rephrased independently.
  • Language codes are ISO 639-1, optionally with a region (en-US). Omitting sourceLangCode triggers automatic detection. A target code whose language requires a region gets a default applied: en becomes en-US, pt becomes pt-BR, zh becomes zh-Hans.
  • Glossary dictionaries are keyed by non-regional codes, so get-glossary-dictionary-entries drops any region you pass.
  • Translating with a glossary requires an explicit sourceLangCode.
  • formality accepts less, more, default, prefer_less, and prefer_more. The prefer_* values fall back to the default when the target language has no formality support.
  • translate-document reads and writes files on the machine running the server. Without outputFile, the output path is derived from the input by appending the target language code, for example report_de.pdf. With outputFormat, the derived path uses that extension instead.
  • Style rules and custom instructions are read-only here. Create and edit them in your DeepL account.

License

MIT

deepl-mcp-server FAQ

Do I need a key?
Yes, a DeepL key from your DeepL account. The server shuts down straight away if it cannot find one. There is a free tier, and paid plans raise the limits.
Does it cost money to use?
It can. DeepL bills by the character. The free tier covers roughly 500,000 characters a month and caps how many documents you may translate, so long files use it up quickly.
Can I use this to translate a PDF?
Yes — give it the file location and a target language, and it saves the translated document beside the original, or wherever you tell it to put it.
Which apps does it work in?
Claude Code, Claude Desktop, Cursor and VS Code are all documented, and it works in anything that can start a local command.
How hard is setup?
Copy-paste level. One small block naming the package and your key, or a single command in Claude Code. There is nothing to clone or build.
Do the listed options actually work?
Yes, and that is worth saying. Every option the documentation advertises, from formality and glossaries to style rules, sentence splitting and formatting, is genuinely passed through by the code.
Will it overwrite my original file?
No. Document translation writes to a new file named after the original with the language code added, unless you name an output file yourself.
Is it maintained?
Yes, very actively. It is DeepL's own project and had code changes in August 2026.