Translating from Claude and ChatGPT (MCP)
On this page
Available in LATW AI Translator for WPML PRO (version 3.1.0 and later).
Everywhere else in this plugin, translating 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 puts it into WPML.
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.
- WPML with Translation Management, as for any other translation this plugin makes.
- 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.
#Switching it on
- Go to AI Translator → 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 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. 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/latw-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 only the SEO title and description of the About page into Polish.”
The translation is written into WPML exactly where the plugin would have written it. It appears in
AI Translator → History, in the WPML dashboard, and on the front end, and you can edit it
afterwards in WPML’s editor like any other translation.
Which parts of a page the assistant is handed — the content, the custom fields, the SEO title and
description — is decided by WPML, not by this connection, and the rules are the same however you
translate. See What Gets Translated?.
#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 English it
came from:
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 in WPML’s editor.
Two things are worth knowing:
- A page translated by hand from scratch cannot be listed this way. If a translation never went
through the plugin or WPML’s editor, there are no fields to line up, and the assistant will say so
rather than guess. - 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, so they would be published
empty. The assistant is told this and will not half-translate a page by accident.
#Addresses of translated pages
When WPML creates a translation it builds its address from the 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 URL 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 the translation moves. 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, WordPress
appends a number and the assistant tells you which address it actually got.
For posts and products, changing the address of something already published is safe: WordPress
remembers the old address and sends anyone using it to the new one, exactly as it does when you
rename a post in the editor.
Pages are the exception. WordPress only keeps old addresses for non-hierarchical content, and
pages are hierarchical – so the old address of a page simply stops working, and any link pointing at
it 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 the way it does on its own pipeline. - 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. - 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.
#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/latw-mcp/ through. |
| A 404 from the address | The server is switched off, or the licence is not active. |
| A 401 | The token is wrong – copy it again from the MCP tab. |
| The assistant lists no tools | The licence expired, or every tool group was switched off. |
Rows stuck at awaiting_mcp |
A conversation ended mid-job. Ask the assistant to list and cancel open jobs. |
The AI Translator → Logs page records what happened on this site’s side, and
Settings → Advanced → Debug Mode adds the detail.