A Model Context Protocol (MCP) server that provides seamless integration with Weblate translation management platform. This server enables AI assistants to interact directly with your Weblate instance for comprehensive translation management. - 🔧 Complete Weblate API Access: Full integration with Weblate's REST API - 🤖 AI-Powered Workflow: Natural language interaction with your translation proje
Add this skill
npx mdskills install mmntm/weblate-mcpComprehensive MCP server for Weblate translation management with excellent documentation and robust toolset
A Model Context Protocol (MCP) server that provides seamless integration with Weblate translation management platform. This server enables AI assistants to interact directly with your Weblate instance for comprehensive translation management.
This MCP server acts as a bridge between AI assistants (like Claude Desktop) and your Weblate translation management platform. Instead of manually navigating the Weblate web interface, you can use natural language to:
The easiest way to use this MCP server is with npx - no installation required!
For Claude Desktop or other MCP clients:
{
"mcpServers": {
"weblate": {
"command": "npx",
"args": ["-y", "@mmntm/weblate-mcp"],
"env": {
"WEBLATE_API_URL": "https://your-weblate-instance.com/api",
"WEBLATE_API_TOKEN": "your-weblate-api-token"
}
}
}
}
Manual testing:
# Test the server directly
npx @mmntm/weblate-mcp
# Clone and install
git clone
cd weblate-mcp
pnpm install
# Configure environment
cp .env.example .env
# Edit .env with your Weblate API URL and token
# Build and start
pnpm build
pnpm start
Server runs on http://localhost:3001 by default.
WEBLATE_API_URL=https://your-weblate-instance.com
WEBLATE_API_TOKEN=your-api-token-here
PORT=3001
NODE_ENV=production
LOG_LEVEL=info
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"weblate": {
"command": "npx",
"args": ["-y", "@mmntm/weblate-mcp"],
"env": {
"WEBLATE_API_URL": "https://your-weblate-instance.com/api",
"WEBLATE_API_TOKEN": "your-weblate-api-token"
}
}
}
}
For development or local builds:
{
"mcpServers": {
"weblate": {
"command": "node",
"args": ["/path/to/weblate-mcp/dist/main.js"],
"env": {
"WEBLATE_API_URL": "https://your-weblate-instance.com/api",
"WEBLATE_API_TOKEN": "your-api-token"
}
}
}
}
{
"transport": "http",
"url": "http://localhost:3001/mcp"
}
| Tool | Description |
|---|---|
listProjects | List all available Weblate projects with URLs and metadata |
| Tool | Description |
|---|---|
listComponents | List components in a specific project with source language details |
| Tool | Description |
|---|---|
searchUnitsWithFilters ⭐ | Efficient search using Weblate's native filtering syntax |
searchStringInProject | Search for translations containing specific text in a project |
getTranslationForKey | Get translation value for a specific key |
writeTranslation | Update or write translation values with approval support |
bulkWriteTranslations ⚡ | Batch update multiple translations efficiently with error handling |
findTranslationsForKey | Find all translations for a specific key across languages |
The searchUnitsWithFilters tool uses Weblate's native filtering syntax, making it the most efficient way to find translations:
Example efficient queries:
state:=0 - Find untranslated stringsstate:=10 - Find strings that need editingsource:"login" - Find strings containing "login"component:common AND state:=0 - Complex filters| Tool | Description |
|---|---|
listLanguages | List languages available in a specific project |
| Tool | Description |
|---|---|
getProjectStatistics | Comprehensive project statistics with completion rates and string counts |
getComponentStatistics | Detailed statistics for a specific component |
getProjectDashboard | Complete dashboard overview with all component statistics |
getTranslationStatistics | Statistics for specific translation (project/component/language) |
getComponentLanguageProgress | Translation progress for all languages in a component with progress bars |
getLanguageStatistics | Statistics for a language across all projects |
getUserStatistics | User contribution statistics and activity metrics |
| Tool | Description |
|---|---|
listRecentChanges | Recent changes across all projects with user and timestamp filtering |
getProjectChanges | Recent changes for a specific project |
getComponentChanges | Recent changes for a specific component |
getChangesByUser | Recent changes by a specific user |
// List all projects
await list_projects();
// Get specific project details
await get_project({ slug: "my-project" });
// Create a new project
await create_project({
name: "New Project",
slug: "new-project",
web: "https://example.com"
});
// List translations for a component
await list_translations({
project_slug: "my-project",
component_slug: "frontend"
});
// Get specific translation
await get_translation({
project_slug: "my-project",
component_slug: "frontend",
language_code: "fr"
});
// Update translations
await update_translation({
project_slug: "my-project",
component_slug: "frontend",
language_code: "fr",
translations: {
"welcome": "Bienvenue",
"goodbye": "Au revoir"
}
});
| Document | Description |
|---|---|
| 📖 Documentation Hub | Complete documentation overview and quick start |
| 🚀 Installation & Setup | Installation, configuration, and Claude Desktop setup |
| 📋 API Reference | Complete API documentation with examples |
| 🛠️ Development Guide | Contributing, development setup, and testing |
| 🏗️ Architecture | Codebase structure, patterns, and design decisions |
| 📦 Release Process | Release management and publishing workflow |
| 🔄 Changesets Guide | Version management with changesets |
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ MCP Client │───▶│ Weblate MCP │───▶│ Weblate API │
│ (IDE/Editor) │ │ Server │ │ (REST API) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌──────────────────┐
│ MCP Tools │
│ • Projects │
│ • Components │
│ • Translations │
│ • Languages │
└──────────────────┘
Technology Stack:
# Start development server with hot reload
pnpm run dev
# Run tests
pnpm test
# Run end-to-end tests
pnpm run test:e2e
# Generate test coverage
pnpm run test:cov
# Build for production
pnpm build
src/tools/See Development Guide for detailed instructions.
We welcome contributions! Please see our Contributing Guidelines:
MIT License - see LICENSE file for details.
Built with ❤️ for the translation community
Need help? Check our documentation or create an issue!
Install via CLI
npx mdskills install mmntm/weblate-mcpWeblate MCP Server is a free, open-source AI agent skill. A Model Context Protocol (MCP) server that provides seamless integration with Weblate translation management platform. This server enables AI assistants to interact directly with your Weblate instance for comprehensive translation management. - 🔧 Complete Weblate API Access: Full integration with Weblate's REST API - 🤖 AI-Powered Workflow: Natural language interaction with your translation proje
Install Weblate MCP Server with a single command:
npx mdskills install mmntm/weblate-mcpThis downloads the skill files into your project and your AI agent picks them up automatically.
Weblate MCP Server works with Claude Code, Claude Desktop, Cursor, Vscode Copilot, Windsurf, Continue Dev, Gemini Cli, Amp, Roo Code, Goose. Skills use the open SKILL.md format which is compatible with any AI coding agent that reads markdown instructions.