@intlayer/mcp
Version:
Intlayer MCP server. Handle MCP to help IDE to use Intlayer. It build, fill, pull, push, dictionaries
1 lines • 14.9 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/tools/cli.ts"],"sourcesContent":["import {\n fill,\n listContentDeclarationRows,\n listMissingTranslations,\n pull,\n push,\n} from '@intlayer/cli';\nimport { Locales } from '@intlayer/config';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport z from 'zod';\n\nexport const loadCLITools = async (server: McpServer) => {\n server.tool(\n 'intlayer-fill',\n 'Fill the dictionaries with missing translations / review translations using Intlayer servers',\n {\n sourceLocale: z.nativeEnum(Locales).optional().describe('Source locale'),\n outputLocales: z\n .union([z.nativeEnum(Locales), z.array(z.nativeEnum(Locales))])\n .optional()\n .describe('Output locales'),\n file: z\n .union([z.string(), z.array(z.string())])\n .optional()\n .describe('File path'),\n mode: z.enum(['complete', 'review']).optional().describe('Fill mode'),\n keys: z\n .union([z.string(), z.array(z.string())])\n .optional()\n .describe('Keys to include'),\n excludedKeys: z\n .union([z.string(), z.array(z.string())])\n .optional()\n .describe('Keys to exclude'),\n pathFilter: z\n .union([z.string(), z.array(z.string())])\n .optional()\n .describe('Path filter'),\n gitOptions: z\n .object({\n gitDiff: z.boolean().optional(),\n gitDiffBase: z.string().optional(),\n gitDiffCurrent: z.string().optional(),\n uncommitted: z.boolean().optional(),\n unpushed: z.boolean().optional(),\n untracked: z.boolean().optional(),\n })\n .optional()\n .describe('Git options'),\n aiOptions: z\n .object({\n provider: z.string().optional(),\n temperature: z.number().optional(),\n model: z.string().optional(),\n apiKey: z.string().optional(),\n customPrompt: z.string().optional(),\n applicationContext: z.string().optional(),\n })\n .optional()\n .describe('AI options'),\n },\n async (props) => {\n try {\n const { gitOptions, ...rest } = props;\n const fillOptions: any = { ...rest, gitOptions: undefined };\n\n if (gitOptions) {\n const { gitDiff, uncommitted, unpushed, untracked, ...restGit } =\n gitOptions;\n const mode = [];\n if (gitDiff) mode.push('gitDiff');\n if (uncommitted) mode.push('uncommitted');\n if (unpushed) mode.push('unpushed');\n if (untracked) mode.push('untracked');\n\n fillOptions.gitOptions = { ...restGit, mode };\n }\n\n await fill(fillOptions);\n\n return {\n content: [\n {\n type: 'text',\n text: 'Fill successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Fill failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.tool(\n 'intlayer-push',\n 'Push local dictionaries to the server',\n {\n deleteLocaleDictionary: z\n .boolean()\n .optional()\n .describe('Delete local dictionary after push'),\n keepLocaleDictionary: z\n .boolean()\n .optional()\n .describe('Keep local dictionary after push'),\n dictionaries: z\n .array(z.string())\n .optional()\n .describe('List of dictionaries to push'),\n gitOptions: z\n .object({\n gitDiff: z.boolean().optional(),\n gitDiffBase: z.string().optional(),\n gitDiffCurrent: z.string().optional(),\n uncommitted: z.boolean().optional(),\n unpushed: z.boolean().optional(),\n untracked: z.boolean().optional(),\n })\n .optional()\n .describe('Git options'),\n },\n async (props) => {\n try {\n const { gitOptions, ...rest } = props;\n const pushOptions: any = { ...rest, gitOptions: undefined };\n\n if (gitOptions) {\n const { gitDiff, uncommitted, unpushed, untracked, ...restGit } =\n gitOptions;\n const mode = [];\n if (gitDiff) mode.push('gitDiff');\n if (uncommitted) mode.push('uncommitted');\n if (unpushed) mode.push('unpushed');\n if (untracked) mode.push('untracked');\n\n pushOptions.gitOptions = { ...restGit, mode };\n }\n\n await push(pushOptions);\n\n return {\n content: [\n {\n type: 'text',\n text: 'Push successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Push failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.tool(\n 'intlayer-pull',\n 'Pull dictionaries from the CMS',\n {\n dictionaries: z\n .array(z.string())\n .optional()\n .describe('List of dictionaries to pull'),\n newDictionariesPath: z\n .string()\n .optional()\n .describe('Path to save new dictionaries'),\n },\n async (props) => {\n try {\n await pull(props);\n\n return {\n content: [\n {\n type: 'text',\n text: 'Pull successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Pull failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.tool(\n 'intlayer-content-list',\n 'List the content declaration (.content.{ts,tsx,js,json,...}) files present in the project. That files contain the multilingual content of the application and are used to build the dictionaries.',\n {\n configOptions: z\n .object({\n baseDir: z.string().optional(),\n env: z.string().optional(),\n envFile: z.string().optional(),\n override: z\n .object({\n log: z\n .object({\n prefix: z.string().optional(),\n verbose: z.boolean().optional(),\n })\n .optional(),\n })\n .optional(),\n })\n .optional()\n .describe('Configuration options'),\n },\n async (props) => {\n try {\n const rows = listContentDeclarationRows(props);\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(rows, null, 2),\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Content list failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.tool(\n 'intlayer-content-test',\n 'Test if there are missing translations in the content declaration files. That files contain the multilingual content of the application and are used to build the dictionaries.',\n {\n configOptions: z\n .object({\n baseDir: z.string().optional(),\n env: z.string().optional(),\n envFile: z.string().optional(),\n override: z\n .object({\n log: z\n .object({\n prefix: z.string().optional(),\n verbose: z.boolean().optional(),\n })\n .optional(),\n })\n .optional(),\n })\n .optional()\n .describe('Configuration options'),\n },\n async (props) => {\n try {\n const missingTranslations = listMissingTranslations(\n undefined,\n props?.configOptions\n );\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(missingTranslations, null, 2),\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Content test failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n};\n"],"mappings":"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","names":["z"]}