Summary
Crowdin localization on crowdin.com and Crowdin Enterprise through API v2: projects and progress per language, files, source strings, translations and approvals, comments and issues, tasks, reports, translation builds and exports, translation memories, glossaries and project members.
Guided setup
Connect Crowdin to Microsoft Copilot in 2 minutes
Start a free trial on AnythingMCP Cloud, connect Crowdin in the guided setup, then add your MCP URL to Microsoft Copilot. No code and no server to run.
No credit card · 7-day trial · Self-host alternative available
Try asking
Example prompts for Crowdin
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Crowdin, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Crowdin + Microsoft Copilot
Crowdin localization on crowdin.com and Crowdin Enterprise through API v2: projects and progress per language, files, source strings, translations and approvals, comments and issues, tasks, reports, translation builds and exports, translation memories, glossaries and project members.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
CROWDIN_PERSONAL_ACCESS_TOKEN, CROWDIN_API_HOST
Step 1 — Get credentials
Setting up takes about 2 minutes. You need a crowdin.com or Crowdin Enterprise account.
- Create a personal access token. On crowdin.com: Account Settings > API > New Token. On Crowdin Enterprise: profile > Settings > API > New Token inside your organization.
- Pick the scopes you need: Projects, Source files and strings, Translations, Tasks, Reports, Translation memory, Glossaries. Read-only scopes give a read-only setup. Copy the token: it is shown only once.
- Paste it into
CROWDIN_PERSONAL_ACCESS_TOKEN; it is sent asAuthorization: Bearer <token>. CROWDIN_API_HOST:api.crowdin.comfor crowdin.com, or<organization>.api.crowdin.comfor Enterprise, with the organization from your Enterprise URLhttps://<organization>.crowdin.com.- Install the connector and run
crowdin_get_authenticated_user: it shows the user the token belongs to and confirms token and host.
Crowdin's own MCP server: Crowdin also runs an official MCP server (https://mcp.crowdin.com/v2/mcp, on Enterprise https://<organization>.mcp.crowdin.com/v2/mcp, with the personal access token as Bearer). This connector works with the API v2 directly.
What it reads:
- Projects with source and target languages, type (file-based or string-based) and settings such as workflow, QA checks, machine translation and translation memory; progress per language for the project or one file; every supported language with its Crowdin id.
- Branches, directories and source files, plus a short-lived link to the source version of a file (
crowdin_download_file). - Source strings with key, text, context, max length, labels and plural forms, filtered by file, branch, directory, label, task, a text match or a CroQL expression.
- Translations (suggestions) into one language at a time with author and rating, and the approvals with approver and time.
- Comments and issues on strings, for example unresolved requests for context.
- Tasks with type, status, language, assignees, progress and deadline; project members with role and languages.
- Translation memories and their segments, a concordance search (
crowdin_search_tm) for how a phrase was translated before, glossaries and their terms.
What it writes:
crowdin_add_stringadds a source string to a file (file-based projects).crowdin_edit_stringchanges it with JSON Patch on/text,/identifier,/context,/isHidden,/maxLengthor/labelIds;update_optiondecides what happens to existing translations when the text changes.crowdin_add_translationadds a suggestion;crowdin_approve_translationapproves it, so it goes into the exported files (this needs proofreader rights for that language).crowdin_add_commentcomments on a string or reports an issue: a question, a translation or source mistake, a request for context.crowdin_create_taskcreates a translate or proofread task for files (or strings in string-based projects) in one language, with assignees and a deadline; on Enterprise it takesworkflow_step_idinstead oftype.crowdin_edit_taskchanges it with JSON Patch, for example/statustodone.crowdin_add_tm_segmentadds the same sentence in several languages to a translation memory;crowdin_add_glossary_termadds a term, optionally as the translation of an existing term or into a concept.
Reports and translated files: reports run in the background. crowdin_generate_report returns data.identifier; the AI polls crowdin_get_report_status until status is finished and then fetches the link with crowdin_download_report. crowdin_export_project_translation exports one language as one file right away. crowdin_build_project_translations builds every file and language as a zip: the AI polls crowdin_get_build_status, then calls crowdin_download_build. Download links expire after a short time (expireIn), so the AI hands them to you instead of keeping them. These calls are POSTs but do not change the content.
Nothing is switched off at install: there are no delete tools.
Ids and formats: project, file, string, translation, task and user ids are numbers; report identifiers are strings. Languages use Crowdin ids such as de, fr, es-ES, pt-BR or zh-CN. Times are ISO 8601 with offset. PATCH tools take JSON Patch lists: [{"op": "replace", "path": "/status", "value": "done"}]. Lists come as {"data": [{"data": {...}}, ...], "pagination": {"offset": 0, "limit": 25}}, single items as {"data": {...}}. Progress is counted in words and phrases, with translationProgress and approvalProgress in percent.
Paging: limit (25 by default, at most 500) and offset. When a page holds limit items, the AI asks for the next one with offset + limit.
Limits: 20 simultaneous requests per account, across all its tokens, on crowdin.com and Enterprise; 429 means wait.
Common errors: 401 means a wrong or expired token, or the wrong host. 403 means a token without the scope, or an account without rights in the project. 404 means an unknown id. 400 and 422 are validation errors naming the field.
The connector does not delete projects, files, strings or translations, and does not upload source files.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Microsoft Copilot
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
Crowdintools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.
Available tools
| Tool | What it does |
|---|---|
crowdin_get_authenticated_user | The user the token belongs to: id, username, email, name and time zone |
crowdin_list_projects | Projects the token can reach, with id, name, identifier, source language, target language ids, type (file-based or string-based) and last… |
crowdin_get_project | One project with its settings: source language, target languages, workflow, QA checks, machine translation and translation memory settings |
crowdin_get_project_progress | Translation and approval progress per target language: words and phrases total, translated, approved, and the percentages |
crowdin_get_file_progress | Translation and approval progress of one file per target language |
crowdin_list_supported_languages | Every language Crowdin supports with its id (used everywhere else), name, locale, ISO codes and plural categories |
crowdin_list_branches | Branches of a project (file-based projects) with id, name, title and export pattern |
crowdin_list_directories | Directories of a project with id, name, path, branch and parent directory |
crowdin_list_files | Source files of a project with id, name, path, type, status, branch, directory and revision |
crowdin_get_file | One source file with its path, type, parser settings, export options, revision and timestamps |
crowdin_download_file | A short-lived download link (data.url, data.expireIn) for the source version of a file |
crowdin_list_strings | Source strings of a project with id, identifier (key), text, context, file, max length, labels, plural forms and hidden flag |
crowdin_get_string | One source string with identifier, text, context, plural forms, labels, max length and file |
crowdin_add_string | Add a source string to a file (file-based projects) with its text, key and context for translators |
crowdin_edit_string | Change a source string with JSON Patch operations on /text, /identifier, /context, /isHidden, /maxLength or /labelIds. update_option says… |
crowdin_list_translations | All translations (suggestions) of strings into one language, with text, author, rating, plural category and time |
crowdin_get_translation | One translation with its text, string, language, author, rating and provider |
crowdin_add_translation | Add a translation (suggestion) for a string in one language |
crowdin_list_approvals | Approvals of translations, filtered by string, file, language, label or translation, with the approver and time |
crowdin_approve_translation | Approve a translation, making it the one that goes into the exported files |
crowdin_list_comments | Comments and issues on strings: text, type (comment or issue), issue type and status, language, author and time |
crowdin_add_comment | Comment on a string, or report an issue (a question, a translation or source mistake, a request for context) |
crowdin_list_tasks | Tasks of a project with title, type (translate or proofread), status, language, assignees, progress, deadline and words count |
crowdin_get_task | One task with its files or strings, language, assignees, progress, deadline, cost estimate and status |
crowdin_create_task | Create a translate or proofread task for files (or, in string-based projects, strings) in one language, assigned to people, with a deadline |
crowdin_edit_task | Change a task with JSON Patch operations, e.g. its status (todo, in_progress, done, closed), title, description, deadline or assignees |
crowdin_generate_report | Start a project report: costs estimate, translation costs, top members, contribution raw data, translator accuracy, QA issues, translation… |
crowdin_get_report_status | Progress of a report being generated: status (created, inProgress, finished, failed) and progress percent |
crowdin_download_report | A short-lived download link (data.url) for a finished report |
crowdin_build_project_translations | Start a build of the translated files of a project (all or some languages, optionally a branch) as a zip |
crowdin_get_build_status | Status and progress of a translations build (created, inProgress, finished, failed, canceled) |
crowdin_download_build | A short-lived download link (data.url) for the zip of a finished build |
crowdin_export_project_translation | Export the translations of one language right away, as one file in a chosen format (e.g. xliff, json, android, macosx), for all or some… |
crowdin_list_tms | Translation memories with id, name, languages, segments count and the projects using them |
crowdin_get_tm | One translation memory with its languages, segments count and default project |
crowdin_list_tm_segments | Segments of a translation memory, each with its records (language id and text) |
crowdin_search_tm | Concordance search: find how phrases were translated before in the translation memories of a project |
crowdin_add_tm_segment | Add a segment to a translation memory: the same sentence in several languages |
crowdin_list_glossaries | Glossaries with id, name, languages, terms count and the projects using them |
crowdin_get_glossary | One glossary with its languages, terms count and default project |
crowdin_list_glossary_terms | Terms of a glossary with text, language, description, part of speech, status, type, note and concept id (terms of one concept are… |
crowdin_add_glossary_term | Add a term to a glossary, optionally as the translation of an existing term (translation_of_term_id) or into a concept |
crowdin_list_members | Members of a project with id, username, full name, role (manager, proofreader, translator, ...) and their languages |
crowdin_get_member | One project member with role, permissions per language and join date |
Example prompts
- "How far along are the German and Japanese translations of our app project, translated and approved?"
- "Which strings in the checkout file have open issues asking for context?"
- "How did we translate "Sign in" into French before? Search the translation memory."
- "Create a proofreading task for the Spanish translation of the onboarding file, due Friday, and assign it to Maria."
- "Build the translated files for all languages, approved translations only, and give me the zip link."
FAQ
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?