@contentful/mcp-server 1.5.0 → 1.6.1

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.
@@ -9,6 +9,7 @@ import { registerAiActionsTools } from './ai-actions/register.js';
9
9
  import { registerLocaleTools } from './locales/register.js';
10
10
  import { registerJobs } from './jobs/register.js';
11
11
  import { registerOrgTools } from './orgs/register.js';
12
+ import { registerTaxonomyTools } from './taxonomies/register.js';
12
13
  export function registerAllTools(server) {
13
14
  registerContextTools(server);
14
15
  registerEntriesTools(server);
@@ -21,5 +22,6 @@ export function registerAllTools(server) {
21
22
  registerLocaleTools(server);
22
23
  registerJobs(server);
23
24
  registerOrgTools(server);
25
+ registerTaxonomyTools(server);
24
26
  }
25
27
  //# sourceMappingURL=register.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,78 @@
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 CreateConceptSchemeToolParams = z.object({
6
+ organizationId: z.string().describe('The ID of the Contentful organization'),
7
+ conceptSchemeId: z
8
+ .string()
9
+ .optional()
10
+ .describe('Optional user-defined ID for the concept scheme. If not provided, Contentful will generate one automatically.'),
11
+ prefLabel: z
12
+ .record(z.string())
13
+ .describe('The preferred label for the concept scheme (localized)'),
14
+ uri: z
15
+ .string()
16
+ .nullable()
17
+ .optional()
18
+ .describe('The URI for the concept scheme'),
19
+ definition: z
20
+ .record(z.string().nullable())
21
+ .optional()
22
+ .describe('Definition of the concept scheme (localized)'),
23
+ editorialNote: z
24
+ .record(z.string().nullable())
25
+ .optional()
26
+ .describe('Editorial note for the concept scheme (localized)'),
27
+ historyNote: z
28
+ .record(z.string().nullable())
29
+ .optional()
30
+ .describe('History note for the concept scheme (localized)'),
31
+ example: z
32
+ .record(z.string().nullable())
33
+ .optional()
34
+ .describe('Example for the concept scheme (localized)'),
35
+ note: z
36
+ .record(z.string().nullable())
37
+ .optional()
38
+ .describe('General note for the concept scheme (localized)'),
39
+ scopeNote: z
40
+ .record(z.string().nullable())
41
+ .optional()
42
+ .describe('Scope note for the concept scheme (localized)'),
43
+ topConcepts: z
44
+ .array(TaxonomyConceptLinkSchema)
45
+ .optional()
46
+ .describe('Links to top-level concepts in this scheme'),
47
+ });
48
+ async function tool(args) {
49
+ const contentfulClient = createToolClient({
50
+ spaceId: 'dummy', // Not needed for concept scheme creation but required by BaseToolSchema
51
+ environmentId: 'dummy', // Not needed for concept scheme creation but required by BaseToolSchema
52
+ });
53
+ // Build the concept scheme payload by filtering out undefined values
54
+ const conceptSchemePayload = {
55
+ prefLabel: args.prefLabel,
56
+ ...Object.fromEntries(Object.entries({
57
+ uri: args.uri,
58
+ definition: args.definition,
59
+ editorialNote: args.editorialNote,
60
+ historyNote: args.historyNote,
61
+ example: args.example,
62
+ note: args.note,
63
+ scopeNote: args.scopeNote,
64
+ topConcepts: args.topConcepts,
65
+ }).filter(([, value]) => value !== undefined)),
66
+ };
67
+ const newConceptScheme = args.conceptSchemeId
68
+ ? await contentfulClient.conceptScheme.createWithId({
69
+ organizationId: args.organizationId,
70
+ conceptSchemeId: args.conceptSchemeId,
71
+ }, conceptSchemePayload)
72
+ : await contentfulClient.conceptScheme.create({ organizationId: args.organizationId }, conceptSchemePayload);
73
+ return createSuccessResponse('Concept scheme created successfully', {
74
+ newConceptScheme,
75
+ });
76
+ }
77
+ export const createConceptSchemeTool = withErrorHandling(tool, 'Error creating concept scheme');
78
+ //# sourceMappingURL=createConceptScheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createConceptScheme.js","sourceRoot":"","sources":["../../../../src/tools/taxonomies/concept-schemes/createConceptScheme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ import { createSuccessResponse, withErrorHandling, } from '../../../utils/response.js';
3
+ import { createToolClient } from '../../../utils/tools.js';
4
+ export const DeleteConceptSchemeToolParams = z.object({
5
+ organizationId: z.string().describe('The ID of the Contentful organization'),
6
+ conceptSchemeId: z
7
+ .string()
8
+ .describe('The ID of the concept scheme to delete'),
9
+ version: z.number().describe('The version of the concept scheme to delete'),
10
+ });
11
+ async function tool(args) {
12
+ const contentfulClient = createToolClient({
13
+ spaceId: 'dummy', // Not needed for concept scheme deletion but required by BaseToolSchema
14
+ environmentId: 'dummy', // Not needed for concept scheme deletion but required by BaseToolSchema
15
+ });
16
+ // Delete the concept scheme
17
+ await contentfulClient.conceptScheme.delete({
18
+ organizationId: args.organizationId,
19
+ conceptSchemeId: args.conceptSchemeId,
20
+ version: args.version,
21
+ });
22
+ return createSuccessResponse('Concept scheme deleted successfully', {
23
+ conceptSchemeId: args.conceptSchemeId,
24
+ });
25
+ }
26
+ export const deleteConceptSchemeTool = withErrorHandling(tool, 'Error deleting concept scheme');
27
+ //# sourceMappingURL=deleteConceptScheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteConceptScheme.js","sourceRoot":"","sources":["../../../../src/tools/taxonomies/concept-schemes/deleteConceptScheme.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;AAE3D,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,6CAA6C,CAAC;CAC5E,CAAC,CAAC;AAIH,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;QACxC,OAAO,EAAE,OAAO,EAAE,wEAAwE;QAC1F,aAAa,EAAE,OAAO,EAAE,wEAAwE;KACjG,CAAC,CAAC;IAEH,4BAA4B;IAC5B,MAAM,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC;QAC1C,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;IAEH,OAAO,qBAAqB,CAAC,qCAAqC,EAAE;QAClE,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CACtD,IAAI,EACJ,+BAA+B,CAChC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import { createSuccessResponse, withErrorHandling, } from '../../../utils/response.js';
3
+ import { createToolClient } from '../../../utils/tools.js';
4
+ export const GetConceptSchemeToolParams = z.object({
5
+ organizationId: z.string().describe('The ID of the Contentful organization'),
6
+ conceptSchemeId: z
7
+ .string()
8
+ .describe('The ID of the concept scheme to retrieve'),
9
+ });
10
+ async function tool(args) {
11
+ const contentfulClient = createToolClient({
12
+ spaceId: 'dummy', // Not needed for concept scheme operations but required by BaseToolSchema
13
+ environmentId: 'dummy', // Not needed for concept scheme operations but required by BaseToolSchema
14
+ });
15
+ const params = {
16
+ organizationId: args.organizationId,
17
+ conceptSchemeId: args.conceptSchemeId,
18
+ };
19
+ // Get the concept scheme
20
+ const conceptScheme = await contentfulClient.conceptScheme.get(params);
21
+ return createSuccessResponse('Concept scheme retrieved successfully', {
22
+ conceptScheme,
23
+ });
24
+ }
25
+ export const getConceptSchemeTool = withErrorHandling(tool, 'Error retrieving concept scheme');
26
+ //# sourceMappingURL=getConceptScheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getConceptScheme.js","sourceRoot":"","sources":["../../../../src/tools/taxonomies/concept-schemes/getConceptScheme.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;AAE3D,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAC5E,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,CAAC,0CAA0C,CAAC;CACxD,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,yBAAyB;IACzB,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvE,OAAO,qBAAqB,CAAC,uCAAuC,EAAE;QACpE,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CACnD,IAAI,EACJ,iCAAiC,CAClC,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { z } from 'zod';
2
+ import { createSuccessResponse, withErrorHandling, } from '../../../utils/response.js';
3
+ import { createToolClient } from '../../../utils/tools.js';
4
+ import { summarizeData } from '../../../utils/summarizer.js';
5
+ export const ListConceptSchemesToolParams = z.object({
6
+ organizationId: z.string().describe('The ID of the Contentful organization'),
7
+ limit: z
8
+ .number()
9
+ .optional()
10
+ .describe('Maximum number of concept schemes to return'),
11
+ skip: z
12
+ .number()
13
+ .optional()
14
+ .describe('Skip this many concept schemes for pagination'),
15
+ select: z
16
+ .string()
17
+ .optional()
18
+ .describe('Comma-separated list of fields to return'),
19
+ include: z
20
+ .number()
21
+ .optional()
22
+ .describe('Include this many levels of linked entries'),
23
+ order: z.string().optional().describe('Order concept schemes by this field'),
24
+ });
25
+ async function tool(args) {
26
+ const contentfulClient = createToolClient({
27
+ spaceId: 'dummy', // Not needed for concept scheme operations but required by BaseToolSchema
28
+ environmentId: 'dummy', // Not needed for concept scheme operations but required by BaseToolSchema
29
+ });
30
+ const conceptSchemes = await contentfulClient.conceptScheme.getMany({
31
+ organizationId: args.organizationId,
32
+ query: {
33
+ limit: args.limit || 10,
34
+ skip: args.skip || 0,
35
+ ...(args.select && { select: args.select }),
36
+ ...(args.include && { include: args.include }),
37
+ ...(args.order && { order: args.order }),
38
+ },
39
+ });
40
+ const summarizedConceptSchemes = conceptSchemes.items.map((conceptScheme) => ({
41
+ id: conceptScheme.sys.id,
42
+ prefLabel: conceptScheme.prefLabel || {},
43
+ uri: conceptScheme.uri || null,
44
+ definition: conceptScheme.definition || null,
45
+ topConcepts: conceptScheme.topConcepts || [],
46
+ createdAt: conceptScheme.sys.createdAt,
47
+ updatedAt: conceptScheme.sys.updatedAt,
48
+ version: conceptScheme.sys.version,
49
+ }));
50
+ const summarized = summarizeData({
51
+ ...conceptSchemes,
52
+ items: summarizedConceptSchemes,
53
+ }, {
54
+ maxItems: 10,
55
+ remainingMessage: 'To see more concept schemes, please ask me to retrieve the next page using the skip parameter.',
56
+ });
57
+ return createSuccessResponse('Concept schemes retrieved successfully', {
58
+ conceptSchemes: summarized,
59
+ total: conceptSchemes.total ||
60
+ conceptSchemes.items.length,
61
+ limit: conceptSchemes.limit || args.limit || 10,
62
+ skip: conceptSchemes.skip || args.skip || 0,
63
+ });
64
+ }
65
+ export const listConceptSchemesTool = withErrorHandling(tool, 'Error listing concept schemes');
66
+ //# sourceMappingURL=listConceptSchemes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listConceptSchemes.js","sourceRoot":"","sources":["../../../../src/tools/taxonomies/concept-schemes/listConceptSchemes.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/mcp-server",
3
- "version": "1.5.0",
3
+ "version": "1.6.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/contentful/contentful-mcp-server"