@contentful/mcp-server 1.4.0 → 1.6.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.
Files changed (41) hide show
  1. package/build/tools/context/instructions.js +3 -0
  2. package/build/tools/context/instructions.js.map +1 -1
  3. package/build/tools/jobs/register.js +5 -0
  4. package/build/tools/jobs/register.js.map +1 -0
  5. package/build/tools/jobs/space-to-space-migration/exportSpace.js +148 -0
  6. package/build/tools/jobs/space-to-space-migration/exportSpace.js.map +1 -0
  7. package/build/tools/jobs/space-to-space-migration/importSpace.js +127 -0
  8. package/build/tools/jobs/space-to-space-migration/importSpace.js.map +1 -0
  9. package/build/tools/jobs/space-to-space-migration/instructions.js +33 -0
  10. package/build/tools/jobs/space-to-space-migration/instructions.js.map +1 -0
  11. package/build/tools/jobs/space-to-space-migration/migrationHandler.js +45 -0
  12. package/build/tools/jobs/space-to-space-migration/migrationHandler.js.map +1 -0
  13. package/build/tools/jobs/space-to-space-migration/mockClient.js +156 -0
  14. package/build/tools/jobs/space-to-space-migration/mockClient.js.map +1 -0
  15. package/build/tools/jobs/space-to-space-migration/paramCollection.js +288 -0
  16. package/build/tools/jobs/space-to-space-migration/paramCollection.js.map +1 -0
  17. package/build/tools/jobs/space-to-space-migration/register.js +23 -0
  18. package/build/tools/jobs/space-to-space-migration/register.js.map +1 -0
  19. package/build/tools/register.js +4 -0
  20. package/build/tools/register.js.map +1 -1
  21. package/build/tools/taxonomies/concept-schemes/createConceptScheme.js +78 -0
  22. package/build/tools/taxonomies/concept-schemes/createConceptScheme.js.map +1 -0
  23. package/build/tools/taxonomies/concept-schemes/deleteConceptScheme.js +27 -0
  24. package/build/tools/taxonomies/concept-schemes/deleteConceptScheme.js.map +1 -0
  25. package/build/tools/taxonomies/concept-schemes/getConceptScheme.js +26 -0
  26. package/build/tools/taxonomies/concept-schemes/getConceptScheme.js.map +1 -0
  27. package/build/tools/taxonomies/concept-schemes/listConceptSchemes.js +66 -0
  28. package/build/tools/taxonomies/concept-schemes/listConceptSchemes.js.map +1 -0
  29. package/build/tools/taxonomies/concept-schemes/mockClient.js +147 -0
  30. package/build/tools/taxonomies/concept-schemes/mockClient.js.map +1 -0
  31. package/build/tools/taxonomies/concept-schemes/register.js +13 -0
  32. package/build/tools/taxonomies/concept-schemes/register.js.map +1 -0
  33. package/build/tools/taxonomies/concept-schemes/updateConceptScheme.js +99 -0
  34. package/build/tools/taxonomies/concept-schemes/updateConceptScheme.js.map +1 -0
  35. package/build/tools/taxonomies/register.js +5 -0
  36. package/build/tools/taxonomies/register.js.map +1 -0
  37. package/build/types/conceptPayloadTypes.js +17 -0
  38. package/build/types/conceptPayloadTypes.js.map +1 -0
  39. package/build/types/querySchema.js +36 -0
  40. package/build/types/querySchema.js.map +1 -0
  41. package/package.json +5 -2
@@ -0,0 +1,147 @@
1
+ import { vi } from 'vitest';
2
+ const { mockConceptSchemeCreate, mockConceptSchemeCreateWithId, mockConceptSchemeGet, mockConceptSchemeGetMany, mockConceptSchemeUpdate, mockConceptSchemeDelete, mockCreateToolClient, } = vi.hoisted(() => {
3
+ return {
4
+ mockConceptSchemeCreate: vi.fn(),
5
+ mockConceptSchemeCreateWithId: vi.fn(),
6
+ mockConceptSchemeGet: vi.fn(),
7
+ mockConceptSchemeGetMany: vi.fn(),
8
+ mockConceptSchemeUpdate: vi.fn(),
9
+ mockConceptSchemeDelete: vi.fn(),
10
+ mockCreateToolClient: vi.fn(() => {
11
+ return {
12
+ conceptScheme: {
13
+ create: mockConceptSchemeCreate,
14
+ createWithId: mockConceptSchemeCreateWithId,
15
+ get: mockConceptSchemeGet,
16
+ getMany: mockConceptSchemeGetMany,
17
+ update: mockConceptSchemeUpdate,
18
+ delete: mockConceptSchemeDelete,
19
+ },
20
+ };
21
+ }),
22
+ };
23
+ });
24
+ vi.mock('../../../utils/tools.js', async (importOriginal) => {
25
+ const org = await importOriginal();
26
+ return {
27
+ ...org,
28
+ createToolClient: mockCreateToolClient,
29
+ };
30
+ });
31
+ export { mockConceptSchemeCreate, mockConceptSchemeCreateWithId, mockConceptSchemeGet, mockConceptSchemeGetMany, mockConceptSchemeUpdate, mockConceptSchemeDelete, mockCreateToolClient, };
32
+ export const testConceptScheme = {
33
+ sys: {
34
+ type: 'TaxonomyConceptScheme',
35
+ id: 'test-concept-scheme-id',
36
+ version: 1,
37
+ createdAt: '2023-01-01T00:00:00Z',
38
+ updatedAt: '2023-01-01T00:00:00Z',
39
+ createdBy: {
40
+ sys: {
41
+ type: 'Link',
42
+ linkType: 'User',
43
+ id: 'user-id',
44
+ },
45
+ },
46
+ updatedBy: {
47
+ sys: {
48
+ type: 'Link',
49
+ linkType: 'User',
50
+ id: 'user-id',
51
+ },
52
+ },
53
+ },
54
+ prefLabel: {
55
+ 'en-US': 'Test Concept Scheme',
56
+ },
57
+ uri: null,
58
+ definition: null,
59
+ editorialNote: null,
60
+ historyNote: null,
61
+ example: null,
62
+ note: null,
63
+ scopeNote: null,
64
+ topConcepts: [],
65
+ };
66
+ export const testConceptScheme1 = {
67
+ sys: {
68
+ type: 'TaxonomyConceptScheme',
69
+ id: 'concept-scheme-1',
70
+ version: 1,
71
+ createdAt: '2023-01-01T00:00:00Z',
72
+ updatedAt: '2023-01-01T00:00:00Z',
73
+ },
74
+ prefLabel: {
75
+ 'en-US': 'First Concept Scheme',
76
+ },
77
+ uri: null,
78
+ definition: {
79
+ 'en-US': 'First concept scheme for testing',
80
+ },
81
+ topConcepts: [],
82
+ };
83
+ export const testConceptScheme2 = {
84
+ sys: {
85
+ type: 'TaxonomyConceptScheme',
86
+ id: 'concept-scheme-2',
87
+ version: 2,
88
+ createdAt: '2023-01-02T00:00:00Z',
89
+ updatedAt: '2023-01-02T00:00:00Z',
90
+ },
91
+ prefLabel: {
92
+ 'en-US': 'Second Concept Scheme',
93
+ },
94
+ uri: 'https://example.com/schemes/second',
95
+ definition: {
96
+ 'en-US': 'Second concept scheme for testing',
97
+ },
98
+ topConcepts: [
99
+ {
100
+ sys: {
101
+ type: 'Link',
102
+ linkType: 'TaxonomyConcept',
103
+ id: 'concept-1',
104
+ },
105
+ },
106
+ ],
107
+ };
108
+ export const testUpdatedConceptScheme = {
109
+ sys: {
110
+ type: 'TaxonomyConceptScheme',
111
+ id: 'test-concept-scheme-id',
112
+ version: 2,
113
+ createdAt: '2023-01-01T00:00:00Z',
114
+ updatedAt: '2023-01-01T12:00:00Z',
115
+ createdBy: {
116
+ sys: {
117
+ type: 'Link',
118
+ linkType: 'User',
119
+ id: 'user-id',
120
+ },
121
+ },
122
+ updatedBy: {
123
+ sys: {
124
+ type: 'Link',
125
+ linkType: 'User',
126
+ id: 'user-id',
127
+ },
128
+ },
129
+ },
130
+ prefLabel: {
131
+ 'en-US': 'Updated Test Concept Scheme',
132
+ },
133
+ uri: 'https://example.com/updated',
134
+ definition: {
135
+ 'en-US': 'Updated definition',
136
+ },
137
+ editorialNote: null,
138
+ historyNote: null,
139
+ example: null,
140
+ note: null,
141
+ scopeNote: null,
142
+ topConcepts: [],
143
+ };
144
+ export const mockArgs = {
145
+ organizationId: 'test-org-id',
146
+ };
147
+ //# sourceMappingURL=mockClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockClient.js","sourceRoot":"","sources":["../../../../src/tools/taxonomies/concept-schemes/mockClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { createConceptSchemeTool, CreateConceptSchemeToolParams, } from './createConceptScheme.js';
2
+ import { getConceptSchemeTool, GetConceptSchemeToolParams, } from './getConceptScheme.js';
3
+ import { listConceptSchemesTool, ListConceptSchemesToolParams, } from './listConceptSchemes.js';
4
+ import { updateConceptSchemeTool, UpdateConceptSchemeToolParams, } from './updateConceptScheme.js';
5
+ import { deleteConceptSchemeTool, DeleteConceptSchemeToolParams, } from './deleteConceptScheme.js';
6
+ export function registerConceptSchemesTools(server) {
7
+ server.tool('create_concept_scheme', 'Create a new taxonomy concept scheme in Contentful. Concept schemes organize related concepts and provide hierarchical structure for taxonomy management. The prefLabel is required and should be localized. You can optionally provide a conceptSchemeId for a user-defined ID, or let Contentful generate one automatically. You can also include definitions, notes, and references to top-level concepts.', CreateConceptSchemeToolParams.shape, createConceptSchemeTool);
8
+ server.tool('get_concept_scheme', 'Retrieve a specific taxonomy concept scheme from Contentful. Returns the complete concept scheme with all its properties including prefLabel, definition, topConcepts, and other metadata.', GetConceptSchemeToolParams.shape, getConceptSchemeTool);
9
+ server.tool('list_concept_schemes', 'List taxonomy concept schemes in a Contentful organization. Supports pagination and filtering options. Returns a summarized view of concept schemes with essential information.', ListConceptSchemesToolParams.shape, listConceptSchemesTool);
10
+ server.tool('update_concept_scheme', 'Update a taxonomy concept scheme in Contentful. Requires the concept scheme ID and version number for optimistic concurrency control. You can update any combination of fields - only the fields you provide will be changed, while others remain unchanged. Use this to modify labels, definitions, relationships, and other concept scheme properties.', UpdateConceptSchemeToolParams.shape, updateConceptSchemeTool);
11
+ server.tool('delete_concept_scheme', 'Delete a taxonomy concept scheme from Contentful. Requires the concept scheme ID and version number for optimistic concurrency control. This operation permanently removes the concept scheme and cannot be undone.', DeleteConceptSchemeToolParams.shape, deleteConceptSchemeTool);
12
+ }
13
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../../src/tools/taxonomies/concept-schemes/register.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAElC,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,+YAA+Y,EAC/Y,6BAA6B,CAAC,KAAK,EACnC,uBAAuB,CACxB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,4LAA4L,EAC5L,0BAA0B,CAAC,KAAK,EAChC,oBAAoB,CACrB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,iLAAiL,EACjL,4BAA4B,CAAC,KAAK,EAClC,sBAAsB,CACvB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,0VAA0V,EAC1V,6BAA6B,CAAC,KAAK,EACnC,uBAAuB,CACxB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,qNAAqN,EACrN,6BAA6B,CAAC,KAAK,EACnC,uBAAuB,CACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { z } from 'zod';
2
+ import { createSuccessResponse, withErrorHandling, } from '../../../utils/response.js';
3
+ import { createToolClient } from '../../../utils/tools.js';
4
+ import { TaxonomyConceptLinkSchema } from '../../../types/conceptPayloadTypes.js';
5
+ export const UpdateConceptSchemeToolParams = z.object({
6
+ organizationId: z.string().describe('The ID of the Contentful organization'),
7
+ conceptSchemeId: z
8
+ .string()
9
+ .describe('The ID of the concept scheme to update'),
10
+ version: z.number().describe('The current version of the concept scheme'),
11
+ prefLabel: z
12
+ .record(z.string())
13
+ .optional()
14
+ .describe('The preferred label for the concept scheme (localized)'),
15
+ uri: z
16
+ .string()
17
+ .nullable()
18
+ .optional()
19
+ .describe('The URI for the concept scheme'),
20
+ definition: z
21
+ .record(z.string().nullable())
22
+ .optional()
23
+ .describe('Definition of the concept scheme (localized)'),
24
+ editorialNote: z
25
+ .record(z.string().nullable())
26
+ .optional()
27
+ .describe('Editorial note for the concept scheme (localized)'),
28
+ historyNote: z
29
+ .record(z.string().nullable())
30
+ .optional()
31
+ .describe('History note for the concept scheme (localized)'),
32
+ example: z
33
+ .record(z.string().nullable())
34
+ .optional()
35
+ .describe('Example for the concept scheme (localized)'),
36
+ note: z
37
+ .record(z.string().nullable())
38
+ .optional()
39
+ .describe('General note for the concept scheme (localized)'),
40
+ scopeNote: z
41
+ .record(z.string().nullable())
42
+ .optional()
43
+ .describe('Scope note for the concept scheme (localized)'),
44
+ topConcepts: z
45
+ .array(TaxonomyConceptLinkSchema)
46
+ .optional()
47
+ .describe('Links to top-level concepts in this scheme'),
48
+ });
49
+ async function tool(args) {
50
+ const contentfulClient = createToolClient({
51
+ spaceId: 'dummy', // Not needed for concept scheme operations but required by BaseToolSchema
52
+ environmentId: 'dummy', // Not needed for concept scheme operations but required by BaseToolSchema
53
+ });
54
+ const params = {
55
+ organizationId: args.organizationId,
56
+ conceptSchemeId: args.conceptSchemeId,
57
+ };
58
+ // Build JSON Patch operations for the fields that were provided
59
+ const fieldMappings = {
60
+ prefLabel: '/prefLabel',
61
+ definition: '/definition',
62
+ editorialNote: '/editorialNote',
63
+ historyNote: '/historyNote',
64
+ example: '/example',
65
+ note: '/note',
66
+ scopeNote: '/scopeNote',
67
+ topConcepts: '/topConcepts',
68
+ };
69
+ const patchOperations = [];
70
+ // Handle regular fields with replace operation
71
+ Object.entries(fieldMappings).forEach(([field, path]) => {
72
+ const value = args[field];
73
+ if (value !== undefined) {
74
+ patchOperations.push({
75
+ op: 'replace',
76
+ path,
77
+ value,
78
+ });
79
+ }
80
+ });
81
+ // Handle URI field specially (can be removed when null)
82
+ if (args.uri !== undefined) {
83
+ patchOperations.push({
84
+ op: args.uri === null ? 'remove' : 'replace',
85
+ path: '/uri',
86
+ ...(args.uri !== null && { value: args.uri }),
87
+ });
88
+ }
89
+ // Update the concept scheme using JSON Patch
90
+ const updatedConceptScheme = await contentfulClient.conceptScheme.update({
91
+ ...params,
92
+ version: args.version,
93
+ }, patchOperations);
94
+ return createSuccessResponse('Concept scheme updated successfully', {
95
+ updatedConceptScheme,
96
+ });
97
+ }
98
+ export const updateConceptSchemeTool = withErrorHandling(tool, 'Error updating concept scheme');
99
+ //# sourceMappingURL=updateConceptScheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateConceptScheme.js","sourceRoot":"","sources":["../../../../src/tools/taxonomies/concept-schemes/updateConceptScheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAElF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAC5E,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,CAAC,wCAAwC,CAAC;IACrD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACzE,SAAS,EAAE,CAAC;SACT,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SAClB,QAAQ,EAAE;SACV,QAAQ,CAAC,wDAAwD,CAAC;IACrE,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,gCAAgC,CAAC;IAC7C,UAAU,EAAE,CAAC;SACV,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;SAC7B,QAAQ,EAAE;SACV,QAAQ,CAAC,8CAA8C,CAAC;IAC3D,aAAa,EAAE,CAAC;SACb,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;SAC7B,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;IAChE,WAAW,EAAE,CAAC;SACX,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;SAC7B,QAAQ,EAAE;SACV,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,OAAO,EAAE,CAAC;SACP,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;SAC7B,QAAQ,EAAE;SACV,QAAQ,CAAC,4CAA4C,CAAC;IACzD,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;SAC7B,QAAQ,EAAE;SACV,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,SAAS,EAAE,CAAC;SACT,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;SAC7B,QAAQ,EAAE;SACV,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,yBAAyB,CAAC;SAChC,QAAQ,EAAE;SACV,QAAQ,CAAC,4CAA4C,CAAC;CAC1D,CAAC,CAAC;AAIH,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;QACxC,OAAO,EAAE,OAAO,EAAE,0EAA0E;QAC5F,aAAa,EAAE,OAAO,EAAE,0EAA0E;KACnG,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG;QACb,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC;IAEF,gEAAgE;IAChE,MAAM,aAAa,GAAG;QACpB,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,aAAa;QACzB,aAAa,EAAE,gBAAgB;QAC/B,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,YAAY;QACvB,WAAW,EAAE,cAAc;KACnB,CAAC;IAEX,MAAM,eAAe,GAIhB,EAAE,CAAC;IAER,+CAA+C;IAC/C,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAmC,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,eAAe,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,SAAS;gBACb,IAAI;gBACJ,KAAK;aACN,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,wDAAwD;IACxD,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC3B,eAAe,CAAC,IAAI,CAAC;YACnB,EAAE,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC5C,IAAI,EAAE,MAAM;YACZ,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,6CAA6C;IAC7C,MAAM,oBAAoB,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,MAAM,CACtE;QACE,GAAG,MAAM;QACT,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,EACD,eAAe,CAChB,CAAC;IAEF,OAAO,qBAAqB,CAAC,qCAAqC,EAAE;QAClE,oBAAoB;KACrB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CACtD,IAAI,EACJ,+BAA+B,CAChC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { registerConceptSchemesTools } from './concept-schemes/register.js';
2
+ export function registerTaxonomyTools(server) {
3
+ registerConceptSchemesTools(server);
4
+ }
5
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/tools/taxonomies/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,2BAA2B,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Shared type definitions for taxonomy concept and concept scheme payloads
3
+ * Used across create, update, and other taxonomy operations
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * Schema for taxonomy concept link validation
8
+ * Used for broader and related concept relationships
9
+ */
10
+ export const TaxonomyConceptLinkSchema = z.object({
11
+ sys: z.object({
12
+ type: z.literal('Link'),
13
+ linkType: z.literal('TaxonomyConcept'),
14
+ id: z.string(),
15
+ }),
16
+ });
17
+ //# sourceMappingURL=conceptPayloadTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conceptPayloadTypes.js","sourceRoot":"","sources":["../../src/types/conceptPayloadTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;QACZ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;QACtC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;KACf,CAAC;CACH,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Shared query schema for entries - used by searchEntries, exportSpace, etc.
4
+ */
5
+ export const EntryQuerySchema = z.object({
6
+ content_type: z.string().optional().describe('Filter by content type'),
7
+ include: z
8
+ .number()
9
+ .optional()
10
+ .describe('Include this many levels of linked entries'),
11
+ select: z
12
+ .string()
13
+ .optional()
14
+ .describe('Comma-separated list of fields to return'),
15
+ links_to_entry: z
16
+ .string()
17
+ .optional()
18
+ .describe('Find entries that link to the specified entry ID'),
19
+ limit: z.number().optional().describe('Maximum number of entries to return'),
20
+ skip: z.number().optional().describe('Skip this many entries'),
21
+ order: z.string().optional().describe('Order entries by this field'),
22
+ });
23
+ /**
24
+ * Shared query schema for assets - used by listAssets, exportSpace, etc.
25
+ */
26
+ export const AssetQuerySchema = z.object({
27
+ mimetype_group: z.string().optional().describe('Filter by MIME type group'),
28
+ select: z
29
+ .string()
30
+ .optional()
31
+ .describe('Comma-separated list of fields to return'),
32
+ limit: z.number().optional().describe('Maximum number of assets to return'),
33
+ skip: z.number().optional().describe('Skip this many assets'),
34
+ order: z.string().optional().describe('Order assets by this field'),
35
+ });
36
+ //# sourceMappingURL=querySchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"querySchema.js","sourceRoot":"","sources":["../../src/types/querySchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACtE,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4CAA4C,CAAC;IACzD,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC5E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC9D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;CACrE,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IAC3E,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC3E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACpE,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/mcp-server",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/contentful/contentful-mcp-server"
@@ -35,7 +35,9 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@modelcontextprotocol/sdk": "^1.17.0",
38
+ "contentful-export": "^7.21.78",
38
39
  "contentful-management": "^11.54.3",
40
+ "contentful-import": "^9.4.111",
39
41
  "dotenv": "^16.4.7",
40
42
  "fast-xml-parser": "^5.2.5",
41
43
  "get-it": "^8.6.10",
@@ -50,7 +52,8 @@
50
52
  "@modelcontextprotocol/inspector": "0.16.2",
51
53
  "@nx/js": "^21.3.6",
52
54
  "@types/node": "^22.16.5",
53
- "@typescript-eslint/eslint-plugin": "^8.38.0",
55
+ "@typescript-eslint/eslint-plugin": "^8.42.0",
56
+ "eslint": "^9.35.0",
54
57
  "eslint-plugin-simple-import-sort": "^12.1.1",
55
58
  "eslint-plugin-unused-imports": "^4.1.4",
56
59
  "husky": "^9.1.7",