MCP server for Crowdin — projects, files, strings, translation progress, tasks, and members.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Adds a source string to a file in a Crowdin project (additive). Crowdin API: POST /projects/{projectId}/strings.
The source string text.
Id of the source file to add the string to.
Numeric project id (path).
Optional context shown to translators.
Hide the string from translators.
Max allowed translation length.
Optional unique string identifier / key.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Adds a source string to a file in a Crowdin project (additive). Crowdin API: POST /projects/{projectId}/strings.
| Argument | Type | Description |
|---|---|---|
| text* | string | The source string text. |
| fileId* | integer | Id of the source file to add the string to. |
| context | string | Optional context shown to translators. |
| isHidden | boolean | Hide the string from translators. |
| maxLength | integer | Max allowed translation length. |
| projectId* | integer | Numeric project id (path). |
| identifier | string | Optional unique string identifier / key. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"text",
"fileId"
],
"properties": {
"text": {
"type": "string",
"description": "The source string text."
},
"fileId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of the source file to add the string to."
},
"context": {
"type": "string",
"description": "Optional context shown to translators."
},
"isHidden": {
"type": "boolean",
"description": "Hide the string from translators."
},
"maxLength": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Max allowed translation length."
},
"projectId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric project id (path)."
},
"identifier": {
"type": "string",
"description": "Optional unique string identifier / key."
}
}
}Adds a translation for a source string in a target language (additive). Crowdin API: POST /projects/{projectId}/translations.
| Argument | Type | Description |
|---|---|---|
| text* | string | The translation text. |
| stringId* | integer | Id of the source string to translate. |
| projectId* | integer | Numeric project id (path). |
| languageId* | string | Target language id, e.g. "fr", "de", "uk". |
| pluralCategoryName | string | Plural form, e.g. "one", "few", "many", "other". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId",
"stringId",
"languageId",
"text"
],
"properties": {
"text": {
"type": "string",
"description": "The translation text."
},
"stringId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Id of the source string to translate."
},
"projectId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric project id (path)."
},
"languageId": {
"type": "string",
"description": "Target language id, e.g. \"fr\", \"de\", \"uk\"."
},
"pluralCategoryName": {
"type": "string",
"description": "Plural form, e.g. \"one\", \"few\", \"many\", \"other\"."
}
}
}Per-target-language translation & approval completion percentages for a project — the headline localization status. Crowdin API: GET /projects/{projectId}/languages/progress.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max rows (max 500, default 25). |
| offset | integer | Rows to skip (default 0). |
| projectId* | integer | Numeric project id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"description": "Max rows (max 500, default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip (default 0)."
},
"projectId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric project id."
}
}
}Get a single project's details by id (settings, languages, counts). Crowdin API: GET /projects/{projectId}.
| Argument | Type | Description |
|---|---|---|
| projectId* | integer | Numeric project id (from crowdin_list_projects). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId"
],
"properties": {
"projectId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric project id (from crowdin_list_projects)."
}
}
}List version branches in a project (id, name, title). Crowdin API: GET /projects/{projectId}/branches.
| Argument | Type | Description |
|---|---|---|
| name | string | Filter by branch name. |
| limit | integer | Max rows (max 500, default 25). |
| offset | integer | Rows to skip (default 0). |
| projectId* | integer | Numeric project id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId"
],
"properties": {
"name": {
"type": "string",
"description": "Filter by branch name."
},
"limit": {
"type": "integer",
"maximum": 500,
"description": "Max rows (max 500, default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip (default 0)."
},
"projectId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric project id."
}
}
}List directories (folders) in a project (id, name, path). Crowdin API: GET /projects/{projectId}/directories.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max rows (max 500, default 25). |
| offset | integer | Rows to skip (default 0). |
| branchId | integer | Filter by branch id. |
| projectId* | integer | Numeric project id. |
| directoryId | integer | Filter by parent directory id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"description": "Max rows (max 500, default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip (default 0)."
},
"branchId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by branch id."
},
"projectId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric project id."
},
"directoryId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by parent directory id."
}
}
}List source files in a project (id, name, path, type, status). Crowdin API: GET /projects/{projectId}/files.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max rows (max 500, default 25). |
| filter | string | Filter files by name substring. |
| offset | integer | Rows to skip (default 0). |
| branchId | integer | Filter by branch id. |
| projectId* | integer | Numeric project id. |
| directoryId | integer | Filter by directory id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"description": "Max rows (max 500, default 25).",
"exclusiveMinimum": 0
},
"filter": {
"type": "string",
"description": "Filter files by name substring."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip (default 0)."
},
"branchId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by branch id."
},
"projectId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric project id."
},
"directoryId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by directory id."
}
}
}List members of a project (id, username, role, permissions). Crowdin API: GET /projects/{projectId}/members.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max rows (max 500, default 25). |
| offset | integer | Rows to skip (default 0). |
| search | string | Search members by name/username/email. |
| projectId* | integer | Numeric project id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"description": "Max rows (max 500, default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip (default 0)."
},
"search": {
"type": "string",
"description": "Search members by name/username/email."
},
"projectId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric project id."
}
}
}List projects the token can access (id, name, sourceLanguageId, targetLanguageIds). Good first call to discover project ids. Crowdin API: GET /projects.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max rows (max 500, default 25). |
| offset | integer | Rows to skip (default 0). |
| groupId | integer | Filter by group id (Enterprise). |
| hasManagerAccess | any | 1 = only projects where you are a manager. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"description": "Max rows (max 500, default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip (default 0)."
},
"groupId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by group id (Enterprise)."
},
"hasManagerAccess": {
"anyOf": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 1
}
],
"description": "1 = only projects where you are a manager."
}
}
}List source strings in a project (id, text, identifier, context). Crowdin API: GET /projects/{projectId}/strings.
| Argument | Type | Description |
|---|---|---|
| croql | string | Crowdin Query Language filter, e.g. count of words <= 5. |
| limit | integer | Max rows (max 500, default 25). |
| fileId | integer | Filter by source file id. |
| filter | string | Filter strings by text or identifier substring. |
| offset | integer | Rows to skip (default 0). |
| branchId | integer | Filter by branch id. |
| projectId* | integer | Numeric project id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId"
],
"properties": {
"croql": {
"type": "string",
"description": "Crowdin Query Language filter, e.g. count of words <= 5."
},
"limit": {
"type": "integer",
"maximum": 500,
"description": "Max rows (max 500, default 25).",
"exclusiveMinimum": 0
},
"fileId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by source file id."
},
"filter": {
"type": "string",
"description": "Filter strings by text or identifier substring."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip (default 0)."
},
"branchId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by branch id."
},
"projectId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric project id."
}
}
}Crowdin's catalog of supported languages (id, name, locale, twoLettersCode). Crowdin API: GET /languages.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max rows (max 500, default 25). |
| offset | integer | Rows to skip (default 0). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"description": "Max rows (max 500, default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip (default 0)."
}
}
}List translation/proofreading tasks in a project (id, title, status, assignees). Crowdin API: GET /projects/{projectId}/tasks.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max rows (max 500, default 25). |
| offset | integer | Rows to skip (default 0). |
| status | string | Filter by task status. |
| projectId* | integer | Numeric project id. |
| assigneeId | integer | Filter by assignee user id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"projectId"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"description": "Max rows (max 500, default 25).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip (default 0)."
},
"status": {
"enum": [
"todo",
"in_progress",
"done",
"closed"
],
"type": "string",
"description": "Filter by task status."
},
"projectId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric project id."
},
"assigneeId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter by assignee user id."
}
}
}