@scoutello/i18n-magic 0.36.0 โ†’ 0.37.0

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
@@ -11,6 +11,7 @@ i18n Magic streamlines the entire translation management process for your JavaSc
11
11
  - **๐Ÿ”„ Sync & Maintain**: Keeps all your locales in perfect sync
12
12
  - **๐Ÿงน Clean & Optimize**: Removes unused translations and creates optimized bundles
13
13
  - **โšก CI/CD Ready**: Perfect for automated workflows and deployment pipelines
14
+ - **๐Ÿ”Œ MCP Integration**: Connect with Cursor and other LLMs to add translation keys on the fly
14
15
 
15
16
  ## ๐Ÿ“‹ Requirements
16
17
 
@@ -273,3 +274,73 @@ This is useful for:
273
274
  - Keeping translation files clean and maintainable
274
275
  - Reducing bundle size by removing dead translations
275
276
  - Regular maintenance in CI/CD pipelines
277
+
278
+ ## ๐Ÿ”Œ MCP Server Integration
279
+
280
+ i18n Magic includes an MCP (Model Context Protocol) server that allows LLMs like Cursor to add missing translation keys directly to your translation files. This enables a seamless workflow where your AI assistant can identify and add missing translations while you code.
281
+
282
+ ### Setting up the MCP Server
283
+
284
+ 1. **Install i18n-magic** (if not already installed):
285
+
286
+ ```bash
287
+ npm install -g @scoutello/i18n-magic
288
+ # or locally in your project
289
+ npm install @scoutello/i18n-magic
290
+ ```
291
+
292
+ 2. **Configure Cursor** (or other MCP-compatible tools):
293
+
294
+ Open Cursor settings and add this to your MCP configuration:
295
+
296
+ **For global installation:**
297
+ ```json
298
+ {
299
+ "i18n-magic": {
300
+ "command": "i18n-magic-mcp",
301
+ "cwd": "/absolute/path/to/your/project"
302
+ }
303
+ }
304
+ ```
305
+
306
+ **For local installation:**
307
+ ```json
308
+ {
309
+ "i18n-magic": {
310
+ "command": "node",
311
+ "args": ["./node_modules/@scoutello/i18n-magic/dist/mcp-server.js"],
312
+ "cwd": "/absolute/path/to/your/project"
313
+ }
314
+ }
315
+ ```
316
+
317
+ **Important**:
318
+ - Replace `/absolute/path/to/your/project` with your project directory containing `i18n-magic.js`
319
+ - The `cwd` parameter must be an absolute path
320
+
321
+ ### How it works
322
+
323
+ 1. While coding, the LLM identifies a missing translation key
324
+ 2. The LLM calls the `add_translation_key` tool to add it with an English value
325
+ 3. The key is automatically added to the `en` locale (regardless of your `defaultLocale`)
326
+ 4. Run `i18n-magic sync` to translate the key to all other configured locales
327
+
328
+ ### Available MCP Tools
329
+
330
+ **add_translation_key**: Add a new translation key with an English value
331
+
332
+ Parameters:
333
+ - `key` (required): The translation key (e.g., "welcomeMessage")
334
+ - `value` (required): The English text value
335
+ - `namespace` (optional): Target namespace (defaults to your defaultNamespace)
336
+
337
+ Example:
338
+ ```json
339
+ {
340
+ "key": "user.profileUpdated",
341
+ "value": "Your profile has been updated successfully",
342
+ "namespace": "common"
343
+ }
344
+ ```
345
+
346
+ For detailed setup instructions and troubleshooting, see [MCP-SERVER.md](./MCP-SERVER.md).
package/dist/index.d.ts CHANGED
@@ -3,6 +3,6 @@ export { removeUnusedKeys } from "./commands/clean.js";
3
3
  export { replaceTranslation } from "./commands/replace.js";
4
4
  export { translateMissing } from "./commands/scan.js";
5
5
  export { syncLocales } from "./commands/sync-locales.js";
6
- export { loadConfig } from "./lib/utils.js";
6
+ export { addTranslationKey, loadConfig } from "./lib/utils.js";
7
7
  export type { CommandType, Configuration, GlobPatternConfig, } from "./lib/types.js";
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAGxD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAI3C,YAAY,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAGxD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAI9D,YAAY,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,gBAAgB,CAAA"}
package/dist/index.js CHANGED
@@ -5,5 +5,5 @@ export { replaceTranslation } from "./commands/replace.js";
5
5
  export { translateMissing } from "./commands/scan.js";
6
6
  export { syncLocales } from "./commands/sync-locales.js";
7
7
  // Export utility functions
8
- export { loadConfig } from "./lib/utils.js";
8
+ export { addTranslationKey, loadConfig } from "./lib/utils.js";
9
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD,2BAA2B;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA"}
@@ -58,4 +58,21 @@ export declare class TranslationError extends Error {
58
58
  cause?: Error;
59
59
  constructor(message: string, locale?: string, namespace?: string, cause?: Error);
60
60
  }
61
+ /**
62
+ * Add a translation key with an English value to the locale files.
63
+ * This function always adds to the "en" locale, regardless of the user's defaultLocale setting.
64
+ * The key will be synced to other locales when the sync command is run.
65
+ */
66
+ export declare const addTranslationKey: ({ key, value, namespace, config, }: {
67
+ key: string;
68
+ value: string;
69
+ namespace?: string;
70
+ config: Configuration;
71
+ }) => Promise<{
72
+ success: boolean;
73
+ key: string;
74
+ value: string;
75
+ namespace: string;
76
+ locale: string;
77
+ }>;
61
78
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAGhC,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAElE,eAAO,MAAM,UAAU,GAAU,kBAE9B;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,iBAkB9B,CAAA;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAE1D;AA0BD,eAAO,MAAM,YAAY,GAAU,oEAOhC;IACD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,oCAyDA,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,UACI,MAAM,GACN,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAC5E,QAAQ,MAAM,EACd,WAAW,MAAM,oCA4BlB,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,UACI,MAAM,GACN,CAAC,CACC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACzB,OAAO,CAAC,IAAI,CAAC,CAAC,EACvB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,kBAmB7B,CAAA;AAED,eAAO,MAAM,UAAU,GACrB,KAAK,MAAM,EACX,YAAY,MAAM,EAClB,YAAY,OAAO,WAiBpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,cAAc,CAAC,MAAM,GAAG,iBAAiB,CAAC,EAAE,KAC3C,MAAM,EAIR,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAU,MAAM,EAChB,cAAc,CAAC,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,EAAE,EACpE,kBAAkB,MAAM,KACvB,MAAM,EAyCR,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACtC,WAAW,MAAM,EACjB,cAAc,CAAC,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,EAAE,KACnE,MAAM,EAcR,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAU,qCAGzC,IAAI,CAAC,aAAa,EAAE,cAAc,GAAG,kBAAkB,CAAC;SAoBlD,MAAM;gBACC,MAAM,EAAE;UACd,MAAM;IAyDf,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,0EAMlC,aAAa,mBAoHf,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,KAAK,MAAM,EACX,YAAY,MAAM,EAAE,EACpB,QAAQ,MAAM,EACd,UACI,MAAM,GACN,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAC3E,OAAO,CAAC,MAAM,GAAG,IAAI,CAYvB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,GACnC,MAAM,MAAM,EAAE,EACd,YAAY,MAAM,EAAE,EACpB,QAAQ,MAAM,EACd,UACI,MAAM,GACN,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAC3E,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAgCvC,CAAA;AAED,eAAO,MAAM,YAAY,GAAU,KAAK,MAAM,EAAE,aAAa,MAAM,EAAE,oBAoBpE,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAU,mHAUrC,aAAa,kBA4Df,CAAA;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAGhC,MAAM,CAAC,EAAE,MAAM;IACf,SAAS,CAAC,EAAE,MAAM;IAClB,KAAK,CAAC,EAAE,KAAK;gBAHpB,OAAO,EAAE,MAAM,EACR,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,KAAK;CAKvB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
package/dist/lib/utils.js CHANGED
@@ -470,4 +470,54 @@ export class TranslationError extends Error {
470
470
  this.name = "TranslationError";
471
471
  }
472
472
  }
473
+ /**
474
+ * Add a translation key with an English value to the locale files.
475
+ * This function always adds to the "en" locale, regardless of the user's defaultLocale setting.
476
+ * The key will be synced to other locales when the sync command is run.
477
+ */
478
+ export const addTranslationKey = async ({ key, value, namespace, config, }) => {
479
+ const { loadPath, savePath, defaultNamespace, namespaces } = config;
480
+ // Determine which namespace to use
481
+ const targetNamespace = namespace || defaultNamespace;
482
+ // Validate that the namespace exists in the configuration
483
+ if (!namespaces.includes(targetNamespace)) {
484
+ throw new Error(`Namespace "${targetNamespace}" does not exist in configuration. Available namespaces: ${namespaces.join(", ")}`);
485
+ }
486
+ // Always use "en" as the locale for adding keys (English)
487
+ const locale = "en";
488
+ console.log(`โž• Adding translation key "${key}" to namespace "${targetNamespace}" (${locale})`);
489
+ // Load existing keys for the English locale
490
+ let existingKeys;
491
+ try {
492
+ existingKeys = await loadLocalesFile(loadPath, locale, targetNamespace);
493
+ }
494
+ catch (error) {
495
+ // If file doesn't exist, start with empty object
496
+ console.log(`๐Ÿ“„ Creating new namespace file for ${locale}/${targetNamespace}`);
497
+ existingKeys = {};
498
+ }
499
+ // Check if key already exists
500
+ if (existingKeys[key]) {
501
+ console.log(`โš ๏ธ Key "${key}" already exists in ${locale}/${targetNamespace} with value: "${existingKeys[key]}"`);
502
+ console.log(` Updating to new value: "${value}"`);
503
+ }
504
+ // Add or update the key
505
+ existingKeys[key] = value;
506
+ // Save the updated keys
507
+ try {
508
+ await writeLocalesFile(savePath, locale, targetNamespace, existingKeys);
509
+ console.log(`โœ… Successfully added key "${key}" to ${locale}/${targetNamespace}`);
510
+ console.log(` Run 'i18n-magic sync' to translate this key to other locales`);
511
+ return {
512
+ success: true,
513
+ key,
514
+ value,
515
+ namespace: targetNamespace,
516
+ locale,
517
+ };
518
+ }
519
+ catch (error) {
520
+ throw new TranslationError(`Failed to save translation key "${key}" to ${locale}/${targetNamespace}`, locale, targetNamespace, error instanceof Error ? error : undefined);
521
+ }
522
+ };
473
523
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":""}
@@ -0,0 +1,145 @@
1
+ #!/usr/bin/env node
2
+ #!/usr/bin/env node
3
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
4
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
6
+ import { z } from "zod";
7
+ import { addTranslationKey } from "./lib/utils.js";
8
+ import { loadConfig } from "./lib/utils.js";
9
+ // Zod schema for the add_translation_key tool parameters
10
+ const AddTranslationKeySchema = z.object({
11
+ key: z
12
+ .string()
13
+ .describe("The translation key to add (e.g., 'welcomeMessage')"),
14
+ value: z.string().describe("The English text value for this translation key"),
15
+ namespace: z
16
+ .string()
17
+ .optional()
18
+ .describe("Optional namespace to add the key to. If not provided, uses the default namespace from config."),
19
+ });
20
+ class I18nMagicServer {
21
+ constructor() {
22
+ this.config = null;
23
+ this.server = new Server({
24
+ name: "i18n-magic-server",
25
+ version: "1.0.0",
26
+ }, {
27
+ capabilities: {
28
+ tools: {},
29
+ },
30
+ });
31
+ this.setupToolHandlers();
32
+ // Error handling
33
+ this.server.onerror = (error) => console.error("[MCP Error]", error);
34
+ process.on("SIGINT", async () => {
35
+ await this.server.close();
36
+ process.exit(0);
37
+ });
38
+ }
39
+ async ensureConfig() {
40
+ if (!this.config) {
41
+ try {
42
+ this.config = await loadConfig();
43
+ console.error(`[i18n-magic MCP] Loaded configuration with ${this.config.namespaces.length} namespaces and ${this.config.locales.length} locales`);
44
+ }
45
+ catch (error) {
46
+ console.error("[i18n-magic MCP] Failed to load configuration:", error);
47
+ throw new Error("Failed to load i18n-magic configuration. Make sure i18n-magic.js exists in the current directory.");
48
+ }
49
+ }
50
+ return this.config;
51
+ }
52
+ setupToolHandlers() {
53
+ // List available tools
54
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => {
55
+ return {
56
+ tools: [
57
+ {
58
+ name: "add_translation_key",
59
+ description: "Add a new translation key with an English value to the i18n locale files. The key will be added to the 'en' locale and can later be synced to other languages using the sync command. This is useful when you need to add missing translation keys that you discover while coding.",
60
+ inputSchema: {
61
+ type: "object",
62
+ properties: {
63
+ key: {
64
+ type: "string",
65
+ description: "The translation key to add (e.g., 'welcomeMessage', 'error.notFound')",
66
+ },
67
+ value: {
68
+ type: "string",
69
+ description: "The English text value for this translation key",
70
+ },
71
+ namespace: {
72
+ type: "string",
73
+ description: "Optional namespace to add the key to. If not provided, uses the default namespace from config.",
74
+ },
75
+ },
76
+ required: ["key", "value"],
77
+ },
78
+ },
79
+ ],
80
+ };
81
+ });
82
+ // Handle tool execution
83
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
84
+ if (request.params.name === "add_translation_key") {
85
+ try {
86
+ // Validate parameters
87
+ const params = AddTranslationKeySchema.parse(request.params.arguments);
88
+ // Ensure config is loaded
89
+ const config = await this.ensureConfig();
90
+ // Add the translation key
91
+ const result = await addTranslationKey({
92
+ key: params.key,
93
+ value: params.value,
94
+ namespace: params.namespace,
95
+ config,
96
+ });
97
+ return {
98
+ content: [
99
+ {
100
+ type: "text",
101
+ text: JSON.stringify({
102
+ success: true,
103
+ message: `Successfully added translation key "${result.key}" to ${result.locale}/${result.namespace}`,
104
+ key: result.key,
105
+ value: result.value,
106
+ namespace: result.namespace,
107
+ locale: result.locale,
108
+ nextStep: "Run 'i18n-magic sync' to translate this key to other locales",
109
+ }, null, 2),
110
+ },
111
+ ],
112
+ };
113
+ }
114
+ catch (error) {
115
+ const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
116
+ return {
117
+ content: [
118
+ {
119
+ type: "text",
120
+ text: JSON.stringify({
121
+ success: false,
122
+ error: errorMessage,
123
+ }, null, 2),
124
+ },
125
+ ],
126
+ isError: true,
127
+ };
128
+ }
129
+ }
130
+ throw new Error(`Unknown tool: ${request.params.name}`);
131
+ });
132
+ }
133
+ async run() {
134
+ const transport = new StdioServerTransport();
135
+ await this.server.connect(transport);
136
+ console.error("[i18n-magic MCP] Server started and ready to accept connections");
137
+ }
138
+ }
139
+ // Start the server
140
+ const server = new I18nMagicServer();
141
+ server.run().catch((error) => {
142
+ console.error("[i18n-magic MCP] Fatal error:", error);
143
+ process.exit(1);
144
+ });
145
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scoutello/i18n-magic",
3
- "version": "0.36.0",
3
+ "version": "0.37.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "Intelligent CLI toolkit that automates internationalization workflows with AI-powered translations for JavaScript/TypeScript projects",
@@ -36,7 +36,10 @@
36
36
  "main": "dist/index.js",
37
37
  "typings": "dist/index.d.ts",
38
38
  "types": "dist/index.d.ts",
39
- "bin": "dist/cli.js",
39
+ "bin": {
40
+ "i18n-magic": "dist/cli.js",
41
+ "i18n-magic-mcp": "dist/mcp-server.js"
42
+ },
40
43
  "exports": {
41
44
  ".": {
42
45
  "import": "./dist/index.js",
@@ -46,8 +49,9 @@
46
49
  "files": ["dist", "src"],
47
50
  "scripts": {
48
51
  "analyze": "size-limit --why",
49
- "build": "tsc && echo '#!/usr/bin/env node' | cat - dist/cli.js > temp && mv temp dist/cli.js && chmod +x dist/cli.js",
52
+ "build": "tsc && echo '#!/usr/bin/env node' | cat - dist/cli.js > temp && mv temp dist/cli.js && chmod +x dist/cli.js && echo '#!/usr/bin/env node' | cat - dist/mcp-server.js > temp && mv temp dist/mcp-server.js && chmod +x dist/mcp-server.js",
50
53
  "lint": "biome check src/",
54
+ "mcp": "node dist/mcp-server.js",
51
55
  "prepare": "npm run build",
52
56
  "size": "size-limit",
53
57
  "start": "tsc --watch",
package/src/index.ts CHANGED
@@ -7,7 +7,7 @@ export { translateMissing } from "./commands/scan.js"
7
7
  export { syncLocales } from "./commands/sync-locales.js"
8
8
 
9
9
  // Export utility functions
10
- export { loadConfig } from "./lib/utils.js"
10
+ export { addTranslationKey, loadConfig } from "./lib/utils.js"
11
11
 
12
12
  // Export types
13
13
 
package/src/lib/utils.ts CHANGED
@@ -686,3 +686,87 @@ export class TranslationError extends Error {
686
686
  this.name = "TranslationError"
687
687
  }
688
688
  }
689
+
690
+ /**
691
+ * Add a translation key with an English value to the locale files.
692
+ * This function always adds to the "en" locale, regardless of the user's defaultLocale setting.
693
+ * The key will be synced to other locales when the sync command is run.
694
+ */
695
+ export const addTranslationKey = async ({
696
+ key,
697
+ value,
698
+ namespace,
699
+ config,
700
+ }: {
701
+ key: string
702
+ value: string
703
+ namespace?: string
704
+ config: Configuration
705
+ }) => {
706
+ const { loadPath, savePath, defaultNamespace, namespaces } = config
707
+
708
+ // Determine which namespace to use
709
+ const targetNamespace = namespace || defaultNamespace
710
+
711
+ // Validate that the namespace exists in the configuration
712
+ if (!namespaces.includes(targetNamespace)) {
713
+ throw new Error(
714
+ `Namespace "${targetNamespace}" does not exist in configuration. Available namespaces: ${namespaces.join(", ")}`,
715
+ )
716
+ }
717
+
718
+ // Always use "en" as the locale for adding keys (English)
719
+ const locale = "en"
720
+
721
+ console.log(
722
+ `โž• Adding translation key "${key}" to namespace "${targetNamespace}" (${locale})`,
723
+ )
724
+
725
+ // Load existing keys for the English locale
726
+ let existingKeys: Record<string, string>
727
+ try {
728
+ existingKeys = await loadLocalesFile(loadPath, locale, targetNamespace)
729
+ } catch (error) {
730
+ // If file doesn't exist, start with empty object
731
+ console.log(
732
+ `๐Ÿ“„ Creating new namespace file for ${locale}/${targetNamespace}`,
733
+ )
734
+ existingKeys = {}
735
+ }
736
+
737
+ // Check if key already exists
738
+ if (existingKeys[key]) {
739
+ console.log(
740
+ `โš ๏ธ Key "${key}" already exists in ${locale}/${targetNamespace} with value: "${existingKeys[key]}"`,
741
+ )
742
+ console.log(` Updating to new value: "${value}"`)
743
+ }
744
+
745
+ // Add or update the key
746
+ existingKeys[key] = value
747
+
748
+ // Save the updated keys
749
+ try {
750
+ await writeLocalesFile(savePath, locale, targetNamespace, existingKeys)
751
+ console.log(
752
+ `โœ… Successfully added key "${key}" to ${locale}/${targetNamespace}`,
753
+ )
754
+ console.log(
755
+ ` Run 'i18n-magic sync' to translate this key to other locales`,
756
+ )
757
+ return {
758
+ success: true,
759
+ key,
760
+ value,
761
+ namespace: targetNamespace,
762
+ locale,
763
+ }
764
+ } catch (error) {
765
+ throw new TranslationError(
766
+ `Failed to save translation key "${key}" to ${locale}/${targetNamespace}`,
767
+ locale,
768
+ targetNamespace,
769
+ error instanceof Error ? error : undefined,
770
+ )
771
+ }
772
+ }
@@ -0,0 +1,188 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js"
4
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
5
+ import {
6
+ CallToolRequestSchema,
7
+ ListToolsRequestSchema,
8
+ } from "@modelcontextprotocol/sdk/types.js"
9
+ import { z } from "zod"
10
+ import { addTranslationKey } from "./lib/utils.js"
11
+ import { loadConfig } from "./lib/utils.js"
12
+ import type { Configuration } from "./lib/types.js"
13
+
14
+ // Zod schema for the add_translation_key tool parameters
15
+ const AddTranslationKeySchema = z.object({
16
+ key: z
17
+ .string()
18
+ .describe("The translation key to add (e.g., 'welcomeMessage')"),
19
+ value: z.string().describe("The English text value for this translation key"),
20
+ namespace: z
21
+ .string()
22
+ .optional()
23
+ .describe(
24
+ "Optional namespace to add the key to. If not provided, uses the default namespace from config.",
25
+ ),
26
+ })
27
+
28
+ class I18nMagicServer {
29
+ private server: Server
30
+ private config: Configuration | null = null
31
+
32
+ constructor() {
33
+ this.server = new Server(
34
+ {
35
+ name: "i18n-magic-server",
36
+ version: "1.0.0",
37
+ },
38
+ {
39
+ capabilities: {
40
+ tools: {},
41
+ },
42
+ },
43
+ )
44
+
45
+ this.setupToolHandlers()
46
+
47
+ // Error handling
48
+ this.server.onerror = (error) => console.error("[MCP Error]", error)
49
+ process.on("SIGINT", async () => {
50
+ await this.server.close()
51
+ process.exit(0)
52
+ })
53
+ }
54
+
55
+ private async ensureConfig(): Promise<Configuration> {
56
+ if (!this.config) {
57
+ try {
58
+ this.config = await loadConfig()
59
+ console.error(
60
+ `[i18n-magic MCP] Loaded configuration with ${this.config.namespaces.length} namespaces and ${this.config.locales.length} locales`,
61
+ )
62
+ } catch (error) {
63
+ console.error("[i18n-magic MCP] Failed to load configuration:", error)
64
+ throw new Error(
65
+ "Failed to load i18n-magic configuration. Make sure i18n-magic.js exists in the current directory.",
66
+ )
67
+ }
68
+ }
69
+ return this.config
70
+ }
71
+
72
+ private setupToolHandlers() {
73
+ // List available tools
74
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => {
75
+ return {
76
+ tools: [
77
+ {
78
+ name: "add_translation_key",
79
+ description:
80
+ "Add a new translation key with an English value to the i18n locale files. The key will be added to the 'en' locale and can later be synced to other languages using the sync command. This is useful when you need to add missing translation keys that you discover while coding.",
81
+ inputSchema: {
82
+ type: "object",
83
+ properties: {
84
+ key: {
85
+ type: "string",
86
+ description:
87
+ "The translation key to add (e.g., 'welcomeMessage', 'error.notFound')",
88
+ },
89
+ value: {
90
+ type: "string",
91
+ description:
92
+ "The English text value for this translation key",
93
+ },
94
+ namespace: {
95
+ type: "string",
96
+ description:
97
+ "Optional namespace to add the key to. If not provided, uses the default namespace from config.",
98
+ },
99
+ },
100
+ required: ["key", "value"],
101
+ },
102
+ },
103
+ ],
104
+ }
105
+ })
106
+
107
+ // Handle tool execution
108
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
109
+ if (request.params.name === "add_translation_key") {
110
+ try {
111
+ // Validate parameters
112
+ const params = AddTranslationKeySchema.parse(request.params.arguments)
113
+
114
+ // Ensure config is loaded
115
+ const config = await this.ensureConfig()
116
+
117
+ // Add the translation key
118
+ const result = await addTranslationKey({
119
+ key: params.key,
120
+ value: params.value,
121
+ namespace: params.namespace,
122
+ config,
123
+ })
124
+
125
+ return {
126
+ content: [
127
+ {
128
+ type: "text",
129
+ text: JSON.stringify(
130
+ {
131
+ success: true,
132
+ message: `Successfully added translation key "${result.key}" to ${result.locale}/${result.namespace}`,
133
+ key: result.key,
134
+ value: result.value,
135
+ namespace: result.namespace,
136
+ locale: result.locale,
137
+ nextStep:
138
+ "Run 'i18n-magic sync' to translate this key to other locales",
139
+ },
140
+ null,
141
+ 2,
142
+ ),
143
+ },
144
+ ],
145
+ }
146
+ } catch (error) {
147
+ const errorMessage =
148
+ error instanceof Error ? error.message : "Unknown error occurred"
149
+ return {
150
+ content: [
151
+ {
152
+ type: "text",
153
+ text: JSON.stringify(
154
+ {
155
+ success: false,
156
+ error: errorMessage,
157
+ },
158
+ null,
159
+ 2,
160
+ ),
161
+ },
162
+ ],
163
+ isError: true,
164
+ }
165
+ }
166
+ }
167
+
168
+ throw new Error(`Unknown tool: ${request.params.name}`)
169
+ })
170
+ }
171
+
172
+ async run() {
173
+ const transport = new StdioServerTransport()
174
+ await this.server.connect(transport)
175
+ console.error(
176
+ "[i18n-magic MCP] Server started and ready to accept connections",
177
+ )
178
+ }
179
+ }
180
+
181
+ // Start the server
182
+ const server = new I18nMagicServer()
183
+ server.run().catch((error) => {
184
+ console.error("[i18n-magic MCP] Fatal error:", error)
185
+ process.exit(1)
186
+ })
187
+
188
+