Skip to main content
Glama
mmntm

Weblate MCP Server

by mmntm

getChangesByUser

Retrieve recent translation changes made by a specific user in Weblate MCP Server, with options to limit results for focused insights.

Instructions

Get recent changes by a specific user

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of changes to return (default: 20)
userYesUsername to filter by

Implementation Reference

  • The primary handler function for the 'getChangesByUser' tool. It invokes the Weblate API service to retrieve user-specific changes, handles empty results, formats the output using a private helper, and constructs a standardized MCP response with error handling.
    @Tool({ name: 'getChangesByUser', description: 'Get recent changes by a specific user', parameters: z.object({ user: z.string().describe('Username to filter by'), limit: z.number().optional().describe('Number of changes to return (default: 20)').default(20), }), }) async getChangesByUser({ user, limit = 20, }: { user: string; limit?: number; }) { try { const result = await this.weblateApiService.getChangesByUser(user, limit); if (result.results.length === 0) { return { content: [ { type: 'text', text: `No changes found for user "${user}".`, }, ], }; } const changesList = result.results .slice(0, limit) .map(change => this.formatChangeResult(change)) .join('\n\n---\n\n'); return { content: [ { type: 'text', text: `Recent changes by user "${user}" (${result.count} total):\n\n${changesList}`, }, ], }; } catch (error) { this.logger.error(`Failed to get changes by user ${user}`, error); return { content: [ { type: 'text', text: `Error getting changes by user "${user}": ${error.message}`, }, ], isError: true, }; } }
  • Zod schema defining the input parameters for the getChangesByUser tool: required 'user' string and optional 'limit' number (default 20).
    parameters: z.object({ user: z.string().describe('Username to filter by'), limit: z.number().optional().describe('Number of changes to return (default: 20)').default(20), }),
  • The providers array in AppModule registers the WeblateChangesTool class, which automatically registers all @Tool-decorated methods including getChangesByUser via MCP-Nest framework.
    WeblateProjectsTool, WeblateComponentsTool, WeblateLanguagesTool, WeblateTranslationsTool, WeblateChangesTool, WeblateStatisticsTool, ],
  • Private helper method used by the handler to format individual change objects into a readable markdown string.
    private formatChangeResult(change: Change): string { const timestamp = change.timestamp ? new Date(change.timestamp).toLocaleString() : 'Unknown'; const actionDescription = this.getActionDescription(change.action || 0); const user = change.user || 'Unknown user'; const target = change.target || 'N/A'; return `**${actionDescription}**\n**User:** ${user}\n**Time:** ${timestamp}\n**Target:** ${target}`; }
  • Service method delegated by the API service, which filters recent changes by user via the Weblate API client.
    async getChangesByUser( user: string, limit: number = 50 ): Promise<{ results: Change[]; count: number; next?: string; previous?: string }> { try { return this.listRecentChanges(limit, user); } catch (error) { this.logger.error(`Failed to get changes by user ${user}`, error); throw new Error(`Failed to get changes by user: ${error.message}`); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mmntm/weblate-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server