Translating from Claude and ChatGPT (MCP)
On this page
Available in PRO (version 2.4.0 and later).
Everywhere else in this plugin, automatic translation means sending your text to an AI provider and
paying that provider for the answer. The MCP server turns that around. You connect your site to the
AI assistant you already use – Claude or ChatGPT – and translate from inside the conversation. The
assistant writes the translation; the plugin saves it on your site.
There is no API bill. No key is used, no provider is called, and every translation made this way
shows a cost of $0.00 on the History screen. You are using the subscription you already pay for.
MCP – Model Context Protocol – is the standard those assistants use to talk to outside systems.
Switching the server on gives the assistant a set of tools: find untranslated pages, take one for
translation, send the translation back, look something up in your glossary.
In practice a session looks like this:
You: What still needs translating into German?
Claude: Eleven pages have no German version. The most recently edited are About, Shipping &
Returns and Our Suppliers.You: Do the three of them.
Claude: (takes each page, translates it, sends it back) All three are translated and live.
About is at /de/uber-uns/.
#What you need before you start
- An active PRO licence.
- At least one language to translate into, under LATW Multilingual → Settings → Languages.
- HTTPS. Assistants run on someone else’s servers and will not connect to an unencrypted site.
- A Claude or ChatGPT plan that allows custom connectors. On ChatGPT that means Plus, Pro,
Business, Enterprise or Edu – the free tier cannot add one.
No AI provider key is needed. The MCP server works whichever engine is selected on the AI tab,
and also when none is set up at all.
#Switching it on
- Go to LATW Multilingual → Settings → MCP.
- Turn on MCP server.
- Press Generate token. The token is the password to this door – anyone holding it can read and
translate your site’s content. - Decide what the assistant may reach, under What the assistant may do. Posts and pages are
always available. Status and costs, and the glossary, are on by default; interface strings and
categories and tags are off until you want them. - Press Save changes, then Test connection. That check calls the server the same way an
assistant would and tells you plainly if something between the internet and WordPress is in the
way.
The screen then shows two addresses. Which one you use depends on the application.
#Connecting Claude
Claude Desktop and claude.ai. Open Settings → Connectors → Add custom connector, give it a
name, and paste the Address (token in URL) from the MCP tab. Press Show next to the field
first – the screen masks it until you do – or press Copy, which always copies the full address.
There is nothing else to fill in: the token is part of the address.
Claude Code. The MCP tab shows the exact command, ready to copy:
claude mcp add my-site https://example.com/wp-json/latwmp-mcp/v1/http --transport http --header "Authorization: Bearer YOUR_TOKEN"
Run it in a terminal, then /mcp inside Claude Code to confirm the site is listed.
#Connecting ChatGPT
Custom connectors are hidden until you switch developer mode on, so this is two trips into Settings.
First, switch developer mode on. Open Settings → Security and login, find Developer mode
and turn it on.
Then add the connector. Open Settings → Plugins → Browse plugins and press the + in the
top right corner. Fill the form in:
- Name – whatever you want to see in the conversation, for example your site’s name.
- Address – the Address (token in URL) from the MCP tab.
- Authentication – No Auth. The token is already part of the address, so there is nothing
else to fill in. - Tick I understand and want to continue, then press Create.
ChatGPT loads the connector, which takes a moment, and then shows Connect. Press it, and the
site’s tools are available in the conversation.
#Asking for a translation
Once connected, ask in plain language. The assistant has the tools; you do not need to name them.
- “What pages have no French translation yet?”
- “Translate the About page into German and French.”
- “The pricing page changed – update the Polish version.”
- “How much have translations cost this month?”
- “Show me the German version of the pricing page – does it read naturally?”
- “The Polish About page says ‘Zacznij zakupy’ on the button. Change it to ‘Przejdź do zakupów’.”
- “What was the last thing translated on the shop?”
- “Change the Polish address of the About page to o-nas-firmy.”
- “Translate the main menu and the contact form into German.” (needs Interface strings)
- “Translate the product categories into Polish.” (needs Categories and tags)
The translation is saved exactly where the plugin’s own automatic translation would have saved it.
It appears in LATW Multilingual → History – with the assistant’s name in the Method column –
on the Posts screen and on the front end, and you can edit it afterwards like any other
translation, from the LATW Translations box on the page’s edit screen.
Which content types and taxonomies can be translated is decided by
LATW Multilingual → Settings → Translation, the same as for every other way of translating.
#What the assistant is handed
The same text the automatic translation would send: the title, the content, the excerpt, the
translated custom fields and – on an Elementor page – the text of each widget, never the layout
itself. Block settings inside the content are replaced by placeholders the assistant has to copy
back unchanged, so a translation cannot break a block’s styling.
Your Website Description, your Translation Prompt (when you have written your own) and your
glossary go with every job, as guidance for the assistant.
Pages built with WPBakery, Divi and the other page builders that are translated by hand only are
not offered – the same rule as for automatic translation.
#Reviewing and correcting a translation
You do not have to accept a translation as it came out, and you do not have to redo the whole page
to change one line.
Ask to see it, and the assistant reads the current translation field by field beside the original:
You: Show me the Polish About page next to the original.
Claude: (lists each piece) The heading is “O nas”, the intro is …, the button says “Zacznij
zakupy”.You: The button should say “Przejdź do zakupów”.
Claude: Changed. The rest of the page is untouched.
Only the line you asked about is rewritten. Everything else keeps the wording it already had,
including any corrections you made by hand.
Three things are worth knowing:
- A first translation is all-or-nothing. Until a page has a translation, every field has to be
filled in one go – there is nothing to keep for the ones left out. The assistant is told this and
will not half-translate a page by accident. - Outdated stays outdated. When the original has changed since it was translated, the assistant
can be asked to translate only what changed. A part it leaves alone keeps its old translation and
stays marked as out of date, so it still shows up on the Posts screen as needing an update. - A mistake is sent back, not saved. The assistant’s answer goes through the same checks as an
automatic translation – no block, shortcode or placeholder may go missing. If one does, nothing is
saved, the assistant is told which field is wrong, and it can correct it and send it again.
#Addresses of translated pages
When the Localize URLs (slug) setting is on, a translated page gets an address built from its
translated title, so About becomes /pl/o-nas/ on its own. That is usually what you want, and
occasionally not – a title that translates to the same words, or a page whose heading and address
should read differently.
You can ask for a different one, either while translating or long afterwards:
You: Translate the About page into Polish, and make the address /pl/o-nas-firmy/.
You: Change the Polish address of the About page to poznaj-nasza-firme.
Only that language’s address changes. The original page keeps its own address, and so does every
other language. If the address you ask for is already used by another page in that language, a
number is appended and the assistant tells you which address it actually got.
The previous address stops working. The plugin does not keep old addresses of a translation, so
once a published translation is given a new one, any link pointing at the old address lands on a
404. If the page was already published and linked to, add a redirect yourself.
#What it will not do
Be clear about this before you promise it to anyone:
- It is not bulk translation. The assistant works page by page, in a conversation, and long
pages use up a lot of it. For two hundred products, use automatic translation and pay the API
bill – that is what it is for. This is for the pages you care about individually. - The quality is the assistant’s, not the plugin’s. Your Translation Prompt and Website
Description are handed over as guidance, but nothing enforces them. An assistant that decides to
paraphrase will paraphrase. - The glossary is advice here, not a rule. Your terms are sent with every job and assistants
follow them well, but the plugin cannot check the result. - A conversation can stop halfway. If it does, the page is left with an open job. Ask the
assistant to “list open translation jobs” and either finish or cancel them; open jobs also show
asawaiting_mcpon the History screen. An open job changes nothing on the site. - One token for the whole site. There is no per-person access and no list of connected
applications. Generating a new token disconnects everything using the old one. - Theme and plugin files are not included. Texts translated on the Themes & Plugins screen
are not offered to the assistant.
#About the token
The token is shown masked, and Show reveals it – you will need to read it back when you connect
a second application.
The two addresses differ in more than convenience. The one with the token in the URL is the easy
one, and it is what Claude Desktop and ChatGPT need, but a secret in an address ends up in your
server’s access logs and in the browser history of whoever pasted it. The address using the
Authorization header keeps the token out of both, and is worth using wherever the application
supports it.
Either way: treat the token like an administrator password, and press Generate a new token the
moment you think someone else has seen it.
The connected assistant acts as the WordPress user who generated the token, with that user’s
permissions. If that account is deleted or loses its administrator role, the token stops working.
#When something goes wrong
Test connection on the MCP tab is the first thing to try – it separates “the plugin is fine and
your assistant is misconfigured” from “nothing can reach this site at all”.
| What you see | What it usually means |
|---|---|
| The assistant says it cannot reach the server | The address is wrong, the server is switched off, or the site is not on HTTPS. |
| Test connection says the token did not arrive | Your host strips the Authorization header before PHP sees it. Use the address with the token in the URL instead. |
| Test connection cannot reach the site at all | A firewall or a security plugin is blocking /wp-json/. Allow /wp-json/latwmp-mcp/ through. |
| A 404 from the address | The server is switched off. |
| A 403 from the address | The licence is not active – or, on the address with the token in it, the site is not on HTTPS. |
| A 401 | The token is wrong – copy it again from the MCP tab. |
| The assistant lists no tools, or fewer than expected | A tool group is switched off under What the assistant may do, or the licence expired. |
Rows stuck at awaiting_mcp |
A conversation ended mid-job. Ask the assistant to list and cancel open jobs. |
| “An automatic translation … is already running” | The page is in the automatic translation queue for that language. Wait for it to finish, or cancel it from the queue panel. |
The LATW Multilingual → Logs page records what happened on this site’s side, and
Settings → Advanced → Debug Mode adds the detail.