@mybe/contensa-mcp 1.0.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/dist/client.js ADDED
@@ -0,0 +1,480 @@
1
+ // Contensa API Client for MCP Server
2
+ // Supported locales - matches apps/web/lib/locales.ts
3
+ export const SUPPORTED_LOCALES = [
4
+ { code: "en-US", name: "English (United States)", flag: "🇺🇸", isDefault: true },
5
+ { code: "bn-BD", name: "Bangla (Bangladesh)", flag: "🇧🇩", isDefault: false },
6
+ { code: "fr-FR", name: "French (France)", flag: "🇫🇷", isDefault: false },
7
+ { code: "es-ES", name: "Spanish (Spain)", flag: "🇪🇸", isDefault: false },
8
+ { code: "de-DE", name: "German (Germany)", flag: "🇩🇪", isDefault: false },
9
+ { code: "it-IT", name: "Italian (Italy)", flag: "🇮🇹", isDefault: false },
10
+ { code: "pt-PT", name: "Portuguese (Portugal)", flag: "🇵🇹", isDefault: false },
11
+ { code: "nl-NL", name: "Dutch (Netherlands)", flag: "🇳🇱", isDefault: false },
12
+ { code: "sv-SE", name: "Swedish (Sweden)", flag: "🇸🇪", isDefault: false },
13
+ { code: "pl-PL", name: "Polish (Poland)", flag: "🇵🇱", isDefault: false },
14
+ { code: "ru-RU", name: "Russian (Russia)", flag: "🇷🇺", isDefault: false },
15
+ { code: "pt-BR", name: "Portuguese (Brazil)", flag: "🇧🇷", isDefault: false },
16
+ { code: "es-MX", name: "Spanish (Mexico)", flag: "🇲🇽", isDefault: false },
17
+ { code: "es-AR", name: "Spanish (Argentina)", flag: "🇦🇷", isDefault: false },
18
+ { code: "en-CA", name: "English (Canada)", flag: "🇨🇦", isDefault: false },
19
+ { code: "fr-CA", name: "French (Canada)", flag: "🇨🇦", isDefault: false },
20
+ { code: "ja-JP", name: "Japanese (Japan)", flag: "🇯🇵", isDefault: false },
21
+ { code: "ko-KR", name: "Korean (South Korea)", flag: "🇰🇷", isDefault: false },
22
+ { code: "zh-CN", name: "Chinese (Simplified)", flag: "🇨🇳", isDefault: false },
23
+ { code: "zh-TW", name: "Chinese (Traditional)", flag: "🇹🇼", isDefault: false },
24
+ { code: "hi-IN", name: "Hindi (India)", flag: "🇮🇳", isDefault: false },
25
+ { code: "th-TH", name: "Thai (Thailand)", flag: "🇹🇭", isDefault: false },
26
+ { code: "vi-VN", name: "Vietnamese (Vietnam)", flag: "🇻🇳", isDefault: false },
27
+ { code: "id-ID", name: "Indonesian (Indonesia)", flag: "🇮🇩", isDefault: false },
28
+ { code: "ms-MY", name: "Malay (Malaysia)", flag: "🇲🇾", isDefault: false },
29
+ { code: "fil-PH", name: "Filipino (Philippines)", flag: "🇵🇭", isDefault: false },
30
+ { code: "ar-SA", name: "Arabic (Saudi Arabia)", flag: "🇸🇦", isDefault: false },
31
+ { code: "tr-TR", name: "Turkish (Turkey)", flag: "🇹🇷", isDefault: false },
32
+ { code: "he-IL", name: "Hebrew (Israel)", flag: "🇮🇱", isDefault: false },
33
+ { code: "en-GB", name: "English (United Kingdom)", flag: "🇬🇧", isDefault: false },
34
+ { code: "en-AU", name: "English (Australia)", flag: "🇦🇺", isDefault: false },
35
+ ];
36
+ export class ContensaClient {
37
+ apiKey;
38
+ baseUrl;
39
+ projectId;
40
+ environmentId;
41
+ userId;
42
+ constructor(config) {
43
+ if (!config.apiKey) {
44
+ throw new Error("API key is required");
45
+ }
46
+ this.apiKey = config.apiKey;
47
+ this.projectId = config.projectId;
48
+ this.environmentId = config.environmentId;
49
+ this.userId = config.userId;
50
+ // Use provided baseUrl, or determine based on environment
51
+ if (config.baseUrl) {
52
+ this.baseUrl = config.baseUrl;
53
+ }
54
+ else {
55
+ const isDevelopment = typeof process !== "undefined" &&
56
+ process.env.NODE_ENV === "development";
57
+ // Use REST API endpoint for production (with API key validation and usage tracking)
58
+ this.baseUrl = isDevelopment
59
+ ? "http://localhost:3001/api/v1"
60
+ : "https://api.contensa.ai/api/v1";
61
+ }
62
+ }
63
+ async request(endpoint, options = {}) {
64
+ const url = `${this.baseUrl}${endpoint}`;
65
+ const headers = {
66
+ "Content-Type": "application/json",
67
+ "X-API-Key": this.apiKey,
68
+ };
69
+ // Add environment header if set (defaults to master on API side)
70
+ if (this.environmentId) {
71
+ headers["x-environment-id"] = this.environmentId;
72
+ }
73
+ // Merge additional headers if provided
74
+ if (options.headers) {
75
+ const additionalHeaders = options.headers;
76
+ Object.assign(headers, additionalHeaders);
77
+ }
78
+ const response = await fetch(url, {
79
+ ...options,
80
+ headers,
81
+ });
82
+ let data;
83
+ try {
84
+ data = (await response.json());
85
+ }
86
+ catch (e) {
87
+ const text = await response.text();
88
+ throw new Error(`Failed to parse response: ${text.substring(0, 200)}`);
89
+ }
90
+ if (!response.ok) {
91
+ const errorMessage = data.message || data.error || `API error: ${response.status}`;
92
+ const error = new Error(errorMessage);
93
+ error.status = response.status;
94
+ error.data = data;
95
+ error.url = url;
96
+ throw error;
97
+ }
98
+ return data;
99
+ }
100
+ setProjectId(projectId) {
101
+ this.projectId = projectId;
102
+ }
103
+ getProjectId() {
104
+ return this.projectId;
105
+ }
106
+ setEnvironmentId(environmentId) {
107
+ this.environmentId = environmentId;
108
+ }
109
+ getEnvironmentId() {
110
+ return this.environmentId;
111
+ }
112
+ // ==================== Projects ====================
113
+ async getProjects() {
114
+ const response = await this.request("/projects");
115
+ return response.data;
116
+ }
117
+ async getProject(projectId) {
118
+ const response = await this.request(`/project/${projectId}`);
119
+ return response.data;
120
+ }
121
+ // ==================== Content Types ====================
122
+ async getContentTypes(projectId) {
123
+ const pid = projectId || this.projectId;
124
+ if (!pid)
125
+ throw new Error("Project ID is required");
126
+ const response = await this.request(`/content-models/${pid}`);
127
+ return response.data;
128
+ }
129
+ async getContentType(contentTypeId) {
130
+ const response = await this.request(`/content-model/${contentTypeId}`);
131
+ return response.data;
132
+ }
133
+ async createContentType(input, projectId) {
134
+ const pid = projectId || this.projectId;
135
+ if (!pid)
136
+ throw new Error("Project ID is required");
137
+ const response = await this.request("/create-content-model", {
138
+ method: "POST",
139
+ body: JSON.stringify({
140
+ projectId: pid,
141
+ name: input.name,
142
+ slug: input.slug || input.name.toLowerCase().replace(/\s+/g, "-"),
143
+ description: input.description,
144
+ }),
145
+ });
146
+ return response.data;
147
+ }
148
+ async updateContentType(contentTypeId, input) {
149
+ const response = await this.request(`/content-model/${contentTypeId}`, {
150
+ method: "PUT",
151
+ body: JSON.stringify(input),
152
+ });
153
+ return response.data;
154
+ }
155
+ async deleteContentType(contentTypeId) {
156
+ await this.request(`/content-model/${contentTypeId}`, {
157
+ method: "DELETE",
158
+ });
159
+ }
160
+ // ==================== Fields ====================
161
+ async getFields(contentTypeId) {
162
+ const response = await this.request(`/content-fields/${contentTypeId}`);
163
+ return response.data;
164
+ }
165
+ async createField(input) {
166
+ const response = await this.request("/content-field", {
167
+ method: "POST",
168
+ body: JSON.stringify({
169
+ contentTypeId: input.contentTypeId,
170
+ apiName: input.apiName.toLowerCase().replace(/\s+/g, "_"),
171
+ kind: input.kind,
172
+ isRequired: input.isRequired || false,
173
+ settings: input.settings || {},
174
+ }),
175
+ });
176
+ return response.data;
177
+ }
178
+ async updateField(fieldId, input) {
179
+ const response = await this.request(`/content-field/${fieldId}`, {
180
+ method: "PUT",
181
+ body: JSON.stringify(input),
182
+ });
183
+ return response.data;
184
+ }
185
+ async deleteField(fieldId) {
186
+ await this.request(`/content-field/${fieldId}`, {
187
+ method: "DELETE",
188
+ });
189
+ }
190
+ // ==================== Content Entries ====================
191
+ async getContentEntries(contentTypeId, options) {
192
+ const params = new URLSearchParams();
193
+ if (options?.status)
194
+ params.append("status", options.status);
195
+ if (options?.limit)
196
+ params.append("limit", options.limit.toString());
197
+ if (options?.lastKey)
198
+ params.append("lastKey", options.lastKey);
199
+ const queryString = params.toString();
200
+ const endpoint = `/type/${contentTypeId}${queryString ? `?${queryString}` : ""}`;
201
+ return await this.request(endpoint);
202
+ }
203
+ async getContentEntry(entryId) {
204
+ const response = await this.request(`/content-entry/${entryId}`);
205
+ return response.data;
206
+ }
207
+ async createContentEntry(input) {
208
+ // Get projectId from input or use the active project
209
+ const projectId = input.projectId || this.projectId;
210
+ if (!projectId) {
211
+ throw new Error("Project ID is required. Set active project or provide projectId in input.");
212
+ }
213
+ // Get userId from input, config, or default to "system"
214
+ const userId = input.userId || this.userId;
215
+ if (!userId) {
216
+ throw new Error("User ID is required. Set CONTENSA_USER_ID in config or provide userId in input.");
217
+ }
218
+ // Handle case where data might be passed as a stringified JSON
219
+ let data = input.data;
220
+ if (typeof data === 'string') {
221
+ try {
222
+ data = JSON.parse(data);
223
+ }
224
+ catch (e) {
225
+ throw new Error(`Invalid data format: expected object but got string that couldn't be parsed as JSON`);
226
+ }
227
+ }
228
+ // Validate that data is an object
229
+ if (!data || typeof data !== 'object' || Array.isArray(data)) {
230
+ throw new Error(`Invalid data format: 'data' must be an object with field API names as keys`);
231
+ }
232
+ // Clean the data object before sending to API
233
+ // Remove empty objects (invalid for media fields), null, and undefined values
234
+ const cleanedData = Object.entries(data).reduce((acc, [key, value]) => {
235
+ // Skip empty objects (causes "Failed to construct 'URL'" errors for media fields)
236
+ if (value && typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length === 0) {
237
+ return acc;
238
+ }
239
+ // Skip null/undefined values
240
+ if (value === null || value === undefined) {
241
+ return acc;
242
+ }
243
+ // Skip empty strings (optional - can be kept if needed for text fields)
244
+ // For now, we keep empty strings as they may be intentional for text fields
245
+ // Keep everything else (including empty arrays, which are valid for list fields)
246
+ acc[key] = value;
247
+ return acc;
248
+ }, {});
249
+ const response = await this.request("/content-entry", {
250
+ method: "POST",
251
+ body: JSON.stringify({
252
+ contentTypeId: input.contentTypeId,
253
+ projectId: projectId,
254
+ data: cleanedData,
255
+ status: input.status || "draft",
256
+ locale: input.locale || "en-US",
257
+ userId: userId,
258
+ }),
259
+ });
260
+ return response.data;
261
+ }
262
+ async updateContentEntry(entryId, input) {
263
+ // Get userId from input or config
264
+ const userId = input.userId || this.userId;
265
+ if (!userId) {
266
+ throw new Error("User ID is required. Set CONTENSA_USER_ID in config or provide userId in input.");
267
+ }
268
+ const response = await this.request(`/content-entry/${entryId}`, {
269
+ method: "PUT",
270
+ body: JSON.stringify({
271
+ ...input,
272
+ userId: userId,
273
+ }),
274
+ });
275
+ return response.data;
276
+ }
277
+ async deleteContentEntry(entryId) {
278
+ await this.request(`/content-entry/${entryId}`, {
279
+ method: "DELETE",
280
+ });
281
+ }
282
+ async publishContentEntry(entryId) {
283
+ const userId = this.userId;
284
+ if (!userId) {
285
+ throw new Error("User ID is required. Set CONTENSA_USER_ID in config.");
286
+ }
287
+ const response = await this.request(`/content-entry/${entryId}/publish`, {
288
+ method: "POST",
289
+ body: JSON.stringify({
290
+ userId: userId,
291
+ publishReferences: true,
292
+ }),
293
+ });
294
+ return response.data;
295
+ }
296
+ async unpublishContentEntry(entryId) {
297
+ const userId = this.userId;
298
+ if (!userId) {
299
+ throw new Error("User ID is required. Set CONTENSA_USER_ID in config.");
300
+ }
301
+ const response = await this.request(`/content-entry/${entryId}/unpublish`, {
302
+ method: "POST",
303
+ body: JSON.stringify({
304
+ userId: userId,
305
+ unpublishReferences: false,
306
+ }),
307
+ });
308
+ return response.data;
309
+ }
310
+ // ==================== Media ====================
311
+ async getMediaAssets(projectId) {
312
+ const pid = projectId || this.projectId;
313
+ if (!pid)
314
+ throw new Error("Project ID is required");
315
+ const response = await this.request(`/media/${pid}`);
316
+ return response.data;
317
+ }
318
+ async getMediaAsset(assetId) {
319
+ const response = await this.request(`/media/asset/${assetId}`);
320
+ return response.data;
321
+ }
322
+ async deleteMediaAsset(assetId) {
323
+ await this.request(`/media/${assetId}`, {
324
+ method: "DELETE",
325
+ });
326
+ }
327
+ // ==================== AI Features ====================
328
+ async generateFieldSuggestions(contentTypeName, existingFields) {
329
+ const response = await this.request("/ai/generate-fields", {
330
+ method: "POST",
331
+ body: JSON.stringify({
332
+ contentTypeName,
333
+ existingFields,
334
+ }),
335
+ });
336
+ return response.fields;
337
+ }
338
+ async generateSchema(description) {
339
+ const response = await this.request("/ai/generate-schema", {
340
+ method: "POST",
341
+ body: JSON.stringify({ description }),
342
+ });
343
+ return response.fields;
344
+ }
345
+ // ==================== Environments ====================
346
+ async getEnvironments(projectId) {
347
+ const pid = projectId || this.projectId;
348
+ if (!pid)
349
+ throw new Error("Project ID is required");
350
+ const response = await this.request(`/environments/${pid}`);
351
+ return response.data;
352
+ }
353
+ async getEnvironment(environmentId) {
354
+ const response = await this.request(`/environments/detail/${environmentId}`);
355
+ return response.data;
356
+ }
357
+ async createEnvironment(input) {
358
+ const pid = input.projectId || this.projectId;
359
+ if (!pid)
360
+ throw new Error("Project ID is required");
361
+ const response = await this.request(`/environments/${pid}`, {
362
+ method: "POST",
363
+ body: JSON.stringify({
364
+ name: input.name,
365
+ slug: input.slug,
366
+ description: input.description,
367
+ sourceEnvironmentId: input.sourceEnvironmentId,
368
+ }),
369
+ });
370
+ return response.data;
371
+ }
372
+ async updateEnvironment(environmentId, input) {
373
+ const response = await this.request(`/environments/${environmentId}`, {
374
+ method: "PATCH",
375
+ body: JSON.stringify(input),
376
+ });
377
+ return response.data;
378
+ }
379
+ async deleteEnvironment(environmentId) {
380
+ await this.request(`/environments/${environmentId}`, {
381
+ method: "DELETE",
382
+ });
383
+ }
384
+ async mergeEnvironment(input) {
385
+ const response = await this.request(`/environments/${input.targetEnvironmentId}/merge`, {
386
+ method: "POST",
387
+ body: JSON.stringify({
388
+ sourceEnvironmentId: input.sourceEnvironmentId,
389
+ ...(input.dryRun !== undefined && { dryRun: input.dryRun }),
390
+ ...(input.defaultStrategy && { defaultStrategy: input.defaultStrategy }),
391
+ ...(input.contentTypeResolutions && { contentTypeResolutions: input.contentTypeResolutions }),
392
+ ...(input.entryResolutions && { entryResolutions: input.entryResolutions }),
393
+ ...(input.requireMasterApproval !== undefined && { requireMasterApproval: input.requireMasterApproval }),
394
+ }),
395
+ });
396
+ return response;
397
+ }
398
+ async syncEnvironment(input) {
399
+ const response = await this.request(`/environments/${input.targetEnvironmentId}/sync`, {
400
+ method: "POST",
401
+ body: JSON.stringify({
402
+ sourceEnvironmentId: input.sourceEnvironmentId,
403
+ }),
404
+ });
405
+ return response;
406
+ }
407
+ // ==================== Locale Management ====================
408
+ /**
409
+ * Get all supported locales in the system
410
+ */
411
+ getSupportedLocales() {
412
+ return SUPPORTED_LOCALES;
413
+ }
414
+ /**
415
+ * Get all locale variants of a content entry
416
+ */
417
+ async listLocaleVariants(entryId) {
418
+ const response = await this.request(`/content-entry/${entryId}/locales`);
419
+ return response.data;
420
+ }
421
+ /**
422
+ * Create a new locale variant of a content entry
423
+ *
424
+ * @param input - Locale variant creation options
425
+ * @param input.entryId - ID of the entry to create a variant for
426
+ * @param input.locale - Target locale code (e.g., "fr-FR", "es-ES")
427
+ * @param input.translateContent - Whether to use AI to translate content (REQUIRED - must be explicitly set)
428
+ * @param input.translateReferences - Whether to recursively create locale variants for referenced entries (REQUIRED - must be explicitly set)
429
+ * @param input.userId - User ID for the operation (optional, uses config userId if not provided)
430
+ *
431
+ * @returns The created locale variant and list of all created entries (if translateReferences was true)
432
+ *
433
+ * @example
434
+ * // Create a French variant with AI translation
435
+ * const variant = await client.createLocaleVariant({
436
+ * entryId: "entry-123",
437
+ * locale: "fr-FR",
438
+ * translateContent: true,
439
+ * translateReferences: false
440
+ * });
441
+ *
442
+ * @example
443
+ * // Create a Spanish variant without translation
444
+ * const variant = await client.createLocaleVariant({
445
+ * entryId: "entry-123",
446
+ * locale: "es-ES",
447
+ * translateContent: false,
448
+ * translateReferences: false
449
+ * });
450
+ */
451
+ async createLocaleVariant(input) {
452
+ const userId = input.userId || this.userId;
453
+ if (!userId) {
454
+ throw new Error("User ID is required. Set CONTENSA_USER_ID in config or provide userId in input.");
455
+ }
456
+ // Validate locale code
457
+ const isValidLocale = SUPPORTED_LOCALES.some(l => l.code === input.locale);
458
+ if (!isValidLocale) {
459
+ throw new Error(`Invalid locale code: ${input.locale}. Must be one of: ${SUPPORTED_LOCALES.map(l => l.code).join(", ")}`);
460
+ }
461
+ // Validate required parameters
462
+ if (input.translateContent === undefined) {
463
+ throw new Error("translateContent is required. Must explicitly specify true or false.");
464
+ }
465
+ if (input.translateReferences === undefined) {
466
+ throw new Error("translateReferences is required. Must explicitly specify true or false.");
467
+ }
468
+ const response = await this.request(`/content-entry/${input.entryId}/locale-with-references`, {
469
+ method: "POST",
470
+ body: JSON.stringify({
471
+ locale: input.locale,
472
+ userId: userId,
473
+ translatedData: input.translateContent ? {} : null, // null means don't translate
474
+ translateReferences: input.translateReferences,
475
+ }),
476
+ });
477
+ return response;
478
+ }
479
+ }
480
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { ContensaMCPServer } from "./server.js";
2
+ export { ContensaClient } from "./client.js";
3
+ export { toolDefinitions, toolHandlers, schemas } from "./tools.js";
4
+ export * from "./types.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACpE,cAAc,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ // Contensa MCP Server - Main exports
2
+ export { ContensaMCPServer } from "./server.js";
3
+ export { ContensaClient } from "./client.js";
4
+ export { toolDefinitions, toolHandlers, schemas } from "./tools.js";
5
+ export * from "./types.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACpE,cAAc,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ContensaConfig } from "./types.js";
2
+ export declare class ContensaMCPServer {
3
+ private server;
4
+ private client;
5
+ constructor(config: ContensaConfig);
6
+ private setupHandlers;
7
+ start(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,cAAc;IAmBlC,OAAO,CAAC,aAAa;IA4Jf,KAAK;CAKZ"}