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:
- The client opens
https://poeditor.com/oauth/authorize - You log in to POEditor and grant access
- The client receives and stores the token automatically
- 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.
- Go to poeditor.com/account/api (you need to be logged in)
- Click Generate token (or copy an existing one)
- 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
Authorizationheader, 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 123456is more reliable thanShow 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
stdioand 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
- API docs: poeditor.com/docs/api
- MCP server repository: github.com/POEditor/poeditor-mcp
- MCP spec: modelcontextprotocol.io
- Support: info@poeditor.com