DeepL MCP
Vendor MCP8 toolsOAuth 2.1/DCRAIProductivityConnect to DeepL's MCP server to translate and rephrase text, correct grammar, translate documents, and manage glossaries and writing styles.
DeepL MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'deeplmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize DeepL MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'deeplmcp_get_source_languages',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "deeplmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize DeepL MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="deeplmcp_get_source_languages",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Document upload, download — Translate a whole file or document, preserving its original layout and formatting
- Text translate, rephrase, correct — Translate text to a target language using DeepL
- Get target languages, source languages, document status — Get the target language codes supported by DeepL for translation, e.g
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
deeplmcp_correct_text#Correct one or more texts for typos, grammar and punctuation errors using DeepL.2 params
Correct one or more texts for typos, grammar and punctuation errors using DeepL.
textarrayrequiredOne or more texts to correct.targetLangstringoptionalOptional target language code. DeepL Write supports: DE, EN-GB, EN-US, ES, FR, IT, JA, KO, PT-BR, PT-PT, ZH-HANS.deeplmcp_download_document#Get a download link for a translated document once its status is 'done'. Returns 'downloadUrl', a short-lived, single-use link. Fetch it with an HTTP GET (the URL carries its own token, so do not add an Authorization header), or present it to the user. The link works only once. The bytes are streamed from the server and never pass through this conversation.1 param
Get a download link for a translated document once its status is 'done'. Returns 'downloadUrl', a short-lived, single-use link. Fetch it with an HTTP GET (the URL carries its own token, so do not add an Authorization header), or present it to the user. The link works only once. The bytes are streamed from the server and never pass through this conversation.
sessionIdstringrequiredThe session id returned by upload-document.deeplmcp_get_document_status#Check the translation status of a document session. Returns one of: 'awaiting_upload' (file not received yet), 'queued', 'translating', 'done', or 'error'. The additive 'uploadStatus' is 'awaiting', 'uploading', or 'complete' when known. Once the status is 'done', call download-document.1 param
Check the translation status of a document session. Returns one of: 'awaiting_upload' (file not received yet), 'queued', 'translating', 'done', or 'error'. The additive 'uploadStatus' is 'awaiting', 'uploading', or 'complete' when known. Once the status is 'done', call download-document.
sessionIdstringrequiredThe session id returned by upload-document.deeplmcp_get_source_languages#Get the source language codes supported by DeepL for translation, e.g. 'EN' or 'DE'. Use one of these for the sourceLang parameter of translate-text.0 params
Get the source language codes supported by DeepL for translation, e.g. 'EN' or 'DE'. Use one of these for the sourceLang parameter of translate-text.
deeplmcp_get_target_languages#Get the target language codes supported by DeepL for translation, e.g. 'EN-US' or 'DE'. Use one of these for the targetLang parameter of translate-text.0 params
Get the target language codes supported by DeepL for translation, e.g. 'EN-US' or 'DE'. Use one of these for the targetLang parameter of translate-text.
deeplmcp_rephrase_text#Rephrase text in the same or a different language using DeepL.4 params
Rephrase text in the same or a different language using DeepL.
textarrayrequiredOne or more texts to rephrase.targetLangstringoptionalTarget language code. Optional for a plain rephrase (auto-detected), but REQUIRED when a writingStyle or tone is set. DeepL Write supports: DE, EN-GB, EN-US, ES, FR, IT, JA, KO, PT-BR, PT-PT, ZH-HANS — styles/tones work only on DE, EN-GB, EN-US, ES, FR, IT, PT-BR, PT-PT.tonestringoptionalOptional tone for the output: confident, diplomatic, enthusiastic, or friendly. Requires a style-capable targetLang. Specify either a writing style or a tone, not both.writingStylestringoptionalOptional writing style for the output: academic, business, casual, or simple. Requires a style-capable targetLang.deeplmcp_translate_text#Translate text to a target language using DeepL. Use this for plain text provided directly in the conversation — snippets, strings, messages, or passages pasted by the user. Do not use this to translate a file or document (e.g. Word, PowerPoint, Excel, PDF, HTML, .txt, .srt, .xlf/.xliff) — even if you can already read its contents — because it returns plain text and discards the document's layout and formatting. For files, use upload-document instead. Review the optional parameters and use those that apply for best results. When using a glossary, you must specify the source language as well as the target language. If the user references a glossary by name, use list-glossaries to look up its id. An unknown glossaryId is silently ignored (translation proceeds without it). An administrator may assign a language system (style profile) to the account, whose glossaries and style rule set can replace the glossaryId and styleId passed here; 'appliedCustomizations' in the result says so when it happened.8 params
Translate text to a target language using DeepL. Use this for plain text provided directly in the conversation — snippets, strings, messages, or passages pasted by the user. Do not use this to translate a file or document (e.g. Word, PowerPoint, Excel, PDF, HTML, .txt, .srt, .xlf/.xliff) — even if you can already read its contents — because it returns plain text and discards the document's layout and formatting. For files, use upload-document instead. Review the optional parameters and use those that apply for best results. When using a glossary, you must specify the source language as well as the target language. If the user references a glossary by name, use list-glossaries to look up its id. An unknown glossaryId is silently ignored (translation proceeds without it). An administrator may assign a language system (style profile) to the account, whose glossaries and style rule set can replace the glossaryId and styleId passed here; 'appliedCustomizations' in the result says so when it happened.
targetLangstringrequiredTarget language code, e.g. 'EN-US' or 'DE'.textstringrequiredThe text to translate.contextstringoptionalOptional description of the text's domain to improve translation quality. Not itself translated. At most 300 characters.customInstructionsarrayoptionalOptional custom instructions to steer translation. Max 10 instructions, 300 characters each.formalitystringoptionalControls formality: 'less', 'more', 'default', 'prefer_less', or 'prefer_more'. Only some target languages support this.glossaryIdstringoptionalGlossary id to ensure consistent terminology.sourceLangstringoptionalSource language code, e.g. 'EN' or 'DE'. Omit to let DeepL auto-detect.styleIdstringoptionalStyle rule set id from list-style-rule-sets. Its own custom instructions are applied with it, so do not repeat them below.deeplmcp_upload_document#Translate a whole file or document, preserving its original layout and formatting. Use this — not translate-text — whenever the user wants to translate a file or document (rather than text typed into the conversation), even if its contents are already visible to you; translate-text would strip the formatting. For plain text pasted into the conversation, use translate-text instead. Supported file types: Word (.docx, .doc), PowerPoint (.pptx, .ppt), Excel (.xlsx, .xls), PDF, HTML (.html, .htm), plain text (.txt), subtitles (.srt), and XLIFF (.xlf, .xliff). This call starts the translation and returns 'sessionId', 'uploadUrl', and 'uploadPageUrl'. Select 'agent_http' only when you can read the referenced file and perform an HTTP PUT. In that mode, pass 'filename' with a supported extension and send the raw file bytes to 'uploadUrl' with 'Content-Type: application/octet-stream'. Select 'inline_ui' otherwise. In 'inline_ui', the MCP App collects the file; when no MCP App renders, give the user 'uploadPageUrl' to select it in a browser. Then poll get-document-status with the sessionId until it reports 'done', and call download-document. The file bytes never pass through this conversation. An administrator may assign a language system (style profile) to the account, whose glossaries and style rule set can replace the glossaryId and styleId passed here; 'appliedCustomizations' in the result says so when it happened.8 params
Translate a whole file or document, preserving its original layout and formatting. Use this — not translate-text — whenever the user wants to translate a file or document (rather than text typed into the conversation), even if its contents are already visible to you; translate-text would strip the formatting. For plain text pasted into the conversation, use translate-text instead. Supported file types: Word (.docx, .doc), PowerPoint (.pptx, .ppt), Excel (.xlsx, .xls), PDF, HTML (.html, .htm), plain text (.txt), subtitles (.srt), and XLIFF (.xlf, .xliff). This call starts the translation and returns 'sessionId', 'uploadUrl', and 'uploadPageUrl'. Select 'agent_http' only when you can read the referenced file and perform an HTTP PUT. In that mode, pass 'filename' with a supported extension and send the raw file bytes to 'uploadUrl' with 'Content-Type: application/octet-stream'. Select 'inline_ui' otherwise. In 'inline_ui', the MCP App collects the file; when no MCP App renders, give the user 'uploadPageUrl' to select it in a browser. Then poll get-document-status with the sessionId until it reports 'done', and call download-document. The file bytes never pass through this conversation. An administrator may assign a language system (style profile) to the account, whose glossaries and style rule set can replace the glossaryId and styleId passed here; 'appliedCustomizations' in the result says so when it happened.
targetLangstringrequiredTarget language code, e.g. 'EN-US' or 'DE'. Use get-target-languages to discover supported codes.customInstructionsarrayoptionalFree-text instructions that steer the translation (e.g. 'Use a friendly tone'). Requires a DeepL Pro plan.filenamestringoptionalOriginal file name including its extension (e.g. 'report.docx'). Required for 'agent_http'; the inline_ui picker supplies it when the user selects a file.formalitystringoptionalControls formality: 'less', 'more', or 'default'. Only some target languages support this. Requires a DeepL Pro plan.glossaryIdstringoptionalId of a glossary to apply. Requires sourceLang; the glossary must have a dictionary for the source/target pair. Use list-glossaries to discover ids. Requires a DeepL Pro plan.sourceLangstringoptionalSource language code, e.g. 'EN'. Omit to let DeepL auto-detect. Required when using a glossary.styleIdstringoptionalStyle rule set id from list-style-rule-sets. Its own custom instructions are applied with it, so do not repeat them below. Requires a DeepL Pro plan.uploadModestringoptionalSelect 'inline_ui' for the widget or 'agent_http' when you can HTTP PUT the referenced file. Defaults to 'inline_ui'.