Polylang MCP integration

Translate a whole page into another language in three calls.

EMCP Pro works with Polylang's free edition. It copies a page into the target language with its content and settings, hands your AI the page's text as one numbered list, writes the translation back in a single call and links it to the original. The original page never changes.

Pro integrationPolylang 3.x (free is enough)

The French pageActual screenshot
French version of the Larkspur Kitchen School page: a dark green hero reading Cuisinez en toute confiance, three white class cards on cream, and a testimonial, all in French.
The published French copy at /fr/, translated block by block. See the real run

A real run on our test site

Larkspur Kitchen School, now in French.

We asked an assistant to make a landing page bilingual. It built the English page, set up Polylang’s two languages, copied the page into French, translated every block in one write and published the translation.

What we asked
Create a landing page for Larkspur Kitchen School with a hero, three class cards and a testimonial. Then add English and French with Polylang, translate the page into French and publish the translation.
Recorded
Plugin
Polylang 3.8.10
Connection
EMCP 3.19.0 over MCP (WP-CLI stdio)
Calls shown
7, in the order they ran
What happened along the way
  • The French copy started as a draft with the slug cook-with-confidence-fr: Polylang free does not allow the same slug in two languages.
  • apply-page-text checked all 16 segments before writing any of them, and the English page was never touched.
The tool callsActual answers, shortened
  1. 01create-post
    {"post_type": "page", "status": "publish", "title": "Cook with confidence", "content": "<!-- wp:cover {\"customOverlayColor\":\"#1F3D2B\",\"dimRatio\":100,…", "meta": {"site-post-title": "disabled", "ast-site-content-layout": "full-width-container", "site-content-style": "unboxed", "site-sidebar-layout": "no-sidebar"}}Answer: {"post_id": 2266, "status": "publish", "permalink": "https://elementor-mcp.test/cook-with-confidence/"}
  2. 02polylang-write · add-language
    {"locale": "fr_FR", "slug": "fr", "name": "Français"}Answer: {"language": {"name": "Français", "slug": "fr", "term_group": 0, "term_id": 54, "locale": "fr_FR", "is_rtl": false, "w3c": "fr-FR", "…": "15 more fields"}, "change": {"change_id": "08f4a64c5bc2", "undo": true}}
  3. 03polylang-write · assign-language
    {"lang": "en", "post_type": "page", "without_language": true}Answer: {"lang": "en", "assigned": 8, "remaining": 0, "change": {"change_id": "9770451d7ea8", "undo": true}}
  4. 04polylang-write · create-translation
    {"post_id": 2266, "lang": "fr"}Answer: {"post_id": 2267, "lang": "fr", "title": "Cook with confidence", "slug": "cook-with-confidence-fr", "status": "draft", "password_protected": false, "untranslated_terms": [], "…": "6 more fields"}
  5. 05polylang-read · get-page-text
    {"post_id": 2267}Answer: {"post_id": 2267, "builder": "gutenberg", "hash": "4fed9163d9ab20b43810beee49e46d0bfedf60abeb0a12177f30a4def57992cb", "segments": [{"key": "post:title", "kind": "text", "text": "Cook with confidence", "where": "Title"}, {"key": "block:0.0:content", "kind": "html", "text": "Larkspur Kitchen School", "where": "core/paragraph, content"}, {"key": "block:0.1:content", "kind": "html", "text": "Cook with confidence", "where": "core/heading, content"}, "… 15 more"], "total": 18, "next_cursor": null, "skipped": []}
  6. 06polylang-write · apply-page-text
    {"post_id": 2267, "based_on": "4fed9163d9ab20b43810beee49e46d0bfedf60abeb0a12177f30a4def57992cb", "segments": [{"key": "post:title", "text": "Cuisinez en toute confiance"}, {"key": "block:0.1:content", "text": "Cuisinez en toute confiance"}, {"key": "block:0.2:content", "text": "Des cours pratiques en petit groupe pour les cuisiniers amate…"}, "… 13 more"]}Answer: {"post_id": 2267, "applied": 16, "page_after_hash": "2f4d95938070b4d19d041aa5d57d9a157afe3f8806686d71f4ee7561f1f61f31", "change": {"change_id": "002145569c25", "undo": true}}
  7. 07polylang-write · set-status
    {"post_id": 2267, "status": "publish"}Answer: {"post_id": 2267, "status": "publish", "url": "https://elementor-mcp.test/fr/cook-with-confidence-fr/", "change": {"change_id": "8576ee7b84c5", "undo": true}}

Larkspur Kitchen School is a fictional demonstration, and so are its staff and students. Recorded on our test site on October 7, 2026 with EMCP 3.19.0 and Polylang 3.8.10, over a real MCP connection. Email was held on the test site, so nothing was sent. The Polylang screens are the plugin’s own; values and ids in the calls are the ones this run returned, with long text shortened.

A practical place to start

From one language to the next, page by page.

  1. 01

    Copy the page

    create-translation copies the page into the target language as a linked draft, with its Elementor or block content, template, password and featured image, and maps its parent and categories to their translations.

  2. 02

    Translate its text

    get-page-text returns every translatable string as a numbered list: widget and block text, links, alt text, the title, the excerpt and the SEO title and description. apply-page-text writes the translated list back in one call.

  3. 03

    Publish and link

    Publish the translation, give each menu location a menu per language, and translate categories and theme strings. Every step is in History.

Built for Polylang

A translation that starts as a faithful copy

EMCP copies the page with everything Polylang links per language: the Elementor or Gutenberg content, page settings, template, password and featured image. The copy’s parent page and categories are mapped to their translations, and a category with no translation yet is listed so your AI can create it. The copy is a draft until you publish it.

Text in, text out

Your AI never edits page markup by hand. get-page-text reads every translatable string as a numbered segment, from Elementor widget text and links to block captions and the Yoast, Rank Math or SEOPress title and description. apply-page-text writes the translated list back in one call, after checking every segment. Large pages can go in batches.

The original stays as it is

Polylang can copy dates, page order, custom fields and categories between translations. EMCP holds that copying back for what it writes, so publishing the French page never moves the English one. Every write is in History in EMCP Tools and can be undone there.

Use the Polylang tool reference for operation names and arguments. If your site uses TranslatePress instead, see the TranslatePress integration.

Get connected

Put Polylang in your AI’s toolkit.

  1. 1

    Install Polylang

    Install EMCP Pro 3.19 or later with Polylang 3.x. The free edition is enough.

  2. 2

    Enable the write tool

    polylang-read is on; polylang-write starts disabled. Enable it under EMCP Tools > Tools > Plugins > Polylang and reconnect your AI client.

  3. 3

    Add your languages

    Ask your AI to add each language and assign the default language to content that existed before Polylang, 500 posts per call.

Install EMCP

Then connect Claude Code, Claude Desktop, or Cursor to use the Polylang tools enabled on your site. Compare Free and Pro access.

Build with AIBuild a multilingual website with AITranslate pages as drafts, keep translations linked, and find what is still missing per language.See how it works

A few useful details

Before you connect.

Questions about Polylang, supported operations, and the workflow on your site.

Do I need Polylang Pro?

No. The free edition is enough. Polylang Pro features such as shared slugs, translated slugs and machine translation are not used.

Will translating change the original page?

No. While EMCP writes a translation it holds back Polylang's copying for the fields it writes. If Polylang copies something anyway, EMCP reverses its own write and records an entry in History that restores it.

What if one segment is wrong?

apply-page-text checks every segment first. One bad segment and nothing is written, so a page is never left half translated.

Can I undo a translation?

Yes, from History. A copy that someone edited since is not deleted, and a language that pages use is not removed.

Your tools. Your WordPress site.

Make Polylang part of the conversation.

Get EMCP Pro