Weblate MCP by usefulapi

Read Weblate projects, strings, stats and changes; translate, suggest, comment and autotranslate.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
96%
命名品質
80%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~5,605Token(工具定義)
~1.7 KB典型回應大小
顯著的注意力影響(128k 上下文的 4.38%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "weblate": {
      "url": "https://weblate.usefulapi.io/mcp"
    }
  }
}

遠端端點

https://weblate.usefulapi.io/mcpstreamable-http

它能做什麼

工具清單

工具(23)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢weblate_list_projects(page, page_size)

List the projects visible to this token: name, slug, website and settings (review workflow, access control). GET /api/projects/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_get_project(project)

One project by slug: name, website, settings, instructions and links. GET /api/projects/{project}/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project slug (the URL name, for example 'hello')."
    }
  },
  "required": [
    "project"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_list_components(project, page, page_size)

List translation components (one translatable file set in a repository), with repository, file mask, source language and status flags. Give a project to list only its components. Repository URLs have embedded credentials removed. GET /api/components/ or /api/projects/{project}/components/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "description": "Only this project's components.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_get_component(project, component)

One component: repository, branch, file mask, template, source language, commit and merge settings, lock state. GET /api/components/{project}/{component}/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project slug (the URL name, for example 'hello')."
    },
    "component": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Component slug. A component inside a category is 'category/component'."
    }
  },
  "required": [
    "project",
    "component"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_list_translations(project, component, page, page_size)

List the translations (one language each) of a component with their statistics: total, translated, fuzzy, percent, last change. GET /api/components/{project}/{component}/translations/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project slug (the URL name, for example 'hello')."
    },
    "component": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Component slug. A component inside a category is 'category/component'."
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "required": [
    "project",
    "component"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_get_translation(project, component, language)

One translation (a component in one language): statistics, language, file name, revision and links. GET /api/translations/{project}/{component}/{language}/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project slug (the URL name, for example 'hello')."
    },
    "component": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Component slug. A component inside a category is 'category/component'."
    },
    "language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "Language code as Weblate names it (for example 'cs', 'pt_BR', 'zh_Hans')."
    }
  },
  "required": [
    "project",
    "component",
    "language"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_get_statistics(project, component, language, page, page_size)

Translation progress: strings and words total, translated, needing edit, with percentages and checks. Scope by project; add a component for per-language statistics of a component, add a language too for one translation. GET /api/projects/{project}/statistics/, /api/components/{project}/{component}/statistics/ or /api/translations/{project}/{component}/{language}/statistics/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project slug (the URL name, for example 'hello')."
    },
    "component": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Component slug. A component inside a category is 'category/component'."
    },
    "language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "Language code as Weblate names it (for example 'cs', 'pt_BR', 'zh_Hans')."
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "required": [
    "project"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_list_project_languages(project, page, page_size)

Per-language translation statistics for a whole project (code, total, translated, percentages). GET /api/projects/{project}/languages/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project slug (the URL name, for example 'hello')."
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "required": [
    "project"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_list_languages(page, page_size)

List the languages known to this Weblate instance: code, name, text direction, plural forms. GET /api/languages/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_list_units(project, component, language, q, page, ...)

List or search translation strings (units): source, target, state (0 untranslated, 10 needs editing, 20 translated, 30 approved, 100 read-only), context, location, failing checks. Search with Weblate's query syntax, for example state:<translated or has:suggestion. Give project + component + language to read one translation; without them all visible strings are searched. GET /api/translations/{project}/{component}/{language}/units/ or /api/units/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project slug (the URL name, for example 'hello')."
    },
    "component": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Component slug. A component inside a category is 'category/component'."
    },
    "language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "Language code as Weblate names it (for example 'cs', 'pt_BR', 'zh_Hans')."
    },
    "q": {
      "description": "Weblate search query (https://docs.weblate.org/en/latest/user/search.html), for example 'state:<translated' or 'source:hello'.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_get_unit(unit_id)

One string by id: source and target forms, state, context, location, flags, labels, explanation, suggestions/comments flags, web link. GET /api/units/{id}/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "unit_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Weblate unit id (from weblate_list_units)."
    }
  },
  "required": [
    "unit_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_list_unit_comments(unit_id, page, page_size)

Comments on one string (Weblate 5.15+). GET /api/units/{id}/comments/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "unit_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Weblate unit id (from weblate_list_units)."
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "required": [
    "unit_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_list_suggestions(unit_id, page, page_size)

List suggestions (proposed translations waiting for review), newest first (Weblate 2026.8+). Give a unit id for one string's suggestions. GET /api/suggestions/ or /api/units/{id}/suggestions/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "unit_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Weblate unit id (from weblate_list_units)."
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_list_changes(project, component, language, user, action, ...)

The activity log: who changed or translated what, when, with the action name and the changed text. Scope by project, component or translation (language), or filter by user, action id and time range. GET /api/changes/ or the project/component/translation changes endpoint.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project slug (the URL name, for example 'hello')."
    },
    "component": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Component slug. A component inside a category is 'category/component'."
    },
    "language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "Language code as Weblate names it (for example 'cs', 'pt_BR', 'zh_Hans')."
    },
    "user": {
      "description": "Only changes by this username.",
      "type": "string",
      "minLength": 1,
      "maxLength": 150
    },
    "action": {
      "description": "Only these action ids (see Weblate's change actions).",
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 1000
      }
    },
    "timestamp_after": {
      "description": "Only changes after this ISO 8601 time.",
      "type": "string",
      "maxLength": 64
    },
    "timestamp_before": {
      "description": "Only changes before this ISO 8601 time.",
      "type": "string",
      "maxLength": 64
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_search_memory(source, source_language, target_language, project, page, ...)

Browse the translation memory entries visible to the token, filtered by source text (substring), languages or project. GET /api/memory/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "source": {
      "description": "Case-insensitive substring of the source text.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "source_language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "target_language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project slug (the URL name, for example 'hello')."
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_lookup_memory(strings, source_language, target_language, project, exact)

Find translation memory matches (exact or fuzzy) for up to 20 source strings in one language pair. Read-only: nothing is stored. POST /api/memory/lookup/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "strings": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 5000
      },
      "description": "Source strings to look up."
    },
    "source_language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "Source language code."
    },
    "target_language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "Target language code."
    },
    "project": {
      "description": "Restrict to this project's memory.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "exact": {
      "description": "Return exact matches only, skipping fuzzy matching.",
      "type": "boolean"
    }
  },
  "required": [
    "strings",
    "source_language",
    "target_language"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢weblate_get_repository_status(project, component)

Version-control status: pending changes to commit, upstream changes to merge, changes to push, remote commit, merge failure. For a project (summary of all its repositories) or one component. GET /api/projects/{project}/repository/ or /api/components/{project}/{component}/repository/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project slug (the URL name, for example 'hello')."
    },
    "component": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Component slug. A component inside a category is 'category/component'."
    }
  },
  "required": [
    "project"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴weblate_update_translation(unit_id, target, state)

WRITE: set the translation of one string (replaces the current target). `target` is the list of plural forms. `state` is required (Weblate rejects a partial update without both): 0 untranslated with an empty target, 10 needs editing, 20 translated or 30 approved (approval needs the review workflow and permission). The number of plural forms must match the language. Changes are committed to the repository by Weblate's normal schedule. PATCH /api/units/{id}/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "unit_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Weblate unit id (from weblate_list_units)."
    },
    "target": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 20000
      },
      "description": "The text as a list of plural forms; use a one-element list for a string without plurals."
    },
    "state": {
      "anyOf": [
        {
          "type": "number",
          "const": 0
        },
        {
          "type": "number",
          "const": 10
        },
        {
          "type": "number",
          "const": 20
        },
        {
          "type": "number",
          "const": 30
        }
      ],
      "description": "New state: 0 untranslated (target must be empty), 10 needs editing, 20 translated, 30 approved."
    }
  },
  "required": [
    "unit_id",
    "target",
    "state"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴weblate_add_suggestion(unit_id, target)

WRITE: propose a translation for one string; normally a reviewer accepts it later, but the author's automatic upvote (or an existing identical suggestion) can reach the project's auto-accept threshold and apply it at once. Needs the Add suggestion permission and suggestions enabled (Weblate 2026.8+). POST /api/units/{id}/suggestions/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "unit_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Weblate unit id (from weblate_list_units)."
    },
    "target": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 20000
      },
      "description": "The text as a list of plural forms; use a one-element list for a string without plurals."
    }
  },
  "required": [
    "unit_id",
    "target"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴weblate_accept_suggestion(suggestion_id, approve)

WRITE: apply a suggestion to its string (replaces the current translation). `approve` also marks it approved (review workflow and permission needed). Weblate 2026.8+. POST /api/suggestions/{id}/accept/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "suggestion_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Suggestion id (from weblate_list_suggestions)."
    },
    "approve": {
      "description": "Also mark the translation approved.",
      "type": "boolean"
    }
  },
  "required": [
    "suggestion_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡weblate_add_unit_comment(unit_id, comment, scope)

WRITE: add a comment to one string (Markdown, @username mentions notify users). `scope` is global (all languages), translation (this language) or report (a source-string issue report; needs the review workflow). Weblate 5.12+. POST /api/units/{id}/comments/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "unit_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Weblate unit id (from weblate_list_units)."
    },
    "comment": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "The comment text (max 1000 characters)."
    },
    "scope": {
      "description": "Comment scope (default global).",
      "type": "string",
      "enum": [
        "global",
        "translation",
        "report"
      ]
    }
  },
  "required": [
    "unit_id",
    "comment"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴weblate_repository_operation(project, component, operation)

WRITE: commit (write pending translations into the local repository), pull (merge upstream changes) or push (publish committed changes to the remote repository) for a project or one component. Push changes the remote repository. reset and cleanup are not offered. POST /api/projects/{project}/repository/ or /api/components/{project}/{component}/repository/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project slug (the URL name, for example 'hello')."
    },
    "component": {
      "description": "Omit to run the operation on every component of the project.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "operation": {
      "type": "string",
      "enum": [
        "commit",
        "pull",
        "push"
      ]
    }
  },
  "required": [
    "project",
    "operation"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴weblate_autotranslate(project, component, language, mode, auto_source, ...)

WRITE: fill a translation automatically from other components (auto_source others, default) or from machine translation (mt, needs engines). `mode` suggest only adds suggestions (default), translate writes translations, fuzzy marks them needing edit. `q` limits it to strings matching a search (default state:<translated, the strings that are not translated yet); threshold is the minimum match score (default 80). Use background to schedule a task instead of waiting. POST /api/translations/{project}/{component}/{language}/autotranslate/.

輸入結構描述

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Project slug (the URL name, for example 'hello')."
    },
    "component": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Component slug. A component inside a category is 'category/component'."
    },
    "language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "Language code as Weblate names it (for example 'cs', 'pt_BR', 'zh_Hans')."
    },
    "mode": {
      "description": "suggest (default), translate, fuzzy or approved.",
      "type": "string",
      "enum": [
        "suggest",
        "translate",
        "fuzzy",
        "approved"
      ]
    },
    "auto_source": {
      "description": "others = other components (default), mt = machine translation engines (needs engines).",
      "type": "string",
      "enum": [
        "mt",
        "others"
      ]
    },
    "q": {
      "description": "Only strings matching this search (default 'state:<translated').",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "engines": {
      "description": "Machine translation engine ids; required when auto_source is mt.",
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      }
    },
    "threshold": {
      "description": "Minimum match score, 1-100 (default 80).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "background": {
      "description": "Schedule as a background task and return a task url (Weblate 2026.10+).",
      "type": "boolean"
    }
  },
  "required": [
    "project",
    "component",
    "language"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本23 個工具