# Weblate MCP MCP

> Weblate MCP automates continuous localization workflows by letting your agent manage projects, users, languages, and components directly. You can check project health, track language completion rates, assign group roles, or even pull repository updates without ever logging into the WebLate dashboard. It puts full content governance power right inside your code editor.

## Overview
- **Category:** developer-tools
- **Price:** Free
- **Tags:** translation-management, localization-workflow, i18n, l10n, continuous-localization

## Description

Stop jumping between dashboards to check translation status or user permissions. This MCP lets you manage complex localization projects through natural conversation. You can ask for a list of all active projects, pull detailed statistics on language completion rates, or confirm which group roles need updating—all without leaving your IDE.

Need to onboard a new team member? Your agent handles the whole process: it creates the user, assigns them to groups, and sets their initial permissions. Want to keep your version control clean? The connector lets you pull project repository updates directly from your terminal. Because Vinkius manages every call through a zero-trust proxy, your API keys never sit on disk; they only pass in transit. This makes it safe to build complicated workflows that combine Weblate with other services, letting your agent act as the central localization manager for your entire stack.

## Tools

### add_group_admins
Assigns team administrators to a specific group.

### add_group_roles
Links defined roles to an existing group.

### create_group
Sets up a new user group within Weblate.

### create_language
Defines and registers a brand-new language for the system to track.

### create_project_component
Adds a specific piece of text or component structure to an existing project.

### create_project
Initiates a completely new localization project.

### create_role
Defines a new set of permissions and roles available in the system.

### create_user
Creates a brand-new user account for Weblate.

### delete_user
Deactivates a user account, marking it inactive without deleting data.

### get_group
Retrieves full details about a specific group, including its roles and associated projects.

### get_language
Fetches structural data for a language, like plural formulas or aliases.

### get_project
Gets detailed information about a specific localization project, including its scope.

### get_role
Retrieves detailed information and permission codes for a defined role.

### get_user
Retrieves comprehensive profile details for a specified user.

### list_groups
Retrieves a list of all existing groups in the Weblate instance.

### get_language_statistics
Provides global metrics and progress reports for an entire language across all projects.

### list_languages
Lists every language that has been defined in the system.

### list_user_notifications
Shows which users have subscribed to receive specific notification alerts.

### manage_user_notifications
Allows you to manage and update which notification subscriptions are active for users.

### list_project_components
Shows all individual components (text snippets) within a given project's structure.

### get_project_file_url
Generates a URL that lets you download all translations for a project as a ZIP file.

### list_project_labels
Manages and lists metadata labels applied to specific projects.

### list_project_languages
Presents paginated statistics, showing language coverage for all languages in a project.

### perform_repository_operation
Executes core version control tasks like pushing, pulling, or resetting the project history.

### get_project_repository
Checks the overall version control status of the entire localization project.

### list_projects
Lists every single localization project currently set up in the system.

### list_roles
Retrieves a list of all defined roles associated with user management.

### get_root
Accesses the main entry point of the Weblate API.

### update_user
Changes details for an existing user account, such as their email or name.

### get_user_contributions
Lists all translations that were added or edited by a specific user.

### get_user_statistics
Provides personal translation metrics and usage data for an individual user.

### list_users
Returns a list of all user accounts, requiring management permissions to view everything.

## Prompt Examples

**Prompt:** 
```
List all active localization projects in Weblate.
```

**Response:** 
```
I've retrieved your projects. You have 3 active projects: 'Mobile App' (Slug: mobile-app), 'Web Dashboard' (Slug: web-dash), and 'Documentation' (Slug: docs). Which one would you like to explore?
```

**Prompt:** 
```
Show me the translation statistics for the German language.
```

**Response:** 
```
Fetching statistics for 'de'... The German language currently has 85% completion across all projects, with 1,200 translated strings and 150 strings requiring attention (fuzzy or untranslated).
```

**Prompt:** 
```
Get detailed information for user 'johndoe'.
```

**Response:** 
```
Inspecting user 'johndoe'... Full Name: John Doe, Email: john@example.com. This user is active and belongs to the 'Translators' and 'Reviewers' groups.
```

## Capabilities

### Check project status and language coverage
Fetch detailed stats on languages or projects to see what needs translating and where.

### Manage user roles and permissions
Create, delete, and assign administrative roles for users and groups across the platform.

### Track individual contributions
List specific translations or pull usage statistics tied to a single user account.

### Update project structure
Create new projects, languages, or component sections within existing translation files.

### Keep code in sync
Perform version control operations like pulling updates or pushing translations to the repository.

## Use Cases

### The QA team needs to check if all localized files are ready.
Instead of opening the dashboard and clicking through country-specific reports, you ask your agent to run `list_project_languages` for the 'French' project. The agent returns a clean summary showing which languages have passed 90% completion and which ones are lagging.

### A new team needs full access, but only limited to certain components.
You use your agent to execute the workflow: first run `get_group` to confirm the target group exists. Then, you call `add_group_roles`, followed by `create_user` for the new hire, ensuring they can't access sensitive areas.

### The Dev team needs to merge translated content into the main branch.
You trigger a clean pull of translations using `perform_repository_operation`. The agent confirms the status and then uses `get_project_repository` to verify that all changes have been committed successfully.

### The PM needs to audit who has edited which strings.
You ask your agent to list contributions for 'johndoe' using `get_user_contributions`. It pulls a detailed list, showing every specific component and the exact time of the edit.

## Benefits

- Check language completeness instantly. Instead of manually cross-referencing spreadsheets, you can get current statistics for a language using `get_language_statistics` and know exactly which strings are missing.
- Control user access at scale. You don't need to touch the UI to manage who does what. Use tools like `create_user`, `list_groups`, or `add_group_admins` to provision entire teams with a single prompt.
- Keep your code synced without manual effort. When you know translations are updated, use `perform_repository_operation` to pull the changes directly into your local environment. It's immediate.
- Build complex automations. Combine this MCP with others through Vinkius and chain it up—for example, trigger a message send (messaging MCP) right after you confirm project status using `get_project`. The workflow is seamless.
- Know exactly who did what. When troubleshooting, use `get_user_contributions` or `get_user_statistics` to trace specific changes back to the exact user responsible.
- Maintain clean data structures. Need a new language for an upcoming market? Use `create_language` and then define it as part of a project using `create_project_component`.

## How It Works

The bottom line is, it treats your entire localization backend as just another API endpoint your agent can talk to.

1. Subscribe to this MCP and enter your Weblate Instance URL along with your personal API token.
2. Ask your agent for a specific action, like 'List all projects that need German translation stats.'
3. The agent executes the command, reads the data, and gives you a clear answer without needing to open any external dashboards.

## Frequently Asked Questions

**How do I check language statistics using the get_language_statistics tool?**
You just ask your agent for it. You provide the target language code (like 'de' or 'es'). The MCP runs `get_language_statistics` and returns a progress report, showing completion percentage and how many strings need attention.

**Can I use list_users to see who can access my project?**
No. `list_users` only gives you a roster of accounts. To understand permissions or groups, you need to call `get_group` first, which links users to their specific roles and projects.

**What is the difference between create_user and update_user?**
`create_user` makes an account from scratch for a person. `update_user`, however, modifies details (like changing an email address) on an existing user profile.

**I need to sync my code repository after translations change; which tool do I use?**
You must use `perform_repository_operation`. This executes the necessary version control commands, letting you pull or push changes and keeping your project history accurate.

**How does using get_role help me understand what specific permissions I can assign when running create_role?**
The tool provides a detailed breakdown of all permission codenames and capabilities for any role. Reviewing these details lets you build roles with only the necessary minimum access, which is key to maintaining proper security separation.

**If I need to see every individual text component within a project before translating it, what should I use list_project_components for?**
It lists all the separate components inside your target project. This function is crucial because it allows you to scope exactly which pieces of content require translation effort, preventing missed strings.

**Where do I find the link to download a ZIP archive of all translations for an entire project using get_project_file_url?**
The tool returns the direct URL needed for bulk downloads. You use this link to retrieve every translation across all languages as a single ZIP archive, which is perfect for offline auditing or review.

**I want to assign admin rights to specific team members without giving them full system access; how do I manage that with add_group_admins?**
This function adds administrators directly to a defined group. Since permissions are tied to the group, you limit their elevated rights only to the scope of that group, keeping global platform control restricted.

**Can I check the translation progress for a specific language code?**
Yes! Use the `get_language_statistics` tool with the language code (e.g., 'fr'). The agent will return detailed metrics including translated, fuzzy, and failing strings.

**Is it possible to trigger a Git pull or push from the AI?**
Absolutely. Use the `perform_repository_operation` tool. You can specify the project and component along with the operation (like 'pull' or 'push') to sync with your remote repository.

**Can I manage user access and view their contributions?**
Yes. You can use `list_users` to see accounts, `get_user_contributions` to audit translation activity, and `add_group_roles` to manage permissions programmatically.