@contentful/mcp-tools 0.12.6 → 0.12.7

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/index.d.ts CHANGED
@@ -64,6 +64,8 @@ interface ContentfulConfig {
64
64
  appId?: string;
65
65
  /** Version number to use for MCP tool calls */
66
66
  mcpVersion: string;
67
+ /** Which MCP server surface is issuing the call. Threaded into the client-identifying headers for Datadog attribution. Defaults to 'local' when unset. */
68
+ mcpSource?: 'local' | 'remote';
67
69
  /** Contentful CDA token for exporting only published content */
68
70
  deliveryToken?: string;
69
71
  /** Contentful Delivery API host (used with deliveryToken for custom CDA endpoints) */
package/dist/index.js CHANGED
@@ -60,23 +60,34 @@ var BaseToolSchema = z.object({
60
60
  spaceId: z.string().describe("The ID of the Contentful space"),
61
61
  environmentId: z.string().describe("The ID of the Contentful environment")
62
62
  });
63
- function createToolClient(config, params) {
63
+ function buildUserAgentToolValue(config, options) {
64
+ const source = config.mcpSource ?? "local";
65
+ return `contentful-mcp${options?.exo ? "-exo" : ""}/${source}-${config.mcpVersion}`;
66
+ }
67
+ function createToolClient(config, params, options) {
68
+ const userAgentTool = buildUserAgentToolValue(config, options);
64
69
  const clientConfig = {
65
70
  accessToken: config.accessToken,
66
71
  host: config.host ?? "api.contentful.com",
67
72
  space: params.spaceId ?? config.spaceId,
68
73
  headers: {
69
- "X-Contentful-User-Agent-Tool": `contentful-mcp/${config.mcpVersion}`
74
+ "X-Contentful-User-Agent-Tool": userAgentTool,
75
+ "User-Agent": userAgentTool
70
76
  }
71
77
  };
72
78
  return createClient(clientConfig);
73
79
  }
80
+ function createExoToolClient(config, params) {
81
+ return createToolClient(config, params, { exo: true });
82
+ }
74
83
  function createClientConfig(config) {
84
+ const userAgentTool = buildUserAgentToolValue(config);
75
85
  const clientConfig = {
76
86
  accessToken: config.accessToken,
77
87
  host: config.host ?? "api.contentful.com",
78
88
  headers: {
79
- "X-Contentful-User-Agent-Tool": `contentful-mcp/${config.mcpVersion}`
89
+ "X-Contentful-User-Agent-Tool": userAgentTool,
90
+ "User-Agent": userAgentTool
80
91
  }
81
92
  };
82
93
  return clientConfig;
@@ -5832,7 +5843,7 @@ var GetComponentToolParams = BaseToolSchema.extend({
5832
5843
  });
5833
5844
  function getComponentTool(config) {
5834
5845
  async function tool2(args) {
5835
- const contentfulClient = createToolClient(config, args);
5846
+ const contentfulClient = createExoToolClient(config, args);
5836
5847
  const component = await contentfulClient.component.get({
5837
5848
  spaceId: args.spaceId,
5838
5849
  environmentId: args.environmentId,
@@ -5855,7 +5866,7 @@ var ListComponentsToolParams = BaseToolSchema.extend({
5855
5866
  });
5856
5867
  function listComponentsTool(config) {
5857
5868
  async function tool2(args) {
5858
- const contentfulClient = createToolClient(config, args);
5869
+ const contentfulClient = createExoToolClient(config, args);
5859
5870
  const cursorParam = args.pageNext ? { pageNext: args.pageNext } : args.pagePrev ? { pagePrev: args.pagePrev } : {};
5860
5871
  const components = await contentfulClient.component.getMany({
5861
5872
  spaceId: args.spaceId,
@@ -6190,7 +6201,7 @@ function createComponentTool(config) {
6190
6201
  args.environmentId,
6191
6202
  config.protectedEnvironments
6192
6203
  );
6193
- const contentfulClient = createToolClient(config, args);
6204
+ const contentfulClient = createExoToolClient(config, args);
6194
6205
  const component = await contentfulClient.component.create(
6195
6206
  { spaceId: args.spaceId, environmentId: args.environmentId },
6196
6207
  {
@@ -6240,7 +6251,7 @@ function upsertComponentTool(config) {
6240
6251
  environmentId: args.environmentId,
6241
6252
  componentId: args.componentId
6242
6253
  };
6243
- const contentfulClient = createToolClient(config, args);
6254
+ const contentfulClient = createExoToolClient(config, args);
6244
6255
  const current = await contentfulClient.component.get(params);
6245
6256
  if (args.version !== current.sys.version) {
6246
6257
  throw new Error(
@@ -6292,7 +6303,7 @@ function deleteComponentTool(config) {
6292
6303
  environmentId: args.environmentId,
6293
6304
  componentId: args.componentId
6294
6305
  };
6295
- const contentfulClient = createToolClient(config, args);
6306
+ const contentfulClient = createExoToolClient(config, args);
6296
6307
  const component = await contentfulClient.component.get(params);
6297
6308
  const expectedToken = buildConfirmToken(
6298
6309
  "component",
@@ -6337,7 +6348,7 @@ function publishComponentTool(config) {
6337
6348
  environmentId: args.environmentId,
6338
6349
  componentId: args.componentId
6339
6350
  };
6340
- const contentfulClient = createToolClient(config, args);
6351
+ const contentfulClient = createExoToolClient(config, args);
6341
6352
  const current = await contentfulClient.component.get(params);
6342
6353
  if (args.version !== current.sys.version) {
6343
6354
  throw new Error(
@@ -6374,7 +6385,7 @@ function unpublishComponentTool(config) {
6374
6385
  environmentId: args.environmentId,
6375
6386
  componentId: args.componentId
6376
6387
  };
6377
- const contentfulClient = createToolClient(config, args);
6388
+ const contentfulClient = createExoToolClient(config, args);
6378
6389
  const current = await contentfulClient.component.get(params);
6379
6390
  if (args.version !== current.sys.version) {
6380
6391
  throw new Error(
@@ -6494,7 +6505,7 @@ var GetExperienceFragmentToolParams = BaseToolSchema.extend({
6494
6505
  });
6495
6506
  function getExperienceFragmentTool(config) {
6496
6507
  async function tool2(args) {
6497
- const contentfulClient = createToolClient(config, args);
6508
+ const contentfulClient = createExoToolClient(config, args);
6498
6509
  const experienceFragment = await contentfulClient.experienceFragment.get({
6499
6510
  spaceId: args.spaceId,
6500
6511
  environmentId: args.environmentId,
@@ -6517,7 +6528,7 @@ var ListExperienceFragmentsToolParams = BaseToolSchema.extend({
6517
6528
  });
6518
6529
  function listExperienceFragmentsTool(config) {
6519
6530
  async function tool2(args) {
6520
- const contentfulClient = createToolClient(config, args);
6531
+ const contentfulClient = createExoToolClient(config, args);
6521
6532
  const experienceFragments = await contentfulClient.experienceFragment.getMany({
6522
6533
  spaceId: args.spaceId,
6523
6534
  environmentId: args.environmentId,
@@ -6568,7 +6579,7 @@ function createExperienceFragmentTool(config) {
6568
6579
  args.environmentId,
6569
6580
  config.protectedEnvironments
6570
6581
  );
6571
- const contentfulClient = createToolClient(config, args);
6582
+ const contentfulClient = createExoToolClient(config, args);
6572
6583
  const experienceFragment = await contentfulClient.experienceFragment.create(
6573
6584
  { spaceId: args.spaceId, environmentId: args.environmentId },
6574
6585
  {
@@ -6619,7 +6630,7 @@ function updateExperienceFragmentTool(config) {
6619
6630
  environmentId: args.environmentId,
6620
6631
  experienceFragmentId: args.experienceFragmentId
6621
6632
  };
6622
- const contentfulClient = createToolClient(config, args);
6633
+ const contentfulClient = createExoToolClient(config, args);
6623
6634
  const current = await contentfulClient.experienceFragment.get(params);
6624
6635
  if (args.version !== current.sys.version) {
6625
6636
  throw new Error(
@@ -6672,7 +6683,7 @@ function deleteExperienceFragmentTool(config) {
6672
6683
  environmentId: args.environmentId,
6673
6684
  experienceFragmentId: args.experienceFragmentId
6674
6685
  };
6675
- const contentfulClient = createToolClient(config, args);
6686
+ const contentfulClient = createExoToolClient(config, args);
6676
6687
  const experienceFragment = await contentfulClient.experienceFragment.get(params);
6677
6688
  const expectedToken = buildConfirmToken(
6678
6689
  "experienceFragment",
@@ -6717,7 +6728,7 @@ function publishExperienceFragmentTool(config) {
6717
6728
  environmentId: args.environmentId,
6718
6729
  experienceFragmentId: args.experienceFragmentId
6719
6730
  };
6720
- const contentfulClient = createToolClient(config, args);
6731
+ const contentfulClient = createExoToolClient(config, args);
6721
6732
  const current = await contentfulClient.experienceFragment.get(params);
6722
6733
  if (args.version !== current.sys.version) {
6723
6734
  throw new Error(
@@ -6754,7 +6765,7 @@ function unpublishExperienceFragmentTool(config) {
6754
6765
  environmentId: args.environmentId,
6755
6766
  experienceFragmentId: args.experienceFragmentId
6756
6767
  };
6757
- const contentfulClient = createToolClient(config, args);
6768
+ const contentfulClient = createExoToolClient(config, args);
6758
6769
  const current = await contentfulClient.experienceFragment.get(params);
6759
6770
  if (args.version !== current.sys.version) {
6760
6771
  throw new Error(
@@ -6877,7 +6888,7 @@ var GetExperienceTemplateToolParams = BaseToolSchema.extend({
6877
6888
  });
6878
6889
  function getExperienceTemplateTool(config) {
6879
6890
  async function tool2(args) {
6880
- const contentfulClient = createToolClient(config, args);
6891
+ const contentfulClient = createExoToolClient(config, args);
6881
6892
  const experienceTemplate = await contentfulClient.experienceTemplate.get({
6882
6893
  spaceId: args.spaceId,
6883
6894
  environmentId: args.environmentId,
@@ -6900,7 +6911,7 @@ var ListExperienceTemplatesToolParams = BaseToolSchema.extend({
6900
6911
  });
6901
6912
  function listExperienceTemplatesTool(config) {
6902
6913
  async function tool2(args) {
6903
- const contentfulClient = createToolClient(config, args);
6914
+ const contentfulClient = createExoToolClient(config, args);
6904
6915
  const experienceTemplates = await contentfulClient.experienceTemplate.getMany({
6905
6916
  spaceId: args.spaceId,
6906
6917
  environmentId: args.environmentId,
@@ -6947,7 +6958,7 @@ function createExperienceTemplateTool(config) {
6947
6958
  args.environmentId,
6948
6959
  config.protectedEnvironments
6949
6960
  );
6950
- const contentfulClient = createToolClient(config, args);
6961
+ const contentfulClient = createExoToolClient(config, args);
6951
6962
  const experienceTemplate = await contentfulClient.experienceTemplate.create(
6952
6963
  { spaceId: args.spaceId, environmentId: args.environmentId },
6953
6964
  {
@@ -6997,7 +7008,7 @@ function upsertExperienceTemplateTool(config) {
6997
7008
  environmentId: args.environmentId,
6998
7009
  experienceTemplateId: args.experienceTemplateId
6999
7010
  };
7000
- const contentfulClient = createToolClient(config, args);
7011
+ const contentfulClient = createExoToolClient(config, args);
7001
7012
  const current = await contentfulClient.experienceTemplate.get(params);
7002
7013
  if (args.version !== current.sys.version) {
7003
7014
  throw new Error(
@@ -7052,7 +7063,7 @@ function deleteExperienceTemplateTool(config) {
7052
7063
  environmentId: args.environmentId,
7053
7064
  experienceTemplateId: args.experienceTemplateId
7054
7065
  };
7055
- const contentfulClient = createToolClient(config, args);
7066
+ const contentfulClient = createExoToolClient(config, args);
7056
7067
  const experienceTemplate = await contentfulClient.experienceTemplate.get(params);
7057
7068
  const expectedToken = buildConfirmToken(
7058
7069
  "experienceTemplate",
@@ -7097,7 +7108,7 @@ function publishExperienceTemplateTool(config) {
7097
7108
  environmentId: args.environmentId,
7098
7109
  experienceTemplateId: args.experienceTemplateId
7099
7110
  };
7100
- const contentfulClient = createToolClient(config, args);
7111
+ const contentfulClient = createExoToolClient(config, args);
7101
7112
  const current = await contentfulClient.experienceTemplate.get(params);
7102
7113
  if (args.version !== current.sys.version) {
7103
7114
  throw new Error(
@@ -7134,7 +7145,7 @@ function unpublishExperienceTemplateTool(config) {
7134
7145
  environmentId: args.environmentId,
7135
7146
  experienceTemplateId: args.experienceTemplateId
7136
7147
  };
7137
- const contentfulClient = createToolClient(config, args);
7148
+ const contentfulClient = createExoToolClient(config, args);
7138
7149
  const current = await contentfulClient.experienceTemplate.get(params);
7139
7150
  if (args.version !== current.sys.version) {
7140
7151
  throw new Error(
@@ -7257,7 +7268,7 @@ var GetExperienceToolParams = BaseToolSchema.extend({
7257
7268
  });
7258
7269
  function getExperienceTool(config) {
7259
7270
  async function tool2(args) {
7260
- const contentfulClient = createToolClient(config, args);
7271
+ const contentfulClient = createExoToolClient(config, args);
7261
7272
  const experience = await contentfulClient.experience.get({
7262
7273
  spaceId: args.spaceId,
7263
7274
  environmentId: args.environmentId,
@@ -7280,7 +7291,7 @@ var ListExperiencesToolParams = BaseToolSchema.extend({
7280
7291
  });
7281
7292
  function listExperiencesTool(config) {
7282
7293
  async function tool2(args) {
7283
- const contentfulClient = createToolClient(config, args);
7294
+ const contentfulClient = createExoToolClient(config, args);
7284
7295
  const experiences = await contentfulClient.experience.getMany({
7285
7296
  spaceId: args.spaceId,
7286
7297
  environmentId: args.environmentId,
@@ -7333,7 +7344,7 @@ function createExperienceTool(config) {
7333
7344
  args.environmentId,
7334
7345
  config.protectedEnvironments
7335
7346
  );
7336
- const contentfulClient = createToolClient(config, args);
7347
+ const contentfulClient = createExoToolClient(config, args);
7337
7348
  const experience = await contentfulClient.experience.create(
7338
7349
  { spaceId: args.spaceId, environmentId: args.environmentId },
7339
7350
  {
@@ -7386,7 +7397,7 @@ function upsertExperienceTool(config) {
7386
7397
  environmentId: args.environmentId,
7387
7398
  experienceId: args.experienceId
7388
7399
  };
7389
- const contentfulClient = createToolClient(config, args);
7400
+ const contentfulClient = createExoToolClient(config, args);
7390
7401
  const current = await contentfulClient.experience.get(params);
7391
7402
  if (args.version !== current.sys.version) {
7392
7403
  throw new Error(
@@ -7436,7 +7447,7 @@ function deleteExperienceTool(config) {
7436
7447
  environmentId: args.environmentId,
7437
7448
  experienceId: args.experienceId
7438
7449
  };
7439
- const contentfulClient = createToolClient(config, args);
7450
+ const contentfulClient = createExoToolClient(config, args);
7440
7451
  const experience = await contentfulClient.experience.get(params);
7441
7452
  const expectedToken = buildConfirmToken(
7442
7453
  "experience",
@@ -7481,7 +7492,7 @@ function publishExperienceTool(config) {
7481
7492
  environmentId: args.environmentId,
7482
7493
  experienceId: args.experienceId
7483
7494
  };
7484
- const contentfulClient = createToolClient(config, args);
7495
+ const contentfulClient = createExoToolClient(config, args);
7485
7496
  const current = await contentfulClient.experience.get(params);
7486
7497
  if (args.version !== current.sys.version) {
7487
7498
  throw new Error(
@@ -7518,7 +7529,7 @@ function unpublishExperienceTool(config) {
7518
7529
  environmentId: args.environmentId,
7519
7530
  experienceId: args.experienceId
7520
7531
  };
7521
- const contentfulClient = createToolClient(config, args);
7532
+ const contentfulClient = createExoToolClient(config, args);
7522
7533
  const current = await contentfulClient.experience.get(params);
7523
7534
  if (args.version !== current.sys.version) {
7524
7535
  throw new Error(
@@ -7638,7 +7649,7 @@ var GetDataAssemblyToolParams = BaseToolSchema.extend({
7638
7649
  });
7639
7650
  function getDataAssemblyTool(config) {
7640
7651
  async function tool2(args) {
7641
- const contentfulClient = createToolClient(config, args);
7652
+ const contentfulClient = createExoToolClient(config, args);
7642
7653
  const dataAssembly = await contentfulClient.dataAssembly.get({
7643
7654
  spaceId: args.spaceId,
7644
7655
  environmentId: args.environmentId,
@@ -7658,7 +7669,7 @@ var GetPublishedDataAssemblyToolParams = BaseToolSchema.extend({
7658
7669
  });
7659
7670
  function getPublishedDataAssemblyTool(config) {
7660
7671
  async function tool2(args) {
7661
- const contentfulClient = createToolClient(config, args);
7672
+ const contentfulClient = createExoToolClient(config, args);
7662
7673
  const dataAssembly = await contentfulClient.dataAssembly.getPublished({
7663
7674
  spaceId: args.spaceId,
7664
7675
  environmentId: args.environmentId,
@@ -7681,7 +7692,7 @@ var ListDataAssembliesToolParams = BaseToolSchema.extend({
7681
7692
  });
7682
7693
  function listDataAssembliesTool(config) {
7683
7694
  async function tool2(args) {
7684
- const contentfulClient = createToolClient(config, args);
7695
+ const contentfulClient = createExoToolClient(config, args);
7685
7696
  const dataAssemblies = await contentfulClient.dataAssembly.getMany({
7686
7697
  spaceId: args.spaceId,
7687
7698
  environmentId: args.environmentId,
@@ -7715,7 +7726,7 @@ var ListPublishedDataAssembliesToolParams = BaseToolSchema.extend({
7715
7726
  });
7716
7727
  function listPublishedDataAssembliesTool(config) {
7717
7728
  async function tool2(args) {
7718
- const contentfulClient = createToolClient(config, args);
7729
+ const contentfulClient = createExoToolClient(config, args);
7719
7730
  const dataAssemblies = await contentfulClient.dataAssembly.getManyPublished({
7720
7731
  spaceId: args.spaceId,
7721
7732
  environmentId: args.environmentId,
@@ -7874,7 +7885,7 @@ function createDataAssemblyTool(config) {
7874
7885
  args.environmentId,
7875
7886
  config.protectedEnvironments
7876
7887
  );
7877
- const contentfulClient = createToolClient(config, args);
7888
+ const contentfulClient = createExoToolClient(config, args);
7878
7889
  const dataAssembly = await contentfulClient.dataAssembly.create(
7879
7890
  { spaceId: args.spaceId, environmentId: args.environmentId },
7880
7891
  {
@@ -7933,7 +7944,7 @@ function updateDataAssemblyTool(config) {
7933
7944
  environmentId: args.environmentId,
7934
7945
  dataAssemblyId: args.dataAssemblyId
7935
7946
  };
7936
- const contentfulClient = createToolClient(config, args);
7947
+ const contentfulClient = createExoToolClient(config, args);
7937
7948
  const current = await contentfulClient.dataAssembly.get(params);
7938
7949
  if (args.version !== current.sys.version) {
7939
7950
  throw new Error(
@@ -7984,7 +7995,7 @@ function deleteDataAssemblyTool(config) {
7984
7995
  environmentId: args.environmentId,
7985
7996
  dataAssemblyId: args.dataAssemblyId
7986
7997
  };
7987
- const contentfulClient = createToolClient(config, args);
7998
+ const contentfulClient = createExoToolClient(config, args);
7988
7999
  const dataAssembly = await contentfulClient.dataAssembly.get(params);
7989
8000
  const expectedToken = buildConfirmToken(
7990
8001
  "dataAssembly",
@@ -8029,7 +8040,7 @@ function publishDataAssemblyTool(config) {
8029
8040
  environmentId: args.environmentId,
8030
8041
  dataAssemblyId: args.dataAssemblyId
8031
8042
  };
8032
- const contentfulClient = createToolClient(config, args);
8043
+ const contentfulClient = createExoToolClient(config, args);
8033
8044
  const current = await contentfulClient.dataAssembly.get(params);
8034
8045
  if (args.version !== current.sys.version) {
8035
8046
  throw new Error(
@@ -8066,7 +8077,7 @@ function unpublishDataAssemblyTool(config) {
8066
8077
  environmentId: args.environmentId,
8067
8078
  dataAssemblyId: args.dataAssemblyId
8068
8079
  };
8069
- const contentfulClient = createToolClient(config, args);
8080
+ const contentfulClient = createExoToolClient(config, args);
8070
8081
  const current = await contentfulClient.dataAssembly.get(params);
8071
8082
  if (args.version !== current.sys.version) {
8072
8083
  throw new Error(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/mcp-tools",
3
- "version": "0.12.6",
3
+ "version": "0.12.7",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",