@better-i18n/mcp 0.0.1 → 0.0.2
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/index.js +24 -21
- 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/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/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} +27 -17
- package/dist/tools/updateKeys.js.map +1 -0
- package/package.json +1 -1
- 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/index.js
CHANGED
|
@@ -10,12 +10,12 @@ 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 { getProjectInfo } from "./tools/getProjectInfo.js";
|
|
13
|
+
import { addLanguage } from "./tools/addLanguage.js";
|
|
14
|
+
import { createKeys } from "./tools/createKeys.js";
|
|
15
|
+
import { getProject } from "./tools/getProject.js";
|
|
17
16
|
import { listKeys } from "./tools/listKeys.js";
|
|
18
|
-
import {
|
|
17
|
+
import { listProjects } from "./tools/listProjects.js";
|
|
18
|
+
import { updateKeys } from "./tools/updateKeys.js";
|
|
19
19
|
class BetterI18nServer {
|
|
20
20
|
server;
|
|
21
21
|
apiClient;
|
|
@@ -56,12 +56,12 @@ class BetterI18nServer {
|
|
|
56
56
|
// List available tools
|
|
57
57
|
this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
58
58
|
tools: [
|
|
59
|
-
|
|
59
|
+
listProjects.definition,
|
|
60
|
+
getProject.definition,
|
|
61
|
+
addLanguage.definition,
|
|
60
62
|
listKeys.definition,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
updateTranslation.definition,
|
|
64
|
-
bulkUpdateTranslations.definition,
|
|
63
|
+
createKeys.definition,
|
|
64
|
+
updateKeys.definition,
|
|
65
65
|
],
|
|
66
66
|
}));
|
|
67
67
|
// Execute tools
|
|
@@ -70,23 +70,23 @@ class BetterI18nServer {
|
|
|
70
70
|
try {
|
|
71
71
|
let result;
|
|
72
72
|
switch (name) {
|
|
73
|
-
case "
|
|
74
|
-
result = await
|
|
73
|
+
case "listProjects":
|
|
74
|
+
result = await listProjects.execute(this.apiClient, args);
|
|
75
75
|
break;
|
|
76
|
-
case "
|
|
77
|
-
result = await
|
|
76
|
+
case "getProject":
|
|
77
|
+
result = await getProject.execute(this.apiClient, args);
|
|
78
78
|
break;
|
|
79
|
-
case "
|
|
80
|
-
result = await
|
|
79
|
+
case "addLanguage":
|
|
80
|
+
result = await addLanguage.execute(this.apiClient, args);
|
|
81
81
|
break;
|
|
82
82
|
case "listKeys":
|
|
83
83
|
result = await listKeys.execute(this.apiClient, args);
|
|
84
84
|
break;
|
|
85
|
-
case "
|
|
86
|
-
result = await
|
|
85
|
+
case "createKeys":
|
|
86
|
+
result = await createKeys.execute(this.apiClient, args);
|
|
87
87
|
break;
|
|
88
|
-
case "
|
|
89
|
-
result = await
|
|
88
|
+
case "updateKeys":
|
|
89
|
+
result = await updateKeys.execute(this.apiClient, args);
|
|
90
90
|
break;
|
|
91
91
|
default:
|
|
92
92
|
throw new Error(`Unknown tool: ${name}`);
|
|
@@ -114,7 +114,10 @@ class BetterI18nServer {
|
|
|
114
114
|
}
|
|
115
115
|
// Start the server
|
|
116
116
|
const server = new BetterI18nServer();
|
|
117
|
-
server
|
|
117
|
+
server
|
|
118
|
+
.init()
|
|
119
|
+
.then(() => server.run())
|
|
120
|
+
.catch((error) => {
|
|
118
121
|
console.error("[better-i18n] Fatal error:", error);
|
|
119
122
|
process.exit(1);
|
|
120
123
|
});
|
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 @@
|
|
|
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,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,IAyExB,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,36 @@ 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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
// Flatten and map to compact format expected by API
|
|
51
|
+
// t: array of updates { k, n, ns, l, t, s }
|
|
52
|
+
const compactUpdates = [];
|
|
53
|
+
for (const k of input.keys) {
|
|
54
|
+
for (const [lang, text] of Object.entries(k.translations)) {
|
|
55
|
+
compactUpdates.push({
|
|
56
|
+
k: k.key, // Identifier
|
|
57
|
+
n: k.key, // Name
|
|
58
|
+
ns: k.namespace || "default",
|
|
59
|
+
l: lang,
|
|
60
|
+
t: text,
|
|
61
|
+
s: false, // Let API detect if this is source language via code match
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const result = await client.mcp.updateKeys.mutate({
|
|
56
66
|
orgSlug: workspaceId,
|
|
57
67
|
projectSlug,
|
|
58
|
-
|
|
68
|
+
t: compactUpdates,
|
|
59
69
|
});
|
|
60
70
|
return success({
|
|
61
71
|
success: true,
|
|
@@ -65,4 +75,4 @@ export const bulkUpdateTranslations = {
|
|
|
65
75
|
});
|
|
66
76
|
}),
|
|
67
77
|
};
|
|
68
|
-
//# sourceMappingURL=
|
|
78
|
+
//# sourceMappingURL=updateKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateKeys.js","sourceRoot":"","sources":["../../src/tools/updateKeys.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,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,UAAU,GAAS;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,kGAAkG;QACpG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,IAAI,EAAE;oBACJ,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,EACT,sEAAsE;6BACzE;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+CAA+C;6BAC7D;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,4HAA4H;6BAC/H;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;qBAClC;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,oDAAoD;QACpD,4CAA4C;QAC5C,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1D,cAAc,CAAC,IAAI,CAAC;oBAClB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,aAAa;oBACvB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO;oBACjB,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;oBAC5B,CAAC,EAAE,IAAI;oBACP,CAAC,EAAE,IAAI;oBACP,CAAC,EAAE,KAAK,EAAE,2DAA2D;iBACtE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YAChD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,CAAC,EAAE,cAAc;SAClB,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,CACF;CACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -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"}
|