UNPKG

lokalise-mcp

Version:

The Lokalise MCP Server brings Lokalise's localization power to Claude and AI assistants—manage projects, keys, and translations by chat.

221 lines (201 loc) • 5.66 kB
import type { BulkResult, CursorPaginatedResult, GlossaryTerm, } from "@lokalise/node-api"; import { z } from "zod"; // Define local types since they're not exported from the SDK export interface CreateTermsParams { terms: Array<{ term: string; description: string; caseSensitive: boolean; translatable: boolean; forbidden: boolean; translations?: Array<{ langId?: number; translation?: string; description?: string; }>; tags?: string[]; }>; } export interface UpdateTermsParams { terms: Array<{ id: number; term?: string; description?: string; caseSensitive?: boolean; translatable?: boolean; forbidden?: boolean; translations?: Array<{ langId?: number; translation?: string; description?: string; }>; tags?: string[]; }>; } export interface TermsDeleted { deleted: { count: number; ids: number[]; }; failed: Array<{ count: number; ids: number[]; message: string; }>; } /** * Glossary domain type definitions and Zod schemas. * Generated on 2025-07-10 for Glossary terms management for consistent translations. */ /** * Zod schema for glossary term translation. */ export const GlossaryTranslationSchema = z.object({ langId: z.number().describe("Language ID for the translation (required)"), translation: z .string() .optional() .describe("The translated term in the specified language"), description: z .string() .optional() .describe("Description or context for the translation"), }); /** * Zod schema for the list glossary terms tool arguments. */ export const ListGlossaryToolArgs = z .object({ projectId: z.string().describe("Project ID to list glossary terms for"), limit: z .number() .int() .min(1) .max(5000) .optional() .describe("Number of glossary terms to return (1-5000, default: 100)"), cursor: z .string() .optional() .describe("Cursor for pagination. Use nextCursor from previous response"), }) .strict(); export type ListGlossaryToolArgsType = z.infer<typeof ListGlossaryToolArgs>; /** * Zod schema for the get glossary term details tool arguments. */ export const GetGlossaryToolArgs = z .object({ projectId: z.string().describe("Project ID containing the glossary term"), termId: z.number().describe("Glossary term ID to get details for"), }) .strict(); export type GetGlossaryToolArgsType = z.infer<typeof GetGlossaryToolArgs>; /** * Zod schema for creating a single glossary term. */ export const CreateGlossaryTermSchema = z.object({ term: z .string() .describe("The glossary term text (e.g., brand name, technical term)"), description: z.string().describe("Description or definition of the term"), caseSensitive: z .boolean() .describe("Whether term matching should be case-sensitive"), translatable: z .boolean() .describe("Whether the term can be translated or should remain unchanged"), forbidden: z .boolean() .describe( "Whether this term should be flagged as forbidden in translations", ), translations: z .array(GlossaryTranslationSchema) .optional() .describe("Translations of the term in different languages"), tags: z .array(z.string()) .optional() .describe( "Tags for categorizing the term (e.g., 'brand', 'technical', 'legal')", ), }); /** * Zod schema for the create glossary terms tool arguments. */ export const CreateGlossaryToolArgs = z .object({ projectId: z.string().describe("Project ID to create glossary terms in"), terms: z .array(CreateGlossaryTermSchema) .min(1) .describe("Array of glossary terms to create (supports bulk creation)"), }) .strict(); export type CreateGlossaryToolArgsType = z.infer<typeof CreateGlossaryToolArgs>; /** * Zod schema for updating a glossary term. */ export const UpdateGlossaryTermSchema = z.object({ id: z.number().describe("The ID of the glossary term to update"), term: z.string().optional().describe("Updated term text"), description: z.string().optional().describe("Updated description"), caseSensitive: z .boolean() .optional() .describe("Updated case sensitivity setting"), translatable: z.boolean().optional().describe("Updated translatable setting"), forbidden: z.boolean().optional().describe("Updated forbidden setting"), translations: z .array(GlossaryTranslationSchema) .optional() .describe("Updated translations"), tags: z.array(z.string()).optional().describe("Updated tags"), }); /** * Zod schema for the update glossary terms tool arguments. */ export const UpdateGlossaryToolArgs = z .object({ projectId: z.string().describe("Project ID containing the glossary terms"), terms: z .array(UpdateGlossaryTermSchema) .min(1) .describe("Array of glossary terms to update (supports bulk updates)"), }) .strict(); export type UpdateGlossaryToolArgsType = z.infer<typeof UpdateGlossaryToolArgs>; /** * Zod schema for the delete glossary terms tool arguments. */ export const DeleteGlossaryToolArgs = z .object({ projectId: z.string().describe("Project ID containing the glossary terms"), termIds: z .array(z.number()) .min(1) .describe( "Array of glossary term IDs to delete (supports bulk deletion)", ), }) .strict(); export type DeleteGlossaryToolArgsType = z.infer<typeof DeleteGlossaryToolArgs>; // Re-export SDK types for convenience export type { GlossaryTerm, BulkResult, CursorPaginatedResult }; /** * Type for glossary term with full details including translations. */ export interface GlossaryTermWithTranslations extends GlossaryTerm { translations: Array<{ langId: number; langName: string; langIso: string; translation: string; description: string; }>; }