@better-i18n/mcp 0.0.1 → 0.1.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 +15 -14
- package/dist/base-tool.d.ts +5 -1
- package/dist/base-tool.d.ts.map +1 -1
- package/dist/base-tool.js +16 -1
- package/dist/base-tool.js.map +1 -1
- package/dist/client.d.ts +6 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/index.js +44 -22
- package/dist/index.js.map +1 -1
- package/dist/tools/addLanguage.d.ts +8 -0
- package/dist/tools/addLanguage.d.ts.map +1 -0
- package/dist/tools/addLanguage.js +42 -0
- package/dist/tools/addLanguage.js.map +1 -0
- package/dist/tools/createKeys.d.ts +8 -0
- package/dist/tools/createKeys.d.ts.map +1 -0
- package/dist/tools/{bulkCreateKeys.js → createKeys.js} +17 -15
- package/dist/tools/createKeys.js.map +1 -0
- package/dist/tools/deleteKeys.d.ts +9 -0
- package/dist/tools/deleteKeys.d.ts.map +1 -0
- package/dist/tools/deleteKeys.js +47 -0
- package/dist/tools/deleteKeys.js.map +1 -0
- package/dist/tools/getProject.d.ts +8 -0
- package/dist/tools/getProject.d.ts.map +1 -0
- package/dist/tools/{getProjectInfo.js → getProject.js} +7 -7
- package/dist/tools/getProject.js.map +1 -0
- package/dist/tools/getSync.d.ts +8 -0
- package/dist/tools/getSync.d.ts.map +1 -0
- package/dist/tools/getSync.js +31 -0
- package/dist/tools/getSync.js.map +1 -0
- package/dist/tools/getSyncs.d.ts +8 -0
- package/dist/tools/getSyncs.d.ts.map +1 -0
- package/dist/tools/getSyncs.js +57 -0
- package/dist/tools/getSyncs.js.map +1 -0
- package/dist/tools/listProjects.d.ts +9 -0
- package/dist/tools/listProjects.d.ts.map +1 -0
- package/dist/tools/listProjects.js +36 -0
- package/dist/tools/listProjects.js.map +1 -0
- package/dist/tools/updateKeys.d.ts +8 -0
- package/dist/tools/updateKeys.d.ts.map +1 -0
- package/dist/tools/{bulkUpdateTranslations.js → updateKeys.js} +35 -17
- package/dist/tools/updateKeys.js.map +1 -0
- package/dist/types/index.d.ts +15 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/tools/bulkCreateKeys.d.ts +0 -8
- package/dist/tools/bulkCreateKeys.d.ts.map +0 -1
- package/dist/tools/bulkCreateKeys.js.map +0 -1
- package/dist/tools/bulkUpdateTranslations.d.ts +0 -8
- package/dist/tools/bulkUpdateTranslations.d.ts.map +0 -1
- package/dist/tools/bulkUpdateTranslations.js.map +0 -1
- package/dist/tools/createTranslationKey.d.ts +0 -8
- package/dist/tools/createTranslationKey.d.ts.map +0 -1
- package/dist/tools/createTranslationKey.js +0 -55
- package/dist/tools/createTranslationKey.js.map +0 -1
- package/dist/tools/getProjectInfo.d.ts +0 -8
- package/dist/tools/getProjectInfo.d.ts.map +0 -1
- package/dist/tools/getProjectInfo.js.map +0 -1
- package/dist/tools/updateTranslation.d.ts +0 -8
- package/dist/tools/updateTranslation.d.ts.map +0 -1
- package/dist/tools/updateTranslation.js +0 -61
- package/dist/tools/updateTranslation.js.map +0 -1
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ npm install -g @better-i18n/mcp
|
|
|
35
35
|
import { createI18n } from "@better-i18n/next";
|
|
36
36
|
|
|
37
37
|
export const i18n = createI18n({
|
|
38
|
-
project: "your-org/your-project",
|
|
38
|
+
project: "your-org/your-project", // Format: "org-slug/project-slug"
|
|
39
39
|
defaultLocale: "en",
|
|
40
40
|
});
|
|
41
41
|
```
|
|
@@ -64,14 +64,15 @@ Add to `~/.cursor/mcp.json`:
|
|
|
64
64
|
|
|
65
65
|
All tools require a `project` parameter in `org/project` format (e.g., `aliosman-co/personal`).
|
|
66
66
|
|
|
67
|
-
| Tool
|
|
68
|
-
|
|
69
|
-
| `
|
|
70
|
-
| `
|
|
71
|
-
| `
|
|
72
|
-
| `
|
|
73
|
-
| `
|
|
74
|
-
| `
|
|
67
|
+
| Tool | Description |
|
|
68
|
+
| -------------------- | ------------------------------------------------------------------------ |
|
|
69
|
+
| `listProjects` | List all accessible projects |
|
|
70
|
+
| `getProject` | Get project overview: namespaces, languages, coverage stats |
|
|
71
|
+
| `getAllTranslations` | Fetch all keys with translations (no pagination) |
|
|
72
|
+
| `listKeys` | List translation keys with filtering and pagination |
|
|
73
|
+
| `createKeys` | Create one or more keys (Compact: `n`, `ns`, `v`, `t`) |
|
|
74
|
+
| `updateKeys` | Update one or more translations (Compact: `k`, `n`, `ns`, `l`, `t`, `s`) |
|
|
75
|
+
| `addLanguage` | Add a new target language to the project |
|
|
75
76
|
|
|
76
77
|
## Example Prompts
|
|
77
78
|
|
|
@@ -94,11 +95,11 @@ Ask your AI assistant:
|
|
|
94
95
|
|
|
95
96
|
## Environment Variables
|
|
96
97
|
|
|
97
|
-
| Variable
|
|
98
|
-
|
|
99
|
-
| `BETTER_I18N_API_KEY` | Yes
|
|
100
|
-
| `BETTER_I18N_API_URL` | No
|
|
101
|
-
| `BETTER_I18N_DEBUG`
|
|
98
|
+
| Variable | Required | Description |
|
|
99
|
+
| --------------------- | -------- | --------------------------------------- |
|
|
100
|
+
| `BETTER_I18N_API_KEY` | Yes | Your API key |
|
|
101
|
+
| `BETTER_I18N_API_URL` | No | API URL (default: dash.better-i18n.com) |
|
|
102
|
+
| `BETTER_I18N_DEBUG` | No | Enable verbose logging |
|
|
102
103
|
|
|
103
104
|
## License
|
|
104
105
|
|
package/dist/base-tool.d.ts
CHANGED
|
@@ -35,9 +35,13 @@ export declare function success(data: Record<string, unknown>): ToolResult;
|
|
|
35
35
|
*/
|
|
36
36
|
export declare function error(message: string): ToolResult;
|
|
37
37
|
/**
|
|
38
|
-
* Wraps tool execution with common error handling
|
|
38
|
+
* Wraps tool execution with common error handling for project-scoped tools
|
|
39
39
|
*/
|
|
40
40
|
export declare function executeTool<T extends {
|
|
41
41
|
project: string;
|
|
42
42
|
}>(args: unknown, schema: z.ZodType<T>, handler: (input: T, parsed: ParsedProject) => Promise<ToolResult>): Promise<ToolResult>;
|
|
43
|
+
/**
|
|
44
|
+
* Wraps tool execution with common error handling for non-project tools
|
|
45
|
+
*/
|
|
46
|
+
export declare function executeSimpleTool<T>(args: unknown, schema: z.ZodType<T>, handler: (input: T) => Promise<ToolResult>): Promise<ToolResult>;
|
|
43
47
|
//# sourceMappingURL=base-tool.d.ts.map
|
package/dist/base-tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-tool.d.ts","sourceRoot":"","sources":["../src/base-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;EAExB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;CAMhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CASjE;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAUjD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAC7D,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,UAAU,CAAC,GAChE,OAAO,CAAC,UAAU,CAAC,CAWrB"}
|
|
1
|
+
{"version":3,"file":"base-tool.d.ts","sourceRoot":"","sources":["../src/base-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;EAExB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;CAMhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CASjE;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAUjD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAC7D,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,UAAU,CAAC,GAChE,OAAO,CAAC,UAAU,CAAC,CAWrB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACzC,OAAO,CAAC,UAAU,CAAC,CAUrB"}
|
package/dist/base-tool.js
CHANGED
|
@@ -49,7 +49,7 @@ export function error(message) {
|
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
-
* Wraps tool execution with common error handling
|
|
52
|
+
* Wraps tool execution with common error handling for project-scoped tools
|
|
53
53
|
*/
|
|
54
54
|
export async function executeTool(args, schema, handler) {
|
|
55
55
|
try {
|
|
@@ -64,4 +64,19 @@ export async function executeTool(args, schema, handler) {
|
|
|
64
64
|
return error(err instanceof Error ? err.message : String(err));
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Wraps tool execution with common error handling for non-project tools
|
|
69
|
+
*/
|
|
70
|
+
export async function executeSimpleTool(args, schema, handler) {
|
|
71
|
+
try {
|
|
72
|
+
const input = schema.parse(args);
|
|
73
|
+
return await handler(input);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
if (err instanceof z.ZodError) {
|
|
77
|
+
return error(`Validation error: ${err.errors.map(e => e.message).join(", ")}`);
|
|
78
|
+
}
|
|
79
|
+
return error(err instanceof Error ? err.message : String(err));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
67
82
|
//# sourceMappingURL=base-tool.js.map
|
package/dist/base-tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-tool.js","sourceRoot":"","sources":["../src/base-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAsB,MAAM,cAAc,CAAC;AAGhE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,EAAE;QACP,IAAI,EAAE,QAAiB;QACvB,WAAW,EACT,6HAA6H;KAChI;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAA6B;IACnD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aACpC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO;aACd;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAa,EACb,MAAoB,EACpB,OAAiE;IAEjE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,MAAM,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"base-tool.js","sourceRoot":"","sources":["../src/base-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAsB,MAAM,cAAc,CAAC;AAGhE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,EAAE;QACP,IAAI,EAAE,QAAiB;QACvB,WAAW,EACT,6HAA6H;KAChI;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAA6B;IACnD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aACpC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO;aACd;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAa,EACb,MAAoB,EACpB,OAAiE;IAEjE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,MAAM,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAa,EACb,MAAoB,EACpB,OAA0C;IAE1C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -6,6 +6,12 @@ export interface ClientConfig {
|
|
|
6
6
|
apiKey: string;
|
|
7
7
|
debug?: boolean;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Loosely typed client for MCP server usage.
|
|
11
|
+
* The MCP package runs standalone without API router types,
|
|
12
|
+
* so we allow arbitrary nested property access on the tRPC client.
|
|
13
|
+
*/
|
|
14
|
+
export type BetterI18nClient = Record<string, any>;
|
|
9
15
|
/**
|
|
10
16
|
* Create a tRPC client authenticated with API key
|
|
11
17
|
*
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AAEH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,0CAmEnD"}
|
package/dist/client.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* tRPC client for Better i18n API with API key authentication
|
|
3
3
|
*/
|
|
4
|
-
import { createTRPCClient, httpBatchLink } from "@trpc/client";
|
|
4
|
+
import { createTRPCClient, httpBatchLink, } from "@trpc/client";
|
|
5
5
|
/**
|
|
6
6
|
* Create a tRPC client authenticated with API key
|
|
7
7
|
*
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,cAAc,CAAC;AAoBtB;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAkD;IAElD,mDAAmD;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC7C,CAAC,CAAC,MAAM,CAAC,MAAM;QACf,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC;IAEnD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,gGAAgG;IAChG,IAAI,aAAa,GAAG,EAAE,CAAC;IAEvB,OAAO,gBAAgB,CAAgB;QACrC,KAAK,EAAE;YACL,aAAa,CAAC;gBACZ,GAAG;gBACH,OAAO,EAAE,GAAG,EAAE;oBACZ,MAAM,OAAO,GAA2B;wBACtC,WAAW,EAAE,MAAM,CAAC,MAAM;qBAC3B,CAAC;oBACF,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;wBAC1B,OAAO,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;oBACvD,CAAC;oBACD,OAAO,OAAO,CAAC;gBACjB,CAAC;gBACD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBAE/B,oFAAoF;oBACpF,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;wBAC/C,aAAa,GAAG,QAAQ,CAAC;wBAEzB,sCAAsC;wBACtC,IAAI,CAAC;4BACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;4BACpC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;4BACtD,OAAO,CAAC,KAAK,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC;wBAChD,CAAC;wBAAC,MAAM,CAAC;4BACP,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;wBAC/C,CAAC;oBACH,CAAC;oBAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAE1C,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;wBAC/C,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;4BAChB,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;wBACzD,CAAC;6BAAM,CAAC;4BACN,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;4BACxC,IAAI,CAAC;gCACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;gCACzC,OAAO,CAAC,KAAK,CACX,mBAAmB,QAAQ,CAAC,MAAM,WAAW,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACtE,CAAC;4BACJ,CAAC;4BAAC,MAAM,CAAC;gCACP,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC;4BAC5D,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,OAAO,QAAQ,CAAC;gBAClB,CAAC;aACF,CAAC;SACH;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -10,12 +10,15 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
|
10
10
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
11
11
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
12
12
|
import { createBetterI18nClient } from "./client.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
13
|
+
import { addLanguage } from "./tools/addLanguage.js";
|
|
14
|
+
import { createKeys } from "./tools/createKeys.js";
|
|
15
|
+
import { deleteKeys } from "./tools/deleteKeys.js";
|
|
16
|
+
import { getProject } from "./tools/getProject.js";
|
|
17
|
+
import { getSync } from "./tools/getSync.js";
|
|
18
|
+
import { getSyncs } from "./tools/getSyncs.js";
|
|
17
19
|
import { listKeys } from "./tools/listKeys.js";
|
|
18
|
-
import {
|
|
20
|
+
import { listProjects } from "./tools/listProjects.js";
|
|
21
|
+
import { updateKeys } from "./tools/updateKeys.js";
|
|
19
22
|
class BetterI18nServer {
|
|
20
23
|
server;
|
|
21
24
|
apiClient;
|
|
@@ -56,37 +59,53 @@ class BetterI18nServer {
|
|
|
56
59
|
// List available tools
|
|
57
60
|
this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
58
61
|
tools: [
|
|
59
|
-
|
|
62
|
+
listProjects.definition,
|
|
63
|
+
getProject.definition,
|
|
64
|
+
addLanguage.definition,
|
|
60
65
|
listKeys.definition,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
createKeys.definition,
|
|
67
|
+
updateKeys.definition,
|
|
68
|
+
deleteKeys.definition,
|
|
69
|
+
getSyncs.definition,
|
|
70
|
+
getSync.definition,
|
|
65
71
|
],
|
|
66
72
|
}));
|
|
67
73
|
// Execute tools
|
|
68
74
|
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
69
75
|
const { name, arguments: args } = request.params;
|
|
76
|
+
if (!this.apiClient) {
|
|
77
|
+
throw new Error("API client not initialized. Call init() first.");
|
|
78
|
+
}
|
|
79
|
+
const client = this.apiClient;
|
|
70
80
|
try {
|
|
71
81
|
let result;
|
|
72
82
|
switch (name) {
|
|
73
|
-
case "
|
|
74
|
-
result = await
|
|
83
|
+
case "listProjects":
|
|
84
|
+
result = await listProjects.execute(client, args);
|
|
75
85
|
break;
|
|
76
|
-
case "
|
|
77
|
-
result = await
|
|
86
|
+
case "getProject":
|
|
87
|
+
result = await getProject.execute(client, args);
|
|
78
88
|
break;
|
|
79
|
-
case "
|
|
80
|
-
result = await
|
|
89
|
+
case "addLanguage":
|
|
90
|
+
result = await addLanguage.execute(client, args);
|
|
81
91
|
break;
|
|
82
92
|
case "listKeys":
|
|
83
|
-
result = await listKeys.execute(
|
|
93
|
+
result = await listKeys.execute(client, args);
|
|
94
|
+
break;
|
|
95
|
+
case "createKeys":
|
|
96
|
+
result = await createKeys.execute(client, args);
|
|
97
|
+
break;
|
|
98
|
+
case "updateKeys":
|
|
99
|
+
result = await updateKeys.execute(client, args);
|
|
100
|
+
break;
|
|
101
|
+
case "deleteKeys":
|
|
102
|
+
result = await deleteKeys.execute(client, args);
|
|
84
103
|
break;
|
|
85
|
-
case "
|
|
86
|
-
result = await
|
|
104
|
+
case "getSyncs":
|
|
105
|
+
result = await getSyncs.execute(client, args);
|
|
87
106
|
break;
|
|
88
|
-
case "
|
|
89
|
-
result = await
|
|
107
|
+
case "getSync":
|
|
108
|
+
result = await getSync.execute(client, args);
|
|
90
109
|
break;
|
|
91
110
|
default:
|
|
92
111
|
throw new Error(`Unknown tool: ${name}`);
|
|
@@ -114,7 +133,10 @@ class BetterI18nServer {
|
|
|
114
133
|
}
|
|
115
134
|
// Start the server
|
|
116
135
|
const server = new BetterI18nServer();
|
|
117
|
-
server
|
|
136
|
+
server
|
|
137
|
+
.init()
|
|
138
|
+
.then(() => server.run())
|
|
139
|
+
.catch((error) => {
|
|
118
140
|
console.error("[better-i18n] Fatal error:", error);
|
|
119
141
|
process.exit(1);
|
|
120
142
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addLanguage.d.ts","sourceRoot":"","sources":["../../src/tools/addLanguage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAM9C,eAAO,MAAM,WAAW,EAAE,IAkCzB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* addLanguage MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Adds a new target language to the project.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
8
|
+
const inputSchema = projectSchema.extend({
|
|
9
|
+
languageCode: z.string().min(2).max(5),
|
|
10
|
+
});
|
|
11
|
+
export const addLanguage = {
|
|
12
|
+
definition: {
|
|
13
|
+
name: "addLanguage",
|
|
14
|
+
description: "Add a new target language to the project for translation. Use ISO 639-1 codes (e.g., 'fr' for French, 'ja' for Japanese).",
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {
|
|
18
|
+
...projectInputProperty,
|
|
19
|
+
languageCode: {
|
|
20
|
+
type: "string",
|
|
21
|
+
description: "ISO 639-1 language code (e.g., 'fr', 'ja', 'de', 'es')",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
required: ["project", "languageCode"],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
|
|
28
|
+
const result = await client.mcp.addLanguage.mutate({
|
|
29
|
+
orgSlug: workspaceId,
|
|
30
|
+
projectSlug,
|
|
31
|
+
languageCode: input.languageCode,
|
|
32
|
+
});
|
|
33
|
+
return success({
|
|
34
|
+
success: result.success,
|
|
35
|
+
message: result.message,
|
|
36
|
+
languageCode: input.languageCode,
|
|
37
|
+
project: input.project,
|
|
38
|
+
alreadyExists: result.alreadyExists,
|
|
39
|
+
});
|
|
40
|
+
}),
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=addLanguage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addLanguage.js","sourceRoot":"","sources":["../../src/tools/addLanguage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,UAAU,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,2HAA2H;QAC7H,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wDAAwD;iBACtE;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC;SACtC;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;YACjD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC,CAAC;IACL,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createKeys.d.ts","sourceRoot":"","sources":["../../src/tools/createKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAa9C,eAAO,MAAM,UAAU,EAAE,IAuExB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* createKeys MCP Tool
|
|
3
3
|
*
|
|
4
|
-
* Creates
|
|
4
|
+
* Creates one or more translation keys with source text and optional translations.
|
|
5
5
|
*/
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
@@ -13,10 +13,10 @@ const inputSchema = projectSchema.extend({
|
|
|
13
13
|
translations: z.record(z.string(), z.string()).optional(),
|
|
14
14
|
})),
|
|
15
15
|
});
|
|
16
|
-
export const
|
|
16
|
+
export const createKeys = {
|
|
17
17
|
definition: {
|
|
18
|
-
name: "
|
|
19
|
-
description: "Create
|
|
18
|
+
name: "createKeys",
|
|
19
|
+
description: "Create one or more translation keys with source text. Accepts an array - use for single or multiple keys.",
|
|
20
20
|
inputSchema: {
|
|
21
21
|
type: "object",
|
|
22
22
|
properties: {
|
|
@@ -37,11 +37,11 @@ export const bulkCreateKeys = {
|
|
|
37
37
|
},
|
|
38
38
|
sourceText: {
|
|
39
39
|
type: "string",
|
|
40
|
-
description: "
|
|
40
|
+
description: "Source text in default language (usually English)",
|
|
41
41
|
},
|
|
42
42
|
translations: {
|
|
43
43
|
type: "object",
|
|
44
|
-
description: "Translations for
|
|
44
|
+
description: "Translations for target languages. Keys are language codes, values are translated text.",
|
|
45
45
|
},
|
|
46
46
|
},
|
|
47
47
|
required: ["key", "sourceText"],
|
|
@@ -52,16 +52,18 @@ export const bulkCreateKeys = {
|
|
|
52
52
|
},
|
|
53
53
|
},
|
|
54
54
|
execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
// Map to compact format expected by API
|
|
56
|
+
// k: array of keys { n, ns, v, t }
|
|
57
|
+
const compactKeys = input.keys.map((k) => ({
|
|
58
|
+
n: k.key,
|
|
59
|
+
ns: k.namespace || "default",
|
|
60
|
+
v: k.sourceText,
|
|
61
|
+
t: k.translations,
|
|
60
62
|
}));
|
|
61
|
-
const result = await client.mcp.
|
|
63
|
+
const result = await client.mcp.createKeys.mutate({
|
|
62
64
|
orgSlug: workspaceId,
|
|
63
65
|
projectSlug,
|
|
64
|
-
|
|
66
|
+
k: compactKeys,
|
|
65
67
|
});
|
|
66
68
|
return success({
|
|
67
69
|
success: true,
|
|
@@ -71,4 +73,4 @@ export const bulkCreateKeys = {
|
|
|
71
73
|
});
|
|
72
74
|
}),
|
|
73
75
|
};
|
|
74
|
-
//# sourceMappingURL=
|
|
76
|
+
//# sourceMappingURL=createKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createKeys.js","sourceRoot":"","sources":["../../src/tools/createKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KAC1D,CAAC,CACH;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,2GAA2G;QAC7G,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,qCAAqC;oBAClD,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,sEAAsE;6BACzE;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+CAA+C;6BAC7D;4BACD,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,mDAAmD;6BACtD;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,yFAAyF;6BAC5F;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;qBAChC;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;SAC9B;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CACT,IAAI,EACJ,WAAW,EACX,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC5C,wCAAwC;QACxC,mCAAmC;QACnC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,CAAC,EAAE,CAAC,CAAC,GAAG;YACR,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;YAC5B,CAAC,EAAE,CAAC,CAAC,UAAU;YACf,CAAC,EAAE,CAAC,CAAC,YAAY;SAClB,CAAC,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YAChD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,CAAC,EAAE,WAAW;SACf,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC,CAAC;IACL,CAAC,CACF;CACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* deleteKeys MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Soft-deletes translation keys by marking them with a deletedAt timestamp.
|
|
5
|
+
* Keys are not permanently removed until the next publish.
|
|
6
|
+
*/
|
|
7
|
+
import type { Tool } from "../types/index.js";
|
|
8
|
+
export declare const deleteKeys: Tool;
|
|
9
|
+
//# sourceMappingURL=deleteKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteKeys.d.ts","sourceRoot":"","sources":["../../src/tools/deleteKeys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAM9C,eAAO,MAAM,UAAU,EAAE,IA2CxB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* deleteKeys MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Soft-deletes translation keys by marking them with a deletedAt timestamp.
|
|
5
|
+
* Keys are not permanently removed until the next publish.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
9
|
+
const inputSchema = projectSchema.extend({
|
|
10
|
+
keyIds: z.array(z.string().uuid()).min(1).max(100),
|
|
11
|
+
});
|
|
12
|
+
export const deleteKeys = {
|
|
13
|
+
definition: {
|
|
14
|
+
name: "deleteKeys",
|
|
15
|
+
description: "Delete one or more translation keys (soft delete). Keys are marked for deletion and removed from CDN/GitHub on the next publish. Accepts an array of key UUIDs.",
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: "object",
|
|
18
|
+
properties: {
|
|
19
|
+
...projectInputProperty,
|
|
20
|
+
keyIds: {
|
|
21
|
+
type: "array",
|
|
22
|
+
description: "Array of translation key UUIDs to delete. Get these from listKeys or getAllTranslations.",
|
|
23
|
+
items: {
|
|
24
|
+
type: "string",
|
|
25
|
+
description: "UUID of the translation key",
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
required: ["project", "keyIds"],
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
|
|
33
|
+
const result = await client.mcp.deleteKeys.mutate({
|
|
34
|
+
orgSlug: workspaceId,
|
|
35
|
+
projectSlug,
|
|
36
|
+
keyIds: input.keyIds,
|
|
37
|
+
});
|
|
38
|
+
return success({
|
|
39
|
+
success: true,
|
|
40
|
+
project: input.project,
|
|
41
|
+
markedCount: result.markedCount,
|
|
42
|
+
marked: result.marked,
|
|
43
|
+
skipped: result.skipped,
|
|
44
|
+
});
|
|
45
|
+
}),
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=deleteKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteKeys.js","sourceRoot":"","sources":["../../src/tools/deleteKeys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,iKAAiK;QACnK,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,MAAM,EAAE;oBACN,IAAI,EAAE,OAAO;oBACb,WAAW,EACT,0FAA0F;oBAC5F,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,6BAA6B;qBAC3C;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;SAChC;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CACT,IAAI,EACJ,WAAW,EACX,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YAChD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC,CACF;CACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProject.d.ts","sourceRoot":"","sources":["../../src/tools/getProject.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAI9C,eAAO,MAAM,UAAU,EAAE,IAsBxB,CAAC"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* getProject MCP Tool
|
|
3
3
|
*
|
|
4
|
-
* Gets project information including
|
|
4
|
+
* Gets project information including namespaces, languages, key count, and coverage stats.
|
|
5
5
|
*/
|
|
6
6
|
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
7
7
|
const inputSchema = projectSchema;
|
|
8
|
-
export const
|
|
8
|
+
export const getProject = {
|
|
9
9
|
definition: {
|
|
10
|
-
name: "
|
|
11
|
-
description: "Get project
|
|
10
|
+
name: "getProject",
|
|
11
|
+
description: "Get project details including namespaces, languages, key count, and translation coverage. Use this after listProjects to understand a specific project's structure.",
|
|
12
12
|
inputSchema: {
|
|
13
13
|
type: "object",
|
|
14
14
|
properties: {
|
|
@@ -18,11 +18,11 @@ export const getProjectInfo = {
|
|
|
18
18
|
},
|
|
19
19
|
},
|
|
20
20
|
execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
|
|
21
|
-
const result = await client.mcp.
|
|
21
|
+
const result = await client.mcp.getProject.query({
|
|
22
22
|
orgSlug: workspaceId,
|
|
23
23
|
projectSlug,
|
|
24
24
|
});
|
|
25
25
|
return success(result);
|
|
26
26
|
}),
|
|
27
27
|
};
|
|
28
|
-
//# sourceMappingURL=
|
|
28
|
+
//# sourceMappingURL=getProject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProject.js","sourceRoot":"","sources":["../../src/tools/getProject.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,qKAAqK;QACvK,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;aACxB;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;YAC/C,OAAO,EAAE,WAAW;YACpB,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSync.d.ts","sourceRoot":"","sources":["../../src/tools/getSync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAM9C,eAAO,MAAM,OAAO,EAAE,IAuBrB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* getSync MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Get detailed information about a specific sync operation including logs and affected keys.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { executeSimpleTool, success } from "../base-tool.js";
|
|
8
|
+
const inputSchema = z.object({
|
|
9
|
+
syncId: z.string().describe("The sync job ID to retrieve details for"),
|
|
10
|
+
});
|
|
11
|
+
export const getSync = {
|
|
12
|
+
definition: {
|
|
13
|
+
name: "getSync",
|
|
14
|
+
description: "Get detailed information about a specific sync operation. Returns full sync job details including activity logs, timing, status, and affected translation keys. Use this to troubleshoot sync issues or check if specific keys were included in a sync.",
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {
|
|
18
|
+
syncId: {
|
|
19
|
+
type: "string",
|
|
20
|
+
description: "The sync job ID (e.g., from getSyncs response or error messages)",
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
required: ["syncId"],
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
execute: (client, args) => executeSimpleTool(args, inputSchema, async (input) => {
|
|
27
|
+
const result = await client.mcp.getSync.query({ syncId: input.syncId });
|
|
28
|
+
return success(result);
|
|
29
|
+
}),
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=getSync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSync.js","sourceRoot":"","sources":["../../src/tools/getSync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG7D,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CACvE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAS;IAC3B,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EACT,yPAAyP;QAC3P,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,kEAAkE;iBACrE;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSyncs.d.ts","sourceRoot":"","sources":["../../src/tools/getSyncs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAU9C,eAAO,MAAM,QAAQ,EAAE,IA6CtB,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* getSyncs MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Lists recent sync operations for a project with filtering by status and type.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
8
|
+
const inputSchema = projectSchema.extend({
|
|
9
|
+
limit: z.number().min(1).max(50).optional(),
|
|
10
|
+
status: z.enum(["pending", "in_progress", "completed", "failed"]).optional(),
|
|
11
|
+
type: z
|
|
12
|
+
.enum(["initial_import", "source_sync", "cdn_upload", "publish_batch"])
|
|
13
|
+
.optional(),
|
|
14
|
+
});
|
|
15
|
+
export const getSyncs = {
|
|
16
|
+
definition: {
|
|
17
|
+
name: "getSyncs",
|
|
18
|
+
description: "List recent sync operations for a project. Returns sync jobs with their status, type, timing, and results. Use this to check if syncs succeeded or failed, or to see recent sync activity.",
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
...projectInputProperty,
|
|
23
|
+
limit: {
|
|
24
|
+
type: "number",
|
|
25
|
+
description: "Maximum number of sync jobs to return (default: 10, max: 50)",
|
|
26
|
+
},
|
|
27
|
+
status: {
|
|
28
|
+
type: "string",
|
|
29
|
+
enum: ["pending", "in_progress", "completed", "failed"],
|
|
30
|
+
description: "Filter syncs by status",
|
|
31
|
+
},
|
|
32
|
+
type: {
|
|
33
|
+
type: "string",
|
|
34
|
+
enum: [
|
|
35
|
+
"initial_import",
|
|
36
|
+
"source_sync",
|
|
37
|
+
"cdn_upload",
|
|
38
|
+
"publish_batch",
|
|
39
|
+
],
|
|
40
|
+
description: "Filter syncs by job type",
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
required: ["project"],
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
|
|
47
|
+
const result = await client.mcp.getSyncs.query({
|
|
48
|
+
orgSlug: workspaceId,
|
|
49
|
+
projectSlug,
|
|
50
|
+
limit: input.limit,
|
|
51
|
+
status: input.status,
|
|
52
|
+
type: input.type,
|
|
53
|
+
});
|
|
54
|
+
return success(result);
|
|
55
|
+
}),
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=getSyncs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSyncs.js","sourceRoot":"","sources":["../../src/tools/getSyncs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5E,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;SACtE,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,4LAA4L;QAC9L,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,8DAA8D;iBACjE;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC;oBACvD,WAAW,EAAE,wBAAwB;iBACtC;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE;wBACJ,gBAAgB;wBAChB,aAAa;wBACb,YAAY;wBACZ,eAAe;qBAChB;oBACD,WAAW,EAAE,0BAA0B;iBACxC;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7C,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* listProjects MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Lists all projects the user has access to across all organizations.
|
|
5
|
+
* Use this tool FIRST to discover available projects before other operations.
|
|
6
|
+
*/
|
|
7
|
+
import type { Tool } from "../types/index.js";
|
|
8
|
+
export declare const listProjects: Tool;
|
|
9
|
+
//# sourceMappingURL=listProjects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listProjects.d.ts","sourceRoot":"","sources":["../../src/tools/listProjects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,eAAO,MAAM,YAAY,EAAE,IA4B1B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* listProjects MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Lists all projects the user has access to across all organizations.
|
|
5
|
+
* Use this tool FIRST to discover available projects before other operations.
|
|
6
|
+
*/
|
|
7
|
+
import { success } from "../base-tool.js";
|
|
8
|
+
export const listProjects = {
|
|
9
|
+
definition: {
|
|
10
|
+
name: "listProjects",
|
|
11
|
+
description: "List all projects you have access to. Call this first to discover available projects before using other tools.",
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: "object",
|
|
14
|
+
properties: {},
|
|
15
|
+
required: [],
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
execute: async (client, _args) => {
|
|
19
|
+
try {
|
|
20
|
+
const result = await client.mcp.listProjects.query();
|
|
21
|
+
return success(result);
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
return {
|
|
25
|
+
content: [
|
|
26
|
+
{
|
|
27
|
+
type: "text",
|
|
28
|
+
text: `Error listing projects: ${err instanceof Error ? err.message : String(err)}`,
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
isError: true,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=listProjects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listProjects.js","sourceRoot":"","sources":["../../src/tools/listProjects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,MAAM,CAAC,MAAM,YAAY,GAAS;IAChC,UAAU,EAAE;QACV,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,gHAAgH;QAClH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YACrD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBACpF;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateKeys.d.ts","sourceRoot":"","sources":["../../src/tools/updateKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAY9C,eAAO,MAAM,UAAU,EAAE,IAoFxB,CAAC"}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* updateKeys MCP Tool
|
|
3
3
|
*
|
|
4
|
-
* Updates translations for
|
|
4
|
+
* Updates translations for one or more keys in a single request.
|
|
5
5
|
*/
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
8
8
|
const inputSchema = projectSchema.extend({
|
|
9
|
-
|
|
9
|
+
keys: z.array(z.object({
|
|
10
10
|
key: z.string(),
|
|
11
11
|
namespace: z.string().optional(),
|
|
12
12
|
translations: z.record(z.string(), z.string()),
|
|
13
13
|
})),
|
|
14
14
|
});
|
|
15
|
-
export const
|
|
15
|
+
export const updateKeys = {
|
|
16
16
|
definition: {
|
|
17
|
-
name: "
|
|
18
|
-
description: "Update translations for
|
|
17
|
+
name: "updateKeys",
|
|
18
|
+
description: "Update translations for one or more keys. Accepts an array - use for single or multiple updates.",
|
|
19
19
|
inputSchema: {
|
|
20
20
|
type: "object",
|
|
21
21
|
properties: {
|
|
22
22
|
...projectInputProperty,
|
|
23
|
-
|
|
23
|
+
keys: {
|
|
24
24
|
type: "array",
|
|
25
25
|
description: "Array of translation updates",
|
|
26
26
|
items: {
|
|
@@ -36,26 +36,44 @@ export const bulkUpdateTranslations = {
|
|
|
36
36
|
},
|
|
37
37
|
translations: {
|
|
38
38
|
type: "object",
|
|
39
|
-
description: "Translations
|
|
39
|
+
description: "Translations to update. Keys are language codes, values are translated text. Include source language to update sourceText.",
|
|
40
40
|
},
|
|
41
41
|
},
|
|
42
42
|
required: ["key", "translations"],
|
|
43
43
|
},
|
|
44
44
|
},
|
|
45
45
|
},
|
|
46
|
-
required: ["project", "
|
|
46
|
+
required: ["project", "keys"],
|
|
47
47
|
},
|
|
48
48
|
},
|
|
49
49
|
execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
namespace: u.namespace || "default",
|
|
53
|
-
translations: u.translations,
|
|
54
|
-
}));
|
|
55
|
-
const result = await client.mcp.bulkUpdateTranslations.mutate({
|
|
50
|
+
// First, get project info to determine source language
|
|
51
|
+
const projectInfo = await client.mcp.getProject.query({
|
|
56
52
|
orgSlug: workspaceId,
|
|
57
53
|
projectSlug,
|
|
58
|
-
|
|
54
|
+
});
|
|
55
|
+
const sourceLanguage = projectInfo.sourceLanguage;
|
|
56
|
+
// Flatten and map to compact format expected by API
|
|
57
|
+
// t: array of updates { k, n, ns, l, t, s, st }
|
|
58
|
+
const compactUpdates = [];
|
|
59
|
+
for (const k of input.keys) {
|
|
60
|
+
for (const [lang, text] of Object.entries(k.translations)) {
|
|
61
|
+
const isSourceLanguage = lang === sourceLanguage;
|
|
62
|
+
compactUpdates.push({
|
|
63
|
+
k: k.key, // Identifier
|
|
64
|
+
n: k.key, // Name
|
|
65
|
+
ns: k.namespace || "default",
|
|
66
|
+
l: lang,
|
|
67
|
+
t: text,
|
|
68
|
+
s: isSourceLanguage, // Explicitly mark source language updates
|
|
69
|
+
st: "approved", // Status for approved updates (used by AI approval flow)
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const result = await client.mcp.updateKeys.mutate({
|
|
74
|
+
orgSlug: workspaceId,
|
|
75
|
+
projectSlug,
|
|
76
|
+
t: compactUpdates,
|
|
59
77
|
});
|
|
60
78
|
return success({
|
|
61
79
|
success: true,
|
|
@@ -65,4 +83,4 @@ export const bulkUpdateTranslations = {
|
|
|
65
83
|
});
|
|
66
84
|
}),
|
|
67
85
|
};
|
|
68
|
-
//# sourceMappingURL=
|
|
86
|
+
//# sourceMappingURL=updateKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateKeys.js","sourceRoot":"","sources":["../../src/tools/updateKeys.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,12 +4,22 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* MCP Tool definition
|
|
6
6
|
*/
|
|
7
|
+
/** JSON Schema property definition */
|
|
8
|
+
interface JsonSchemaProperty {
|
|
9
|
+
type: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
enum?: string[];
|
|
12
|
+
items?: JsonSchemaProperty;
|
|
13
|
+
properties?: Record<string, JsonSchemaProperty>;
|
|
14
|
+
required?: string[];
|
|
15
|
+
default?: unknown;
|
|
16
|
+
}
|
|
7
17
|
export interface ToolDefinition {
|
|
8
18
|
name: string;
|
|
9
19
|
description: string;
|
|
10
20
|
inputSchema: {
|
|
11
21
|
type: "object";
|
|
12
|
-
properties: Record<string,
|
|
22
|
+
properties: Record<string, JsonSchemaProperty>;
|
|
13
23
|
required?: string[];
|
|
14
24
|
};
|
|
15
25
|
}
|
|
@@ -27,11 +37,14 @@ export interface ToolResult {
|
|
|
27
37
|
isError?: boolean;
|
|
28
38
|
[key: string]: unknown;
|
|
29
39
|
}
|
|
40
|
+
/** API client type for MCP tools */
|
|
41
|
+
import type { BetterI18nClient } from "../client.js";
|
|
30
42
|
/**
|
|
31
43
|
* MCP Tool implementation
|
|
32
44
|
*/
|
|
33
45
|
export interface Tool {
|
|
34
46
|
definition: ToolDefinition;
|
|
35
|
-
execute: (client:
|
|
47
|
+
execute: (client: BetterI18nClient, args: unknown) => Promise<ToolResult>;
|
|
36
48
|
}
|
|
49
|
+
export {};
|
|
37
50
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,sCAAsC;AACtC,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAC/C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,oCAAoC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,cAAc,CAAC;IAC3B,OAAO,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAC3E"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@better-i18n/mcp",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "MCP server for Better i18n translation management - AI-powered translation workflow for Cursor, Claude, and other AI assistants",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"dev": "bun run src/index.ts",
|
|
45
45
|
"typecheck": "tsc --noEmit",
|
|
46
46
|
"clean": "rm -rf dist",
|
|
47
|
-
"prepublishOnly": "npm run clean && npm run build"
|
|
47
|
+
"prepublishOnly": "npm run clean && npm run build && chmod +x ./dist/index.js"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bulkCreateKeys.d.ts","sourceRoot":"","sources":["../../src/tools/bulkCreateKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAa9C,eAAO,MAAM,cAAc,EAAE,IA8D5B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bulkCreateKeys.js","sourceRoot":"","sources":["../../src/tools/bulkCreateKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KAC1D,CAAC,CACH;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,UAAU,EAAE;QACV,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,oKAAoK;QACtK,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,qCAAqC;oBAClD,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,sEAAsE;6BACpF;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+CAA+C;6BAC7D;4BACD,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,qBAAqB;6BACnC;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,wFAAwF;6BACtG;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;qBAChC;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;SAC9B;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3C,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;YACnC,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,YAAY,EAAE,CAAC,CAAC,YAAY;SAC7B,CAAC,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC;YACpD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC,CAAC;IACL,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* bulkUpdateTranslations MCP Tool
|
|
3
|
-
*
|
|
4
|
-
* Updates translations for multiple keys in a single request.
|
|
5
|
-
*/
|
|
6
|
-
import type { Tool } from "../types/index.js";
|
|
7
|
-
export declare const bulkUpdateTranslations: Tool;
|
|
8
|
-
//# sourceMappingURL=bulkUpdateTranslations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bulkUpdateTranslations.d.ts","sourceRoot":"","sources":["../../src/tools/bulkUpdateTranslations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAY9C,eAAO,MAAM,sBAAsB,EAAE,IAyDpC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bulkUpdateTranslations.js","sourceRoot":"","sources":["../../src/tools/bulkUpdateTranslations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;KAC/C,CAAC,CACH;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAS;IAC1C,UAAU,EAAE;QACV,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,gLAAgL;QAClL,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,8BAA8B;oBAC3C,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,sEAAsE;6BACpF;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+CAA+C;6BAC7D;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,yFAAyF;6BACvG;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;qBAClC;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;SACjC;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjD,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;YACnC,YAAY,EAAE,CAAC,CAAC,YAAY;SAC7B,CAAC,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC;YAC5D,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* createTranslationKey MCP Tool
|
|
3
|
-
*
|
|
4
|
-
* Creates a new translation key with source text in the default language.
|
|
5
|
-
*/
|
|
6
|
-
import type { Tool } from "../types/index.js";
|
|
7
|
-
export declare const createTranslationKey: Tool;
|
|
8
|
-
//# sourceMappingURL=createTranslationKey.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createTranslationKey.d.ts","sourceRoot":"","sources":["../../src/tools/createTranslationKey.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAQ9C,eAAO,MAAM,oBAAoB,EAAE,IA6ClC,CAAC"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* createTranslationKey MCP Tool
|
|
3
|
-
*
|
|
4
|
-
* Creates a new translation key with source text in the default language.
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
8
|
-
const inputSchema = projectSchema.extend({
|
|
9
|
-
key: z.string().min(1),
|
|
10
|
-
sourceValue: z.string().min(1),
|
|
11
|
-
namespace: z.string().optional(),
|
|
12
|
-
});
|
|
13
|
-
export const createTranslationKey = {
|
|
14
|
-
definition: {
|
|
15
|
-
name: "createTranslationKey",
|
|
16
|
-
description: "Create a SINGLE translation key with source text. IMPORTANT: If you need to create 2 or more keys, use bulkCreateKeys instead.",
|
|
17
|
-
inputSchema: {
|
|
18
|
-
type: "object",
|
|
19
|
-
properties: {
|
|
20
|
-
...projectInputProperty,
|
|
21
|
-
key: {
|
|
22
|
-
type: "string",
|
|
23
|
-
description: "Translation key WITHOUT namespace prefix when namespace is provided.",
|
|
24
|
-
},
|
|
25
|
-
sourceValue: {
|
|
26
|
-
type: "string",
|
|
27
|
-
description: "Source text in default language (usually English)",
|
|
28
|
-
},
|
|
29
|
-
namespace: {
|
|
30
|
-
type: "string",
|
|
31
|
-
description: "Namespace for the key. Defaults to 'default'.",
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
required: ["project", "key", "sourceValue"],
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
|
|
38
|
-
const result = await client.mcp.createKey.mutate({
|
|
39
|
-
orgSlug: workspaceId,
|
|
40
|
-
projectSlug,
|
|
41
|
-
key: input.key,
|
|
42
|
-
namespace: input.namespace || "default",
|
|
43
|
-
sourceText: input.sourceValue,
|
|
44
|
-
});
|
|
45
|
-
return success({
|
|
46
|
-
success: true,
|
|
47
|
-
keyId: result.keyId,
|
|
48
|
-
key: input.key,
|
|
49
|
-
namespace: input.namespace || "default",
|
|
50
|
-
sourceText: input.sourceValue,
|
|
51
|
-
project: input.project,
|
|
52
|
-
});
|
|
53
|
-
}),
|
|
54
|
-
};
|
|
55
|
-
//# sourceMappingURL=createTranslationKey.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createTranslationKey.js","sourceRoot":"","sources":["../../src/tools/createTranslationKey.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAS;IACxC,UAAU,EAAE;QACV,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,gIAAgI;QAClI,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sEAAsE;iBACpF;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mDAAmD;iBACjE;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+CAA+C;iBAC7D;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC;SAC5C;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;YAC/C,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;YACvC,UAAU,EAAE,KAAK,CAAC,WAAW;SAC9B,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;YACvC,UAAU,EAAE,KAAK,CAAC,WAAW;YAC7B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getProjectInfo.d.ts","sourceRoot":"","sources":["../../src/tools/getProjectInfo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAI9C,eAAO,MAAM,cAAc,EAAE,IAsB5B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getProjectInfo.js","sourceRoot":"","sources":["../../src/tools/getProjectInfo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,UAAU,EAAE;QACV,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,wKAAwK;QAC1K,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;aACxB;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC;YACnD,OAAO,EAAE,WAAW;YACpB,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"updateTranslation.d.ts","sourceRoot":"","sources":["../../src/tools/updateTranslation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAS9C,eAAO,MAAM,iBAAiB,EAAE,IAkD/B,CAAC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* updateTranslation MCP Tool
|
|
3
|
-
*
|
|
4
|
-
* Updates or creates a translation for a specific language.
|
|
5
|
-
*/
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
8
|
-
const inputSchema = projectSchema.extend({
|
|
9
|
-
key: z.string().min(1),
|
|
10
|
-
languageCode: z.string().min(2).max(10),
|
|
11
|
-
value: z.string(),
|
|
12
|
-
namespace: z.string().optional(),
|
|
13
|
-
});
|
|
14
|
-
export const updateTranslation = {
|
|
15
|
-
definition: {
|
|
16
|
-
name: "updateTranslation",
|
|
17
|
-
description: "Update or create a SINGLE translation for a specific language. IMPORTANT: If you need to update 2 or more translations, use bulkUpdateTranslations instead.",
|
|
18
|
-
inputSchema: {
|
|
19
|
-
type: "object",
|
|
20
|
-
properties: {
|
|
21
|
-
...projectInputProperty,
|
|
22
|
-
key: {
|
|
23
|
-
type: "string",
|
|
24
|
-
description: "Translation key WITHOUT namespace prefix when namespace is provided.",
|
|
25
|
-
},
|
|
26
|
-
languageCode: {
|
|
27
|
-
type: "string",
|
|
28
|
-
description: "Language code (e.g., 'en', 'tr', 'de', 'fr')",
|
|
29
|
-
},
|
|
30
|
-
value: {
|
|
31
|
-
type: "string",
|
|
32
|
-
description: "Translation text",
|
|
33
|
-
},
|
|
34
|
-
namespace: {
|
|
35
|
-
type: "string",
|
|
36
|
-
description: "Namespace for the key. Defaults to 'default'.",
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
required: ["project", "key", "languageCode", "value"],
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
|
|
43
|
-
await client.mcp.updateTranslation.mutate({
|
|
44
|
-
orgSlug: workspaceId,
|
|
45
|
-
projectSlug,
|
|
46
|
-
key: input.key,
|
|
47
|
-
namespace: input.namespace || "default",
|
|
48
|
-
languageCode: input.languageCode,
|
|
49
|
-
value: input.value,
|
|
50
|
-
});
|
|
51
|
-
return success({
|
|
52
|
-
success: true,
|
|
53
|
-
key: input.key,
|
|
54
|
-
namespace: input.namespace || "default",
|
|
55
|
-
languageCode: input.languageCode,
|
|
56
|
-
value: input.value,
|
|
57
|
-
project: input.project,
|
|
58
|
-
});
|
|
59
|
-
}),
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=updateTranslation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"updateTranslation.js","sourceRoot":"","sources":["../../src/tools/updateTranslation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,UAAU,EAAE;QACV,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,6JAA6J;QAC/J,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sEAAsE;iBACpF;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8CAA8C;iBAC5D;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kBAAkB;iBAChC;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+CAA+C;iBAC7D;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC;SACtD;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC;YACxC,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;YACvC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;YACvC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC,CAAC;CACL,CAAC"}
|