Knowledge Base

Documentation to help you use the POEditor localization platform effectively

How to set up and use the POEditor MCP server

Owner Admin

The POEditor MCP server connects any MCP-compatible AI assistant directly to your POEditor account. You can manage projects, terms, translations, contributors, and languages — all from your AI tool, without switching to the POEditor UI or writing API scripts.

Endpoint: https://mcp.poeditor.com/mcp

No installation required. The server is hosted by POEditor and uses Streamable HTTP transport.

What you can do with it

Once connected, you can ask your assistant things like:

  • List all my POEditor projects
  • Show untranslated strings for Spanish in project My app
  • Add the term "checkout_button" with English value "Check out" to project 123456
  • Export French translations from project My app as JSON
  • Auto-translate untranslated German terms using DeepL
  • Show translation and proofreading progress for all languages in project 123456
  • Run QA checks for Italian in project 123456
  • List contributors for project 123456

The server covers 36 tools, covering the full POEditor v2 API and other actions.

Authentication

OAuth 2.1 (recommended)

If your client supports OAuth, we encourage you to use it — you don't need to copy or store a token manually. The client handles the whole flow.

Supported by: Claude Code, Claude.ai Connectors, and any MCP client that implements OAuth.

How it works:

  1. The client opens https://poeditor.com/oauth/authorize
  2. You log in to POEditor and grant access
  3. The client receives and stores the token automatically
  4. Tokens refresh automatically — nothing to maintain

The server requests read and write scope, giving full access to the authenticated user's projects.

API token

If your client doesn't support OAuth, you can use a POEditor API token.

  1. Go to poeditor.com/account/api (you need to be logged in)
  2. Click Generate token (or copy an existing one)
  3. Pass it on every request as: Authorization: Bearer <token>

Permissions: The token inherits the role of the user who created it. If that user doesn't have access to a project, the token won't either.

Rotation: Tokens don't expire on their own. If a token is compromised, revoke it from the API access page and generate a new one.

Rate limits

Standard POEditor API limits apply: 60 requests per minute per token. The MCP server batches operations where possible, so heavy actions like full project exports or bulk imports count as a single request.

Security

  • HTTPS only (TLS 1.3)
  • Tokens are never logged by the server
  • Tokens are always passed in the Authorization header, never in URL query strings
  • POEditor is ISO 27001 certified

How to connect your client

Below are configuration snippets for each supported client. Replace YOUR_POEDITOR_API_TOKEN with a token from poeditor.com/account/api.

After saving any configuration file, restart the client so it picks up the new server.

Claude Code

OAuth is supported natively — no token needed.

claude mcp add poeditor --transport http https://mcp.poeditor.com/mcp

On first use, Claude Code opens a browser for POEditor login and stores the token automatically.

To use an API token instead:

claude mcp add poeditor --transport http https://mcp.poeditor.com/mcp \
  --header "Authorization: Bearer YOUR_POEDITOR_API_TOKEN"

To confirm the server was added:

claude mcp list

Claude Desktop

Edit claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/
  • Windows: %APPDATA%\Claude\
{
  "mcpServers": {
    "poeditor": {
      "url": "https://mcp.poeditor.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_POEDITOR_API_TOKEN"
      }
    }
  }
}

Cursor

Edit ~/.cursor/mcp.json:

{
  "mcpServers": {
    "poeditor": {
      "url": "https://mcp.poeditor.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_POEDITOR_API_TOKEN"
      }
    }
  }
}

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "poeditor": {
      "serverUrl": "https://mcp.poeditor.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_POEDITOR_API_TOKEN"
      }
    }
  }
}

VS Code (GitHub Copilot)

Add to .vscode/mcp.json in your project:

{
  "servers": {
    "poeditor": {
      "url": "https://mcp.poeditor.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_POEDITOR_API_TOKEN"
      }
    }
  }
}

Zed

Add to ~/.config/zed/settings.json:

{
  "context_servers": {
    "poeditor": {
      "command": {
        "path": "npx",
        "args": [
          "-y", "mcp-remote",
          "https://mcp.poeditor.com/mcp",
          "--header", "Authorization: Bearer YOUR_POEDITOR_API_TOKEN"
        ]
      },
      "settings": {}
    }
  }
}

Gemini CLI

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "poeditor": {
      "url": "https://mcp.poeditor.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_POEDITOR_API_TOKEN"
      }
    }
  }
}

Amazon Q Developer

Add to ~/.aws/amazonq/mcp.json:

{
  "mcpServers": {
    "poeditor": {
      "url": "https://mcp.poeditor.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_POEDITOR_API_TOKEN"
      }
    }
  }
}

For Cline, Continue, Augment, and other clients, see the examples folder in the GitHub repository.

Verifying the connection

Once connected, start a new conversation and ask:

List my POEditor projects

You should get a list of your projects with IDs, names, and last-updated timestamps.

Available tools

The live tool list is always served by the server via tools/list. Current coverage:

Category Tools
Projects list, details, add, update, delete, sync, upload, export
Languages available languages, list project languages, add, update, delete
Terms list, add, update, delete, details, comment
Translations commit, propose, update, delete, fill from TM, list fuzzy, list pending proofread, list untranslated, mark proofread
Progress translation status, proofread progress
Quality QA checks
Contributors list, add, remove
Automation automatic translation (Google, Microsoft, DeepL)
Account account info

Full parameter reference: docs/tools.md

Things worth knowing

Terms use term + context as their identifier

POEditor identifies terms by the combination of term + context. Two terms with the same name but different contexts are different entities:

{ "term": "save", "context": "button" }
{ "term": "save", "context": "menu" }

If a term was created with a context, you need to include that context in any update or delete operation. Mismatches result in silently unmatched updates — no error, just nothing happening.

Best practice: When prompting your assistant to update or delete a specific term, include both the term name and its context.

Writing translations: four tools, different behavior

The assistant picks the right tool based on your prompt, but it helps to know how they differ:

Tool Fills untranslated Overwrites existing Marks as fuzzy
commit_translations
propose_translations ✓ always
update_translations
update_language per-item flag

Use commit_translations to add new translations without touching existing ones. Use update_translations to overwrite. Use propose_translations when the strings should go in as fuzzy, pending review.

Export formats

export_strings_file returns a 10-minute download URL. Supported localization formats:

po · pot · mo · json · key_value_json · i18next · arb · csv · ini · properties · resw · resx · ts · apple_strings · xliff · xliff_1_2 · rise_360_xliff · xlf · xmb · xtb · android_strings · yml · xcstrings · xls · xlsx

Automatic translation providers

Provider provider value Language code format
Google Translate google en, fr, zh-CN
Microsoft Translator microsoft en, fr, zh-Hans
DeepL deepl EN, FR, ZH (uppercase)

DeepL uses uppercase language codes. The server handles the conversion automatically when you specify a language in your prompt.

Best practice: Reference project IDs directly in your prompts rather than just project names. Show translation progress for project 123456 is more reliable than Show progress for My App. You can get project IDs by asking the assistant to list your projects first.

Supported clients

Any client that speaks MCP over HTTP transport, such as:

Claude Code · Claude Desktop · Claude.ai Connectors · Cursor · Windsurf · Zed · VS Code (GitHub Copilot · Cline · Continue · MCP extension) · Gemini CLI · Amazon Q Developer · Augment · mcp-inspector

Best practice: Check that your client supports remote MCP over HTTP (Streamable HTTP) transport. Older clients may only support stdio and won't be able to connect.

Troubleshooting

401 Unauthorized The token is wrong, missing, or has been revoked. Regenerate it at poeditor.com/account/api and update your client config.

Tools not showing up Make sure the client supports remote MCP (HTTP transport). Restart the client after saving the config. In Claude Code, run claude mcp list to verify the server is registered.

Connection refused or timeout Check that outbound HTTPS to mcp.poeditor.com (port 443) is allowed by your firewall or network.

Term updates not taking effect You're likely missing the context field. See the note on term + context above.

Rate limit errors You've hit the 60 requests/minute limit. Space out large bulk operations or break them into smaller batches.

Frequently asked questions

Do I need to install anything? No. The server is hosted by POEditor — just add the config snippet to your client.

What permissions does the token need? It inherits the permissions of the user who created it. For write operations (creating terms, updating translations, adding contributors), that user needs the appropriate project role.

Is my data secure? All traffic uses HTTPS (TLS 1.3). Tokens are never logged and never passed in URL query strings.

What if my client isn't listed? If it speaks MCP over HTTP transport, it should work. Try the generic HTTP config and see.

Links

Additional help

Related articles