@contentful/mcp-server 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -44,7 +44,7 @@ This MCP server provides a comprehensive set of tools for content management, al
44
44
 
45
45
  #### One-Click install
46
46
 
47
- [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=contentful-mcp&config=eyJjb21tYW5kIjoibnB4IC15IEBjb250ZW50ZnVsL21jcC1zZXJ2ZXIiLCJlbnYiOnsiQ09OVEVOVEZVTF9NQU5BR0VNRU5UX0FDQ0VTU19UT0tFTiI6InlvdXItQ01BLXRva2VuIiwiU1BBQ0VfSUQiOiJ5b3VyLXNwYWNlLWlkIiwiRU5WSVJPTk1FTlRfSUQiOiJtYXN0ZXIiLCJDT05URU5URlVMX0hPU1QiOiJhcGkuY29udGVudGZ1bC5jb20iLCJOT0RFX0VOViI6InByb2R1Y3Rpb24ifX0%3D)
47
+ [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=contentful-mcp&config=eyJjb21tYW5kIjoibnB4IC15IEBjb250ZW50ZnVsL21jcC1zZXJ2ZXIiLCJlbnYiOnsiQ09OVEVOVEZVTF9NQU5BR0VNRU5UX0FDQ0VTU19UT0tFTiI6InlvdXItQ01BLXRva2VuIiwiU1BBQ0VfSUQiOiJ5b3VyLXNwYWNlLWlkIiwiRU5WSVJPTk1FTlRfSUQiOiJtYXN0ZXIiLCJDT05URU5URlVMX0hPU1QiOiJhcGkuY29udGVudGZ1bC5jb20ifX0%3D)
48
48
 
49
49
  _Note: This requires [Cursor](https://cursor.com/) to be installed. If the link doesn't work, try the manual installation below._
50
50
 
@@ -17,6 +17,7 @@ const EnvSchema = z.object({
17
17
  .optional()
18
18
  .default('master')
19
19
  .describe('Contentful environment ID'),
20
+ ORGANIZATION_ID: z.string().optional().describe('Contentful organization ID'),
20
21
  });
21
22
  export const env = EnvSchema.safeParse(process.env);
22
23
  if (!env.success && process.env.TEST_TYPE !== 'unit') {
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,kCAAkC,EAAE,CAAC;SAClC,MAAM,EAAE;SACR,QAAQ,CAAC,sBAAsB,CAAC;IACnC,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,oBAAoB,CAAC;SAC7B,QAAQ,CAAC,qBAAqB,CAAC;IAElC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC3D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/D,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,2BAA2B,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEpD,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;IACrD,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,kCAAkC,EAAE,CAAC;SAClC,MAAM,EAAE;SACR,QAAQ,CAAC,sBAAsB,CAAC;IACnC,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,oBAAoB,CAAC;SAC7B,QAAQ,CAAC,qBAAqB,CAAC;IAElC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC3D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/D,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,2BAA2B,CAAC;IACxC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CAC9E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEpD,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;IACrD,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -2,6 +2,7 @@ import { z } from 'zod';
2
2
  import { createSuccessResponse, withErrorHandling, } from '../../utils/response.js';
3
3
  import { BaseToolSchema, createToolClient } from '../../utils/tools.js';
4
4
  import { FieldSchema } from '../../types/fieldSchema.js';
5
+ import { ContentTypeMetadataSchema } from '../../types/taxonomySchema.js';
5
6
  export const CreateContentTypeToolParams = BaseToolSchema.extend({
6
7
  name: z.string().describe('The name of the content type'),
7
8
  displayField: z.string().describe('The field ID to use as the display field'),
@@ -16,6 +17,7 @@ export const CreateContentTypeToolParams = BaseToolSchema.extend({
16
17
  fields: z
17
18
  .array(FieldSchema)
18
19
  .describe('Array of field definitions for the content type'),
20
+ metadata: ContentTypeMetadataSchema,
19
21
  });
20
22
  async function tool(args) {
21
23
  const params = {
@@ -28,6 +30,7 @@ async function tool(args) {
28
30
  displayField: args.displayField,
29
31
  description: args.description,
30
32
  fields: args.fields,
33
+ metadata: args.metadata,
31
34
  };
32
35
  // Create the content type with or without ID
33
36
  const contentType = args.contentTypeId
@@ -1 +1 @@
1
- {"version":3,"file":"createContentType.js","sourceRoot":"","sources":["../../../src/tools/content-types/createContentType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,CAAC,MAAM,2BAA2B,GAAG,cAAc,CAAC,MAAM,CAAC;IAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACzD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC7E,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,6EAA6E,CAC9E;IACH,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,WAAW,CAAC;SAClB,QAAQ,CAAC,iDAAiD,CAAC;CAC/D,CAAC,CAAC;AAIH,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC;IAEF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEhD,MAAM,eAAe,GAAG;QACtB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;IAEF,6CAA6C;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa;QACpC,CAAC,CAAC,MAAM,gBAAgB,CAAC,WAAW,CAAC,YAAY,CAC7C,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAChD,eAAe,CAChB;QACH,CAAC,CAAC,MAAM,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAEvE,OAAO,qBAAqB,CAAC,mCAAmC,EAAE;QAChE,WAAW;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CACpD,IAAI,EACJ,6BAA6B,CAC9B,CAAC"}
1
+ {"version":3,"file":"createContentType.js","sourceRoot":"","sources":["../../../src/tools/content-types/createContentType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,MAAM,CAAC,MAAM,2BAA2B,GAAG,cAAc,CAAC,MAAM,CAAC;IAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACzD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC7E,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,6EAA6E,CAC9E;IACH,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,WAAW,CAAC;SAClB,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,QAAQ,EAAE,yBAAyB;CACpC,CAAC,CAAC;AAIH,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC;IAEF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEhD,MAAM,eAAe,GAAG;QACtB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC;IAEF,6CAA6C;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa;QACpC,CAAC,CAAC,MAAM,gBAAgB,CAAC,WAAW,CAAC,YAAY,CAC7C,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAChD,eAAe,CAChB;QACH,CAAC,CAAC,MAAM,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAEvE,OAAO,qBAAqB,CAAC,mCAAmC,EAAE;QAChE,WAAW;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CACpD,IAAI,EACJ,6BAA6B,CAC9B,CAAC"}
@@ -2,6 +2,7 @@ import { z } from 'zod';
2
2
  import { createSuccessResponse, withErrorHandling, } from '../../utils/response.js';
3
3
  import { BaseToolSchema, createToolClient } from '../../utils/tools.js';
4
4
  import { FieldSchema } from '../../types/fieldSchema.js';
5
+ import { ContentTypeMetadataSchema } from '../../types/taxonomySchema.js';
5
6
  export const UpdateContentTypeToolParams = BaseToolSchema.extend({
6
7
  contentTypeId: z.string().describe('The ID of the content type to update'),
7
8
  name: z.string().optional().describe('The name of the content type'),
@@ -17,6 +18,7 @@ export const UpdateContentTypeToolParams = BaseToolSchema.extend({
17
18
  .array(FieldSchema)
18
19
  .optional()
19
20
  .describe('Array of field definitions for the content type. Will be merged with existing fields.'),
21
+ metadata: ContentTypeMetadataSchema,
20
22
  });
21
23
  async function tool(args) {
22
24
  const params = {
@@ -70,6 +72,7 @@ async function tool(args) {
70
72
  description: args.description || currentContentType.description,
71
73
  displayField: args.displayField || currentContentType.displayField,
72
74
  fields: fields,
75
+ metadata: args.metadata || currentContentType.metadata,
73
76
  });
74
77
  return createSuccessResponse('Content type updated successfully', {
75
78
  contentType,
@@ -1 +1 @@
1
- {"version":3,"file":"updateContentType.js","sourceRoot":"","sources":["../../../src/tools/content-types/updateContentType.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updateContentType.js","sourceRoot":"","sources":["../../../src/tools/content-types/updateContentType.ts"],"names":[],"mappings":"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"}
@@ -12,10 +12,12 @@ async function tool(_params) {
12
12
  const config = {
13
13
  space: env.data?.SPACE_ID,
14
14
  environment: env.data?.ENVIRONMENT_ID,
15
+ organization: env.data?.ORGANIZATION_ID,
15
16
  };
16
17
  const configInfo = `Current Contentful Configuration:
17
18
  - Space ID: ${config.space}
18
- - Environment ID: ${config.environment}`;
19
+ - Environment ID: ${config.environment}
20
+ - Organization ID: ${config.organization}`;
19
21
  const todaysDate = new Date().toLocaleDateString('en-US');
20
22
  const message = outdent `
21
23
  ${MCP_INSTRUCTIONS}
@@ -1 +1 @@
1
- {"version":3,"file":"getInitialContextTool.js","sourceRoot":"","sources":["../../../src/tools/context/getInitialContextTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAIxD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,YAAY,CAAC,iBAAiB,EAAE,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,OAAe;IACjC,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ;QACzB,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,cAAc;KACtC,CAAC;IAEF,MAAM,UAAU,GAAG;gBACL,MAAM,CAAC,KAAK;sBACN,MAAM,CAAC,WAAW,EAAE,CAAC;IAEzC,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,OAAO,CAAA;MACnB,gBAAgB;;;;;QAKd,UAAU;;;kBAGA,UAAU;GACzB,CAAC;IAEF,YAAY,CAAC,uBAAuB,EAAE,CAAC;IAEvC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,OAAO;aACd;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CACpD,IAAI,EACJ,+BAA+B,CAChC,CAAC"}
1
+ {"version":3,"file":"getInitialContextTool.js","sourceRoot":"","sources":["../../../src/tools/context/getInitialContextTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAIxD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,YAAY,CAAC,iBAAiB,EAAE,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,OAAe;IACjC,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ;QACzB,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,cAAc;QACrC,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,eAAe;KACxC,CAAC;IAEF,MAAM,UAAU,GAAG;gBACL,MAAM,CAAC,KAAK;sBACN,MAAM,CAAC,WAAW;uBACjB,MAAM,CAAC,YAAY,EAAE,CAAC;IAE3C,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,OAAO,CAAA;MACnB,gBAAgB;;;;;QAKd,UAAU;;;kBAGA,UAAU;GACzB,CAAC;IAEF,YAAY,CAAC,uBAAuB,EAAE,CAAC;IAEvC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,OAAO;aACd;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CACpD,IAAI,EACJ,+BAA+B,CAChC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ import { createSuccessResponse, withErrorHandling, } from '../../utils/response.js';
3
+ import ctfl from 'contentful-management';
4
+ import { getDefaultClientConfig } from '../../config/contentful.js';
5
+ export const GetOrgToolParams = z.object({
6
+ organizationId: z.string().describe('The ID of the organization to retrieve'),
7
+ });
8
+ async function tool(args) {
9
+ // Create a client without space-specific configuration
10
+ const clientConfig = getDefaultClientConfig();
11
+ // Remove space from config since we're working at the organization level
12
+ delete clientConfig.space;
13
+ const contentfulClient = ctfl.createClient(clientConfig, { type: 'plain' });
14
+ // Get the organization
15
+ const organization = await contentfulClient.organization.get({
16
+ organizationId: args.organizationId,
17
+ });
18
+ return createSuccessResponse('Organization retrieved successfully', {
19
+ organization,
20
+ });
21
+ }
22
+ export const getOrgTool = withErrorHandling(tool, 'Error retrieving organization');
23
+ //# sourceMappingURL=getOrg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrg.js","sourceRoot":"","sources":["../../../src/tools/orgs/getOrg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,IAAI,MAAM,uBAAuB,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CAC9E,CAAC,CAAC;AAIH,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,uDAAuD;IACvD,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAC9C,yEAAyE;IACzE,OAAO,YAAY,CAAC,KAAK,CAAC;IAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAE5E,uBAAuB;IACvB,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC;QAC3D,cAAc,EAAE,IAAI,CAAC,cAAc;KACpC,CAAC,CAAC;IAEH,OAAO,qBAAqB,CAAC,qCAAqC,EAAE;QAClE,YAAY;KACb,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CACzC,IAAI,EACJ,+BAA+B,CAChC,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { z } from 'zod';
2
+ import { createSuccessResponse, withErrorHandling, } from '../../utils/response.js';
3
+ import ctfl from 'contentful-management';
4
+ import { getDefaultClientConfig } from '../../config/contentful.js';
5
+ import { summarizeData } from '../../utils/summarizer.js';
6
+ // For listing organizations, we don't need spaceId or environmentId parameters
7
+ export const ListOrgsToolParams = z.object({
8
+ limit: z
9
+ .number()
10
+ .optional()
11
+ .describe('Maximum number of organizations to return (max 10)'),
12
+ skip: z
13
+ .number()
14
+ .optional()
15
+ .describe('Skip this many organizations for pagination'),
16
+ select: z
17
+ .string()
18
+ .optional()
19
+ .describe('Comma-separated list of fields to return'),
20
+ order: z.string().optional().describe('Order organizations by this field'),
21
+ });
22
+ async function tool(args) {
23
+ // Create a client without space-specific configuration for listing all organizations
24
+ const clientConfig = getDefaultClientConfig();
25
+ // Remove space from config since we're listing organizations at the account level
26
+ delete clientConfig.space;
27
+ const contentfulClient = ctfl.createClient(clientConfig, { type: 'plain' });
28
+ const organizations = await contentfulClient.organization.getAll({
29
+ query: {
30
+ limit: Math.min(args.limit || 10, 10),
31
+ skip: args.skip || 0,
32
+ ...(args.select && { select: args.select }),
33
+ ...(args.order && { order: args.order }),
34
+ },
35
+ });
36
+ const summarizedOrganizations = organizations.items.map((org) => ({
37
+ id: org.sys.id,
38
+ name: org.name,
39
+ createdAt: org.sys.createdAt,
40
+ updatedAt: org.sys.updatedAt,
41
+ }));
42
+ const summarized = summarizeData({
43
+ ...organizations,
44
+ items: summarizedOrganizations,
45
+ }, {
46
+ maxItems: 10,
47
+ remainingMessage: 'To see more organizations, please ask me to retrieve the next page using the skip parameter.',
48
+ });
49
+ return createSuccessResponse('Organizations retrieved successfully', {
50
+ organizations: summarized,
51
+ total: organizations.total,
52
+ limit: organizations.limit,
53
+ skip: organizations.skip,
54
+ });
55
+ }
56
+ export const listOrgsTool = withErrorHandling(tool, 'Error listing organizations');
57
+ //# sourceMappingURL=listOrgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listOrgs.js","sourceRoot":"","sources":["../../../src/tools/orgs/listOrgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,IAAI,MAAM,uBAAuB,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACjE,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,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,mCAAmC,CAAC;CAC3E,CAAC,CAAC;AAIH,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,qFAAqF;IACrF,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAC9C,kFAAkF;IAClF,OAAO,YAAY,CAAC,KAAK,CAAC;IAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAE5E,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC;QAC/D,KAAK,EAAE;YACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC;YACrC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SACzC;KACF,CAAC,CAAC;IAEH,MAAM,uBAAuB,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS;QAC5B,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS;KAC7B,CAAC,CAAC,CAAC;IAEJ,MAAM,UAAU,GAAG,aAAa,CAC9B;QACE,GAAG,aAAa;QAChB,KAAK,EAAE,uBAAuB;KAC/B,EACD;QACE,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EACd,8FAA8F;KACjG,CACF,CAAC;IAEF,OAAO,qBAAqB,CAAC,sCAAsC,EAAE;QACnE,aAAa,EAAE,UAAU;QACzB,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,IAAI,EAAE,aAAa,CAAC,IAAI;KACzB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,iBAAiB,CAC3C,IAAI,EACJ,6BAA6B,CAC9B,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { vi } from 'vitest';
2
+ const { mockOrgGet, mockOrgGetAll, mockCreateClient } = vi.hoisted(() => {
3
+ const mockOrgGet = vi.fn();
4
+ const mockOrgGetAll = vi.fn();
5
+ const mockCreateClient = vi.fn(() => ({
6
+ organization: {
7
+ get: mockOrgGet,
8
+ getAll: mockOrgGetAll,
9
+ },
10
+ }));
11
+ return { mockOrgGet, mockOrgGetAll, mockCreateClient };
12
+ });
13
+ vi.mock('contentful-management', () => {
14
+ return {
15
+ default: {
16
+ createClient: mockCreateClient,
17
+ },
18
+ createClient: mockCreateClient,
19
+ };
20
+ });
21
+ export { mockOrgGet, mockOrgGetAll, mockCreateClient };
22
+ export const testOrg = {
23
+ name: 'Test Organization',
24
+ sys: {
25
+ id: 'test-org-id',
26
+ type: 'Organization',
27
+ createdAt: '2025-08-25T10:00:00Z',
28
+ updatedAt: '2025-08-25T10:00:00Z',
29
+ version: 1,
30
+ accessPolicy: {
31
+ sso: false,
32
+ },
33
+ },
34
+ };
35
+ export const mockArgs = {
36
+ organizationId: 'test-org-id',
37
+ };
38
+ //# sourceMappingURL=mockClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockClient.js","sourceRoot":"","sources":["../../../src/tools/orgs/mockClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;IACtE,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAC3B,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAC9B,MAAM,gBAAgB,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,YAAY,EAAE;YACZ,GAAG,EAAE,UAAU;YACf,MAAM,EAAE,aAAa;SACtB;KACF,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACpC,OAAO;QACL,OAAO,EAAE;YACP,YAAY,EAAE,gBAAgB;SAC/B;QACD,YAAY,EAAE,gBAAgB;KAC/B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;AAEvD,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,mBAAmB;IACzB,GAAG,EAAE;QACH,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,sBAAsB;QACjC,SAAS,EAAE,sBAAsB;QACjC,OAAO,EAAE,CAAC;QACV,YAAY,EAAE;YACZ,GAAG,EAAE,KAAK;SACX;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,cAAc,EAAE,aAAa;CAC9B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ListOrgsToolParams, listOrgsTool } from './listOrgs.js';
2
+ import { GetOrgToolParams, getOrgTool } from './getOrg.js';
3
+ export function registerOrgTools(server) {
4
+ server.tool('list_orgs', 'List all organizations that the user has access to', ListOrgsToolParams.shape, listOrgsTool);
5
+ server.tool('get_org', 'Get details of a specific organization', GetOrgToolParams.shape, getOrgTool);
6
+ }
7
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/tools/orgs/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,IAAI,CACT,WAAW,EACX,oDAAoD,EACpD,kBAAkB,CAAC,KAAK,EACxB,YAAY,CACb,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,SAAS,EACT,wCAAwC,EACxC,gBAAgB,CAAC,KAAK,EACtB,UAAU,CACX,CAAC;AACJ,CAAC"}
@@ -7,6 +7,7 @@ import { registerSpaceTools } from './spaces/register.js';
7
7
  import { registerTagsTools } from './tags/register.js';
8
8
  import { registerAiActionsTools } from './ai-actions/register.js';
9
9
  import { registerLocaleTools } from './locales/register.js';
10
+ import { registerOrgTools } from './orgs/register.js';
10
11
  export function registerAllTools(server) {
11
12
  registerContextTools(server);
12
13
  registerEntriesTools(server);
@@ -17,5 +18,6 @@ export function registerAllTools(server) {
17
18
  registerTagsTools(server);
18
19
  registerAiActionsTools(server);
19
20
  registerLocaleTools(server);
21
+ registerOrgTools(server);
20
22
  }
21
23
  //# 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;AAE5D,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;AAC9B,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,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,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Schema for taxonomy concept validation links
4
+ * Matches Contentful's TaxonomyConceptValidationLink type
5
+ */
6
+ export const TaxonomyConceptValidationLinkSchema = z.object({
7
+ sys: z.object({
8
+ type: z.literal('Link'),
9
+ linkType: z.literal('TaxonomyConcept'),
10
+ id: z.string().describe('The ID of the taxonomy concept'),
11
+ }),
12
+ required: z.boolean().optional(),
13
+ });
14
+ /**
15
+ * Schema for taxonomy concept scheme validation links
16
+ * Matches Contentful's TaxonomyConceptSchemeValidationLink type
17
+ */
18
+ export const TaxonomyConceptSchemeValidationLinkSchema = z.object({
19
+ sys: z.object({
20
+ type: z.literal('Link'),
21
+ linkType: z.literal('TaxonomyConceptScheme'),
22
+ id: z.string().describe('The ID of the taxonomy concept scheme'),
23
+ }),
24
+ required: z.boolean().optional(),
25
+ });
26
+ /**
27
+ * Union schema for taxonomy validation links
28
+ * Matches the array type expected by Contentful's ContentTypeMetadata.taxonomy
29
+ */
30
+ export const TaxonomyValidationLinkSchema = z.union([
31
+ TaxonomyConceptValidationLinkSchema,
32
+ TaxonomyConceptSchemeValidationLinkSchema,
33
+ ]);
34
+ /**
35
+ * Schema for content type metadata
36
+ * Matches Contentful's ContentTypeMetadata type structure
37
+ */
38
+ export const ContentTypeMetadataSchema = z
39
+ .object({
40
+ taxonomy: z.array(TaxonomyValidationLinkSchema).optional(),
41
+ })
42
+ .optional();
43
+ //# sourceMappingURL=taxonomySchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taxonomySchema.js","sourceRoot":"","sources":["../../src/types/taxonomySchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1D,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,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC1D,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,CAAC,CAAC,MAAM,CAAC;IAChE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;QACZ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;QAC5C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KACjE,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC;IAClD,mCAAmC;IACnC,yCAAyC;CAC1C,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,QAAQ,EAAE;CAC3D,CAAC;KACD,QAAQ,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/mcp-server",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/contentful/contentful-mcp-server"