@intlayer/mcp 5.5.10 → 5.5.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,15 +5,48 @@
5
5
  </div>
6
6
 
7
7
  <div align="center">
8
- <a href="https://www.npmjs.com/package/intlayer">
9
- <img alt="npm" src="https://img.shields.io/npm/v/intlayer.svg?labelColor=49516F&color=8994BC" />
10
- </a>
11
- <a href="https://npmjs.org/package/intlayer">
12
- <img alt="downloads" src="https://badgen.net/npm/dm/intlayer?labelColor=49516F&color=8994BC" />
13
- </a>
14
- <a href="https://npmjs.org/package/intlayer">
15
- <img alt="types included" src="https://badgen.net/npm/types/intlayer?labelColor=49516F&color=8994BC"
16
- />
8
+ <a href="https://www.npmjs.com/package/intlayer" target="blank"><img
9
+ align="center"
10
+ alt="npm"
11
+ src="https://img.shields.io/npm/v/intlayer.svg?labelColor=49516F&color=8994BC&style=for-the-badge"
12
+ height="30" /></a>
13
+ <a href="https://npmjs.org/package/intlayer" target="blank"><img
14
+ align="center"
15
+ src="https://img.shields.io/npm/dm/intlayer?labelColor=49516F&color=8994BC&style=for-the-badge"
16
+ alt="monthly downloads"
17
+ height="30"
18
+ /></a>
19
+ <a href="https://npmjs.org/package/intlayer" target="blank"><img
20
+ align="center"
21
+ src="https://img.shields.io/npm/types/intlayer?label=types%20included&labelColor=49516F&color=8994BC&style=for-the-badge"
22
+ alt="types included"
23
+ height="30"
24
+ /></a>
25
+ </div>
26
+
27
+ <div>
28
+ <br/>
29
+ <p align="center">
30
+ <a href="https://www.linkedin.com/company/intlayerorg" target="blank"><img align="center"
31
+ src="https://img.shields.io/badge/linkedin-%231DA1F2.svg?style=for-the-badge&logo=linkedin&logoColor=white"
32
+ alt="Intlayer LinkedIn" height="30"/></a>
33
+ <a href="https://www.facebook.com/intlayer" target="blank"><img align="center"
34
+ src="https://img.shields.io/badge/facebook-4267B2.svg?style=for-the-badge&logo=facebook&logoColor=white"
35
+ alt="Intlayer Facebook" height="30"/></a>
36
+ <a href="https://www.instagram.com/intlayer_org/" target="blank"><img align="center"
37
+ src="https://img.shields.io/badge/instagram-%23E4405F.svg?style=for-the-badge&logo=Instagram&logoColor=white"
38
+ alt="Intlayer Instagram" height="30"/></a>
39
+ <a href="https://x.com/Intlayer183096" target="blank"><img align="center"
40
+ src="https://img.shields.io/badge/x-1DA1F2.svg?style=for-the-badge&logo=x&logoColor=white"
41
+ alt="Intlayer X" height="30"/></a>
42
+ <a href="https://www.youtube.com/@intlayer" target="blank"><img align="center"
43
+ src="https://img.shields.io/badge/youtube-FF0000.svg?style=for-the-badge&logo=youtube&logoColor=white"
44
+ alt="Intlayer YouTube" height="30"/></a>
45
+ <a href="https://www.tiktok.com/@intlayer" target="blank"><img align="center"
46
+ src="https://img.shields.io/badge/tiktok-000000.svg?style=for-the-badge&logo=tiktok&logoColor=white"
47
+ alt="Intlayer TikTok" height="30"/></a>
48
+ <br>
49
+ </p>
17
50
  </div>
18
51
 
19
52
  # @intlayer/dictionary-entry: Retrieve Intlayer dictionaries
@@ -252,22 +252,52 @@ server.tool(
252
252
  }
253
253
  }
254
254
  );
255
- server.tool("get-doc-list", {}, async ({}) => {
256
- const docList = Object.keys((0, import_docs.getDocs)());
257
- return {
258
- content: docList.map((doc) => ({ type: "text", text: doc }))
259
- };
260
- });
255
+ server.tool(
256
+ "get-doc-list",
257
+ {
258
+ lang: import_zod.z.nativeEnum(import_config.Locales),
259
+ description: "Get the list of docs and their metadata to get more details about what doc to"
260
+ },
261
+ async ({}) => {
262
+ const docsMetadataRecord = await (0, import_docs.getDocMetadataRecord)();
263
+ return {
264
+ content: [
265
+ {
266
+ type: "text",
267
+ text: JSON.stringify(docsMetadataRecord, null, 2)
268
+ }
269
+ ]
270
+ };
271
+ }
272
+ );
261
273
  server.tool(
262
274
  "get-doc",
263
- { docName: import_zod.z.string(), lang: import_zod.z.nativeEnum(import_config.Locales) },
264
- async ({ docName, lang }) => {
265
- const doc = (0, import_docs.getDoc)(docName, "en");
275
+ {
276
+ docKey: import_zod.z.string(),
277
+ lang: import_zod.z.nativeEnum(import_config.Locales),
278
+ description: "Get a doc by his key"
279
+ },
280
+ async ({ docKey, lang }) => {
281
+ const doc = await (0, import_docs.getDoc)(docKey, lang);
266
282
  return {
267
283
  content: [{ type: "text", text: doc }]
268
284
  };
269
285
  }
270
286
  );
287
+ server.tool(
288
+ "get-doc-by-slug",
289
+ {
290
+ slug: import_zod.z.union([import_zod.z.string(), import_zod.z.array(import_zod.z.string())]),
291
+ lang: import_zod.z.nativeEnum(import_config.Locales),
292
+ description: "Get an array of docs by their slugs"
293
+ },
294
+ async ({ slug, lang }) => {
295
+ const doc = await (0, import_docs.getDocBySlug)(slug, lang);
296
+ return {
297
+ content: doc.map((d) => ({ type: "text", text: d }))
298
+ };
299
+ }
300
+ );
271
301
  const main = async () => {
272
302
  const transport = new import_stdio.StdioServerTransport();
273
303
  await server.connect(transport);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { build, fill, pull, push } from '@intlayer/cli';\nimport { isESModule, Locales, type LogConfig } from '@intlayer/config';\nimport { getDoc, getDocs } from '@intlayer/docs';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { readFileSync } from 'fs';\nimport { dirname as pathDirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\nimport { z } from 'zod';\n\nexport const dirname = isESModule\n ? pathDirname(fileURLToPath(import.meta.url))\n : __dirname;\n\nconst packageJson = JSON.parse(\n readFileSync(resolve(dirname, '../../package.json'), 'utf8')\n);\n\nconst buildToolSchema = {\n watch: z.boolean().optional().describe('Watch for changes'),\n baseDir: z.string().optional().describe('Base directory'),\n env: z.string().optional().describe('Environment'),\n envFile: z.string().optional().describe('Environment file'),\n verbose: z.boolean().optional().describe('Verbose output'),\n prefix: z.string().optional().describe('Log prefix'),\n};\n\ntype BuildToolProps = z.infer<z.ZodObject<typeof buildToolSchema>>;\n\nconst fillToolSchema = {\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\ntype FillToolProps = z.infer<z.ZodObject<typeof fillToolSchema>>;\n\nconst pushToolSchema = {\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\ntype PushToolProps = z.infer<z.ZodObject<typeof pushToolSchema>>;\n\nconst pullToolSchema = {\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\ntype PullToolProps = z.infer<z.ZodObject<typeof pullToolSchema>>;\n\nconst server = new McpServer({\n name: 'intlayer',\n version: packageJson.version,\n capabilities: {\n resources: {},\n },\n});\n\nserver.tool(\n 'intlayer-build',\n {\n description: 'Build the dictionaries',\n ...buildToolSchema,\n },\n async ({ watch, baseDir, env, envFile, verbose, prefix }: BuildToolProps) => {\n try {\n const log: Partial<LogConfig> = {};\n if (verbose) {\n log.mode = 'verbose';\n }\n if (prefix) {\n log.prefix = prefix;\n }\n\n await build({\n watch,\n configOptions: {\n baseDir,\n env,\n envFile,\n override: {\n log,\n },\n },\n });\n\n return {\n content: [\n {\n type: 'text',\n text: 'Build 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: `Build failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n);\n\nserver.tool(\n 'intlayer-fill',\n {\n description: 'Fill the dictionaries with missing translations',\n ...fillToolSchema,\n },\n async (props: FillToolProps) => {\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\nserver.tool(\n 'intlayer-push',\n {\n description: 'Push dictionaries to the server',\n ...pushToolSchema,\n },\n async (props: PushToolProps) => {\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\nserver.tool(\n 'intlayer-pull',\n {\n description: 'Pull dictionaries from the server',\n ...pullToolSchema,\n },\n async (props: PullToolProps) => {\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\nserver.tool('get-doc-list', {}, async ({}) => {\n const docList = Object.keys(getDocs());\n return {\n content: docList.map((doc) => ({ type: 'text', text: doc })),\n };\n});\n\nserver.tool(\n 'get-doc',\n { docName: z.string(), lang: z.nativeEnum(Locales) },\n async ({ docName, lang }) => {\n const doc = getDoc(docName as any, 'en');\n return {\n content: [{ type: 'text', text: doc }],\n };\n }\n);\n\nconst main = async () => {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error('Intlayer MCP Server running on stdio');\n};\n\nmain().catch((error) => {\n console.error('Fatal error in main():', error);\n process.exit(1);\n});\n"],"mappings":"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","names":["pathDirname"]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { build, fill, pull, push } from '@intlayer/cli';\nimport { isESModule, Locales, type LogConfig } from '@intlayer/config';\nimport { getDoc, getDocBySlug, getDocMetadataRecord } from '@intlayer/docs';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { readFileSync } from 'fs';\nimport { dirname as pathDirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\nimport { z } from 'zod';\n\nexport const dirname = isESModule\n ? pathDirname(fileURLToPath(import.meta.url))\n : __dirname;\n\nconst packageJson = JSON.parse(\n readFileSync(resolve(dirname, '../../package.json'), 'utf8')\n);\n\nconst buildToolSchema = {\n watch: z.boolean().optional().describe('Watch for changes'),\n baseDir: z.string().optional().describe('Base directory'),\n env: z.string().optional().describe('Environment'),\n envFile: z.string().optional().describe('Environment file'),\n verbose: z.boolean().optional().describe('Verbose output'),\n prefix: z.string().optional().describe('Log prefix'),\n};\n\ntype BuildToolProps = z.infer<z.ZodObject<typeof buildToolSchema>>;\n\nconst fillToolSchema = {\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\ntype FillToolProps = z.infer<z.ZodObject<typeof fillToolSchema>>;\n\nconst pushToolSchema = {\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\ntype PushToolProps = z.infer<z.ZodObject<typeof pushToolSchema>>;\n\nconst pullToolSchema = {\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\ntype PullToolProps = z.infer<z.ZodObject<typeof pullToolSchema>>;\n\nconst server = new McpServer({\n name: 'intlayer',\n version: packageJson.version,\n capabilities: {\n resources: {},\n },\n});\n\nserver.tool(\n 'intlayer-build',\n {\n description: 'Build the dictionaries',\n ...buildToolSchema,\n },\n async ({ watch, baseDir, env, envFile, verbose, prefix }: BuildToolProps) => {\n try {\n const log: Partial<LogConfig> = {};\n if (verbose) {\n log.mode = 'verbose';\n }\n if (prefix) {\n log.prefix = prefix;\n }\n\n await build({\n watch,\n configOptions: {\n baseDir,\n env,\n envFile,\n override: {\n log,\n },\n },\n });\n\n return {\n content: [\n {\n type: 'text',\n text: 'Build 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: `Build failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n);\n\nserver.tool(\n 'intlayer-fill',\n {\n description: 'Fill the dictionaries with missing translations',\n ...fillToolSchema,\n },\n async (props: FillToolProps) => {\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\nserver.tool(\n 'intlayer-push',\n {\n description: 'Push dictionaries to the server',\n ...pushToolSchema,\n },\n async (props: PushToolProps) => {\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\nserver.tool(\n 'intlayer-pull',\n {\n description: 'Pull dictionaries from the server',\n ...pullToolSchema,\n },\n async (props: PullToolProps) => {\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\nserver.tool(\n 'get-doc-list',\n {\n lang: z.nativeEnum(Locales),\n description:\n 'Get the list of docs and their metadata to get more details about what doc to',\n },\n async ({}) => {\n const docsMetadataRecord = await getDocMetadataRecord();\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(docsMetadataRecord, null, 2),\n },\n ],\n };\n }\n);\n\nserver.tool(\n 'get-doc',\n {\n docKey: z.string(),\n lang: z.nativeEnum(Locales),\n description: 'Get a doc by his key',\n },\n async ({ docKey, lang }) => {\n const doc = await getDoc(docKey as any, lang);\n return {\n content: [{ type: 'text', text: doc }],\n };\n }\n);\n\nserver.tool(\n 'get-doc-by-slug',\n {\n slug: z.union([z.string(), z.array(z.string())]),\n lang: z.nativeEnum(Locales),\n description: 'Get an array of docs by their slugs',\n },\n async ({ slug, lang }) => {\n const doc = await getDocBySlug(slug, lang);\n return {\n content: doc.map((d) => ({ type: 'text', text: d })),\n };\n }\n);\n\nconst main = async () => {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error('Intlayer MCP Server running on stdio');\n};\n\nmain().catch((error) => {\n console.error('Fatal error in main():', error);\n process.exit(1);\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,iBAAwC;AACxC,oBAAoD;AACpD,kBAA2D;AAC3D,iBAA0B;AAC1B,mBAAqC;AACrC,gBAA6B;AAC7B,kBAAgD;AAChD,iBAA8B;AAC9B,iBAAkB;AAVlB;AAYO,MAAM,UAAU,+BACnB,YAAAA,aAAY,0BAAc,YAAY,GAAG,CAAC,IAC1C;AAEJ,MAAM,cAAc,KAAK;AAAA,MACvB,4BAAa,qBAAQ,SAAS,oBAAoB,GAAG,MAAM;AAC7D;AAEA,MAAM,kBAAkB;AAAA,EACtB,OAAO,aAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,mBAAmB;AAAA,EAC1D,SAAS,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS,gBAAgB;AAAA,EACxD,KAAK,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS,aAAa;AAAA,EACjD,SAAS,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS,kBAAkB;AAAA,EAC1D,SAAS,aAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,gBAAgB;AAAA,EACzD,QAAQ,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS,YAAY;AACrD;AAIA,MAAM,iBAAiB;AAAA,EACrB,cAAc,aAAE,WAAW,qBAAO,EAAE,SAAS,EAAE,SAAS,eAAe;AAAA,EACvE,eAAe,aACZ,MAAM,CAAC,aAAE,WAAW,qBAAO,GAAG,aAAE,MAAM,aAAE,WAAW,qBAAO,CAAC,CAAC,CAAC,EAC7D,SAAS,EACT,SAAS,gBAAgB;AAAA,EAC5B,MAAM,aACH,MAAM,CAAC,aAAE,OAAO,GAAG,aAAE,MAAM,aAAE,OAAO,CAAC,CAAC,CAAC,EACvC,SAAS,EACT,SAAS,WAAW;AAAA,EACvB,MAAM,aAAE,KAAK,CAAC,YAAY,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,WAAW;AAAA,EACpE,MAAM,aACH,MAAM,CAAC,aAAE,OAAO,GAAG,aAAE,MAAM,aAAE,OAAO,CAAC,CAAC,CAAC,EACvC,SAAS,EACT,SAAS,iBAAiB;AAAA,EAC7B,cAAc,aACX,MAAM,CAAC,aAAE,OAAO,GAAG,aAAE,MAAM,aAAE,OAAO,CAAC,CAAC,CAAC,EACvC,SAAS,EACT,SAAS,iBAAiB;AAAA,EAC7B,YAAY,aACT,MAAM,CAAC,aAAE,OAAO,GAAG,aAAE,MAAM,aAAE,OAAO,CAAC,CAAC,CAAC,EACvC,SAAS,EACT,SAAS,aAAa;AAAA,EACzB,YAAY,aACT,OAAO;AAAA,IACN,SAAS,aAAE,QAAQ,EAAE,SAAS;AAAA,IAC9B,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,IACjC,gBAAgB,aAAE,OAAO,EAAE,SAAS;AAAA,IACpC,aAAa,aAAE,QAAQ,EAAE,SAAS;AAAA,IAClC,UAAU,aAAE,QAAQ,EAAE,SAAS;AAAA,IAC/B,WAAW,aAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,CAAC,EACA,SAAS,EACT,SAAS,aAAa;AAAA,EACzB,WAAW,aACR,OAAO;AAAA,IACN,UAAU,aAAE,OAAO,EAAE,SAAS;AAAA,IAC9B,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,IACjC,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,IAC3B,QAAQ,aAAE,OAAO,EAAE,SAAS;AAAA,IAC5B,cAAc,aAAE,OAAO,EAAE,SAAS;AAAA,IAClC,oBAAoB,aAAE,OAAO,EAAE,SAAS;AAAA,EAC1C,CAAC,EACA,SAAS,EACT,SAAS,YAAY;AAC1B;AAIA,MAAM,iBAAiB;AAAA,EACrB,wBAAwB,aACrB,QAAQ,EACR,SAAS,EACT,SAAS,oCAAoC;AAAA,EAChD,sBAAsB,aACnB,QAAQ,EACR,SAAS,EACT,SAAS,kCAAkC;AAAA,EAC9C,cAAc,aACX,MAAM,aAAE,OAAO,CAAC,EAChB,SAAS,EACT,SAAS,8BAA8B;AAAA,EAC1C,YAAY,aACT,OAAO;AAAA,IACN,SAAS,aAAE,QAAQ,EAAE,SAAS;AAAA,IAC9B,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,IACjC,gBAAgB,aAAE,OAAO,EAAE,SAAS;AAAA,IACpC,aAAa,aAAE,QAAQ,EAAE,SAAS;AAAA,IAClC,UAAU,aAAE,QAAQ,EAAE,SAAS;AAAA,IAC/B,WAAW,aAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,CAAC,EACA,SAAS,EACT,SAAS,aAAa;AAC3B;AAIA,MAAM,iBAAiB;AAAA,EACrB,cAAc,aACX,MAAM,aAAE,OAAO,CAAC,EAChB,SAAS,EACT,SAAS,8BAA8B;AAAA,EAC1C,qBAAqB,aAClB,OAAO,EACP,SAAS,EACT,SAAS,+BAA+B;AAC7C;AAIA,MAAM,SAAS,IAAI,qBAAU;AAAA,EAC3B,MAAM;AAAA,EACN,SAAS,YAAY;AAAA,EACrB,cAAc;AAAA,IACZ,WAAW,CAAC;AAAA,EACd;AACF,CAAC;AAED,OAAO;AAAA,EACL;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,GAAG;AAAA,EACL;AAAA,EACA,OAAO,EAAE,OAAO,SAAS,KAAK,SAAS,SAAS,OAAO,MAAsB;AAC3E,QAAI;AACF,YAAM,MAA0B,CAAC;AACjC,UAAI,SAAS;AACX,YAAI,OAAO;AAAA,MACb;AACA,UAAI,QAAQ;AACV,YAAI,SAAS;AAAA,MACf;AAEA,gBAAM,kBAAM;AAAA,QACV;AAAA,QACA,eAAe;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAED,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,YAAM,eACJ,iBAAiB,QAAQ,MAAM,UAAU;AAC3C,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM,iBAAiB,YAAY;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,OAAO;AAAA,EACL;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,GAAG;AAAA,EACL;AAAA,EACA,OAAO,UAAyB;AAC9B,QAAI;AACF,YAAM,EAAE,YAAY,GAAG,KAAK,IAAI;AAChC,YAAM,cAAmB,EAAE,GAAG,MAAM,YAAY,OAAU;AAE1D,UAAI,YAAY;AACd,cAAM,EAAE,SAAS,aAAa,UAAU,WAAW,GAAG,QAAQ,IAC5D;AACF,cAAM,OAAO,CAAC;AACd,YAAI,QAAS,MAAK,KAAK,SAAS;AAChC,YAAI,YAAa,MAAK,KAAK,aAAa;AACxC,YAAI,SAAU,MAAK,KAAK,UAAU;AAClC,YAAI,UAAW,MAAK,KAAK,WAAW;AAEpC,oBAAY,aAAa,EAAE,GAAG,SAAS,KAAK;AAAA,MAC9C;AAEA,gBAAM,iBAAK,WAAW;AAEtB,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,YAAM,eACJ,iBAAiB,QAAQ,MAAM,UAAU;AAC3C,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM,gBAAgB,YAAY;AAAA,UACpC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,OAAO;AAAA,EACL;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,GAAG;AAAA,EACL;AAAA,EACA,OAAO,UAAyB;AAC9B,QAAI;AACF,YAAM,EAAE,YAAY,GAAG,KAAK,IAAI;AAChC,YAAM,cAAmB,EAAE,GAAG,MAAM,YAAY,OAAU;AAE1D,UAAI,YAAY;AACd,cAAM,EAAE,SAAS,aAAa,UAAU,WAAW,GAAG,QAAQ,IAC5D;AACF,cAAM,OAAO,CAAC;AACd,YAAI,QAAS,MAAK,KAAK,SAAS;AAChC,YAAI,YAAa,MAAK,KAAK,aAAa;AACxC,YAAI,SAAU,MAAK,KAAK,UAAU;AAClC,YAAI,UAAW,MAAK,KAAK,WAAW;AAEpC,oBAAY,aAAa,EAAE,GAAG,SAAS,KAAK;AAAA,MAC9C;AAEA,gBAAM,iBAAK,WAAW;AAEtB,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,YAAM,eACJ,iBAAiB,QAAQ,MAAM,UAAU;AAC3C,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM,gBAAgB,YAAY;AAAA,UACpC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,OAAO;AAAA,EACL;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,GAAG;AAAA,EACL;AAAA,EACA,OAAO,UAAyB;AAC9B,QAAI;AACF,gBAAM,iBAAK,KAAK;AAEhB,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,YAAM,eACJ,iBAAiB,QAAQ,MAAM,UAAU;AAC3C,aAAO;AAAA,QACL,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,MAAM,gBAAgB,YAAY;AAAA,UACpC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,OAAO;AAAA,EACL;AAAA,EACA;AAAA,IACE,MAAM,aAAE,WAAW,qBAAO;AAAA,IAC1B,aACE;AAAA,EACJ;AAAA,EACA,OAAO,CAAC,MAAM;AACZ,UAAM,qBAAqB,UAAM,kCAAqB;AAEtD,WAAO;AAAA,MACL,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,MAAM,KAAK,UAAU,oBAAoB,MAAM,CAAC;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,OAAO;AAAA,EACL;AAAA,EACA;AAAA,IACE,QAAQ,aAAE,OAAO;AAAA,IACjB,MAAM,aAAE,WAAW,qBAAO;AAAA,IAC1B,aAAa;AAAA,EACf;AAAA,EACA,OAAO,EAAE,QAAQ,KAAK,MAAM;AAC1B,UAAM,MAAM,UAAM,oBAAO,QAAe,IAAI;AAC5C,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,IAAI,CAAC;AAAA,IACvC;AAAA,EACF;AACF;AAEA,OAAO;AAAA,EACL;AAAA,EACA;AAAA,IACE,MAAM,aAAE,MAAM,CAAC,aAAE,OAAO,GAAG,aAAE,MAAM,aAAE,OAAO,CAAC,CAAC,CAAC;AAAA,IAC/C,MAAM,aAAE,WAAW,qBAAO;AAAA,IAC1B,aAAa;AAAA,EACf;AAAA,EACA,OAAO,EAAE,MAAM,KAAK,MAAM;AACxB,UAAM,MAAM,UAAM,0BAAa,MAAM,IAAI;AACzC,WAAO;AAAA,MACL,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,QAAQ,MAAM,EAAE,EAAE;AAAA,IACrD;AAAA,EACF;AACF;AAEA,MAAM,OAAO,YAAY;AACvB,QAAM,YAAY,IAAI,kCAAqB;AAC3C,QAAM,OAAO,QAAQ,SAAS;AAC9B,UAAQ,MAAM,sCAAsC;AACtD;AAEA,KAAK,EAAE,MAAM,CAAC,UAAU;AACtB,UAAQ,MAAM,0BAA0B,KAAK;AAC7C,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":["pathDirname"]}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { build, fill, pull, push } from "@intlayer/cli";
3
3
  import { isESModule, Locales } from "@intlayer/config";
4
- import { getDoc, getDocs } from "@intlayer/docs";
4
+ import { getDoc, getDocBySlug, getDocMetadataRecord } from "@intlayer/docs";
5
5
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
6
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
7
7
  import { readFileSync } from "fs";
@@ -228,22 +228,52 @@ server.tool(
228
228
  }
229
229
  }
230
230
  );
231
- server.tool("get-doc-list", {}, async ({}) => {
232
- const docList = Object.keys(getDocs());
233
- return {
234
- content: docList.map((doc) => ({ type: "text", text: doc }))
235
- };
236
- });
231
+ server.tool(
232
+ "get-doc-list",
233
+ {
234
+ lang: z.nativeEnum(Locales),
235
+ description: "Get the list of docs and their metadata to get more details about what doc to"
236
+ },
237
+ async ({}) => {
238
+ const docsMetadataRecord = await getDocMetadataRecord();
239
+ return {
240
+ content: [
241
+ {
242
+ type: "text",
243
+ text: JSON.stringify(docsMetadataRecord, null, 2)
244
+ }
245
+ ]
246
+ };
247
+ }
248
+ );
237
249
  server.tool(
238
250
  "get-doc",
239
- { docName: z.string(), lang: z.nativeEnum(Locales) },
240
- async ({ docName, lang }) => {
241
- const doc = getDoc(docName, "en");
251
+ {
252
+ docKey: z.string(),
253
+ lang: z.nativeEnum(Locales),
254
+ description: "Get a doc by his key"
255
+ },
256
+ async ({ docKey, lang }) => {
257
+ const doc = await getDoc(docKey, lang);
242
258
  return {
243
259
  content: [{ type: "text", text: doc }]
244
260
  };
245
261
  }
246
262
  );
263
+ server.tool(
264
+ "get-doc-by-slug",
265
+ {
266
+ slug: z.union([z.string(), z.array(z.string())]),
267
+ lang: z.nativeEnum(Locales),
268
+ description: "Get an array of docs by their slugs"
269
+ },
270
+ async ({ slug, lang }) => {
271
+ const doc = await getDocBySlug(slug, lang);
272
+ return {
273
+ content: doc.map((d) => ({ type: "text", text: d }))
274
+ };
275
+ }
276
+ );
247
277
  const main = async () => {
248
278
  const transport = new StdioServerTransport();
249
279
  await server.connect(transport);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { build, fill, pull, push } from '@intlayer/cli';\nimport { isESModule, Locales, type LogConfig } from '@intlayer/config';\nimport { getDoc, getDocs } from '@intlayer/docs';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { readFileSync } from 'fs';\nimport { dirname as pathDirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\nimport { z } from 'zod';\n\nexport const dirname = isESModule\n ? pathDirname(fileURLToPath(import.meta.url))\n : __dirname;\n\nconst packageJson = JSON.parse(\n readFileSync(resolve(dirname, '../../package.json'), 'utf8')\n);\n\nconst buildToolSchema = {\n watch: z.boolean().optional().describe('Watch for changes'),\n baseDir: z.string().optional().describe('Base directory'),\n env: z.string().optional().describe('Environment'),\n envFile: z.string().optional().describe('Environment file'),\n verbose: z.boolean().optional().describe('Verbose output'),\n prefix: z.string().optional().describe('Log prefix'),\n};\n\ntype BuildToolProps = z.infer<z.ZodObject<typeof buildToolSchema>>;\n\nconst fillToolSchema = {\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\ntype FillToolProps = z.infer<z.ZodObject<typeof fillToolSchema>>;\n\nconst pushToolSchema = {\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\ntype PushToolProps = z.infer<z.ZodObject<typeof pushToolSchema>>;\n\nconst pullToolSchema = {\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\ntype PullToolProps = z.infer<z.ZodObject<typeof pullToolSchema>>;\n\nconst server = new McpServer({\n name: 'intlayer',\n version: packageJson.version,\n capabilities: {\n resources: {},\n },\n});\n\nserver.tool(\n 'intlayer-build',\n {\n description: 'Build the dictionaries',\n ...buildToolSchema,\n },\n async ({ watch, baseDir, env, envFile, verbose, prefix }: BuildToolProps) => {\n try {\n const log: Partial<LogConfig> = {};\n if (verbose) {\n log.mode = 'verbose';\n }\n if (prefix) {\n log.prefix = prefix;\n }\n\n await build({\n watch,\n configOptions: {\n baseDir,\n env,\n envFile,\n override: {\n log,\n },\n },\n });\n\n return {\n content: [\n {\n type: 'text',\n text: 'Build 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: `Build failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n);\n\nserver.tool(\n 'intlayer-fill',\n {\n description: 'Fill the dictionaries with missing translations',\n ...fillToolSchema,\n },\n async (props: FillToolProps) => {\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\nserver.tool(\n 'intlayer-push',\n {\n description: 'Push dictionaries to the server',\n ...pushToolSchema,\n },\n async (props: PushToolProps) => {\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\nserver.tool(\n 'intlayer-pull',\n {\n description: 'Pull dictionaries from the server',\n ...pullToolSchema,\n },\n async (props: PullToolProps) => {\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\nserver.tool('get-doc-list', {}, async ({}) => {\n const docList = Object.keys(getDocs());\n return {\n content: docList.map((doc) => ({ type: 'text', text: doc })),\n };\n});\n\nserver.tool(\n 'get-doc',\n { docName: z.string(), lang: z.nativeEnum(Locales) },\n async ({ docName, lang }) => {\n const doc = getDoc(docName as any, 'en');\n return {\n content: [{ type: 'text', text: doc }],\n };\n }\n);\n\nconst main = async () => {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error('Intlayer MCP Server running on stdio');\n};\n\nmain().catch((error) => {\n console.error('Fatal error in main():', error);\n process.exit(1);\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { build, fill, pull, push } from '@intlayer/cli';\nimport { isESModule, Locales, type LogConfig } from '@intlayer/config';\nimport { getDoc, getDocBySlug, getDocMetadataRecord } from '@intlayer/docs';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { readFileSync } from 'fs';\nimport { dirname as pathDirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\nimport { z } from 'zod';\n\nexport const dirname = isESModule\n ? pathDirname(fileURLToPath(import.meta.url))\n : __dirname;\n\nconst packageJson = JSON.parse(\n readFileSync(resolve(dirname, '../../package.json'), 'utf8')\n);\n\nconst buildToolSchema = {\n watch: z.boolean().optional().describe('Watch for changes'),\n baseDir: z.string().optional().describe('Base directory'),\n env: z.string().optional().describe('Environment'),\n envFile: z.string().optional().describe('Environment file'),\n verbose: z.boolean().optional().describe('Verbose output'),\n prefix: z.string().optional().describe('Log prefix'),\n};\n\ntype BuildToolProps = z.infer<z.ZodObject<typeof buildToolSchema>>;\n\nconst fillToolSchema = {\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\ntype FillToolProps = z.infer<z.ZodObject<typeof fillToolSchema>>;\n\nconst pushToolSchema = {\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\ntype PushToolProps = z.infer<z.ZodObject<typeof pushToolSchema>>;\n\nconst pullToolSchema = {\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\ntype PullToolProps = z.infer<z.ZodObject<typeof pullToolSchema>>;\n\nconst server = new McpServer({\n name: 'intlayer',\n version: packageJson.version,\n capabilities: {\n resources: {},\n },\n});\n\nserver.tool(\n 'intlayer-build',\n {\n description: 'Build the dictionaries',\n ...buildToolSchema,\n },\n async ({ watch, baseDir, env, envFile, verbose, prefix }: BuildToolProps) => {\n try {\n const log: Partial<LogConfig> = {};\n if (verbose) {\n log.mode = 'verbose';\n }\n if (prefix) {\n log.prefix = prefix;\n }\n\n await build({\n watch,\n configOptions: {\n baseDir,\n env,\n envFile,\n override: {\n log,\n },\n },\n });\n\n return {\n content: [\n {\n type: 'text',\n text: 'Build 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: `Build failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n);\n\nserver.tool(\n 'intlayer-fill',\n {\n description: 'Fill the dictionaries with missing translations',\n ...fillToolSchema,\n },\n async (props: FillToolProps) => {\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\nserver.tool(\n 'intlayer-push',\n {\n description: 'Push dictionaries to the server',\n ...pushToolSchema,\n },\n async (props: PushToolProps) => {\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\nserver.tool(\n 'intlayer-pull',\n {\n description: 'Pull dictionaries from the server',\n ...pullToolSchema,\n },\n async (props: PullToolProps) => {\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\nserver.tool(\n 'get-doc-list',\n {\n lang: z.nativeEnum(Locales),\n description:\n 'Get the list of docs and their metadata to get more details about what doc to',\n },\n async ({}) => {\n const docsMetadataRecord = await getDocMetadataRecord();\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(docsMetadataRecord, null, 2),\n },\n ],\n };\n }\n);\n\nserver.tool(\n 'get-doc',\n {\n docKey: z.string(),\n lang: z.nativeEnum(Locales),\n description: 'Get a doc by his key',\n },\n async ({ docKey, lang }) => {\n const doc = await getDoc(docKey as any, lang);\n return {\n content: [{ type: 'text', text: doc }],\n };\n }\n);\n\nserver.tool(\n 'get-doc-by-slug',\n {\n slug: z.union([z.string(), z.array(z.string())]),\n lang: z.nativeEnum(Locales),\n description: 'Get an array of docs by their slugs',\n },\n async ({ slug, lang }) => {\n const doc = await getDocBySlug(slug, lang);\n return {\n content: doc.map((d) => ({ type: 'text', text: d })),\n };\n }\n);\n\nconst main = async () => {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error('Intlayer MCP Server running on stdio');\n};\n\nmain().catch((error) => {\n console.error('Fatal error in main():', error);\n process.exit(1);\n});\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intlayer/mcp",
3
- "version": "5.5.10",
3
+ "version": "5.5.11",
4
4
  "private": false,
5
5
  "description": "Intlayer MCP server. Handle MCP to help IDE to use Intlayer. It build, fill, pull, push, dictionaries",
6
6
  "keywords": [
@@ -56,9 +56,9 @@
56
56
  "dependencies": {
57
57
  "@modelcontextprotocol/sdk": "^1.9.0",
58
58
  "zod": "^3.25.56",
59
- "@intlayer/cli": "5.5.9",
60
- "@intlayer/config": "5.5.9",
61
- "@intlayer/docs": "5.5.9"
59
+ "@intlayer/config": "5.5.11",
60
+ "@intlayer/cli": "5.5.11",
61
+ "@intlayer/docs": "5.5.11"
62
62
  },
63
63
  "devDependencies": {
64
64
  "@modelcontextprotocol/inspector": "^0.14.0",
@@ -71,15 +71,16 @@
71
71
  "tsc-alias": "^1.8.16",
72
72
  "tsup": "^8.5.0",
73
73
  "typescript": "^5.8.3",
74
+ "vitest": "^3.2.2",
74
75
  "@utils/eslint-config": "1.0.4",
75
76
  "@utils/ts-config": "1.0.4",
76
77
  "@utils/ts-config-types": "1.0.4",
77
78
  "@utils/tsup-config": "1.0.4"
78
79
  },
79
80
  "peerDependencies": {
80
- "@intlayer/cli": "5.5.9",
81
- "@intlayer/docs": "5.5.9",
82
- "@intlayer/config": "5.5.9"
81
+ "@intlayer/cli": "5.5.11",
82
+ "@intlayer/config": "5.5.11",
83
+ "@intlayer/docs": "5.5.11"
83
84
  },
84
85
  "engines": {
85
86
  "node": ">=14.18"
@@ -88,7 +89,7 @@
88
89
  "url": "https://github.com/aymericzip/intlayer/issues"
89
90
  },
90
91
  "scripts": {
91
- "build": "pnpm build:package & pnpm build:types & pnpm manange:permissions",
92
+ "build": "pnpm build:package && pnpm build:types && pnpm manange:permissions",
92
93
  "build:package": "tsup",
93
94
  "build:types": "tsc --project ./tsconfig.types.json && tsc-alias --project ./tsconfig.types.json",
94
95
  "clean": "rimraf ./dist",
@@ -96,14 +97,15 @@
96
97
  "lint": "eslint . --cache",
97
98
  "lint:fix": "eslint . --cache --fix",
98
99
  "manange:permissions": "pnpm manange:permissions:cjs & pnpm manange:permissions:mjs",
99
- "manange:permissions:cjs": "node -e \"require('fs').chmodSync('dist/cjs/index.cjs', '755')\"",
100
- "manange:permissions:mjs": "node -e \"require('fs').chmodSync('dist/esm/index.mjs', '755')\"",
100
+ "manange:permissions:cjs": "node -e \"require('fs').chmodSync('dist/cjs/index.cjs', 0o755)\"",
101
+ "manange:permissions:mjs": "node -e \"require('fs').chmodSync('dist/esm/index.mjs', 0o755)\"",
101
102
  "prettier": "prettier . --check",
102
103
  "prettier:fix": "prettier . --write",
103
104
  "process-files": "ts-node src/transpiler/processFilesCLI.ts --dir $npm_config_dir --extension $npm_config_extension --no-node-snapshot",
104
105
  "reset": "pnpm clean & pnpm build",
105
106
  "start": "npx @modelcontextprotocol/inspector node dist/cjs/index.cjs",
106
- "test": "",
107
+ "test": "vitest run",
108
+ "test:watch": "vitest",
107
109
  "typecheck": "tsup --project ./tsconfig.json --noEmit"
108
110
  }
109
111
  }