@antonytm/mcp-sitecore-server 0.18.0 → 0.19.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.
package/dist/bundle.js CHANGED
@@ -1,14 +1,17 @@
1
1
  #!/usr/bin/env node
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import fs from 'node:fs';
2
5
  import process$1 from 'node:process';
3
- import fs from 'fs';
4
- import path from 'path';
5
- import { fileURLToPath, URL as URL$1 } from 'url';
6
+ import 'fs';
7
+ import require$$0$1 from 'path';
6
8
  import 'http';
7
9
  import { randomUUID } from 'node:crypto';
8
10
  import require$$2$1 from 'statuses';
9
- import require$$0$1 from 'buffer';
11
+ import require$$0$2 from 'buffer';
10
12
  import require$$1$1 from 'string_decoder';
11
13
  import contentType from 'content-type';
14
+ import { URL as URL$1 } from 'url';
12
15
  import express from 'express';
13
16
 
14
17
  var util;
@@ -3979,6 +3982,7 @@ ZodNullable.create;
3979
3982
 
3980
3983
  objectType({
3981
3984
  name: stringType().default("mcp-sitecore-server"),
3985
+ version: stringType().optional(),
3982
3986
  graphQL: objectType({
3983
3987
  endpoint: stringType().url().min(1, "endpoint is required"),
3984
3988
  schemas: arrayType(stringType()),
@@ -4012,6 +4016,7 @@ objectType({
4012
4016
  password: "b",
4013
4017
  serverUrl: "https://xmcloudcm.localhost/",
4014
4018
  }),
4019
+ authorizationHeader: stringType().default("")
4015
4020
  });
4016
4021
  const envSchema = objectType({
4017
4022
  GRAPHQL_ENDPOINT: stringType().url().optional(),
@@ -4026,6 +4031,7 @@ const envSchema = objectType({
4026
4031
  POWERSHELL_USERNAME: stringType().optional(),
4027
4032
  POWERSHELL_PASSWORD: stringType().optional(),
4028
4033
  POWERSHELL_SERVER_URL: stringType().url().optional(),
4034
+ AUTORIZATION_HEADER: stringType().optional(),
4029
4035
  });
4030
4036
  const envStartSchema = objectType({
4031
4037
  //* The transport to use for the server. Can be one of 'stdio' or 'sse'.
@@ -4041,6 +4047,35 @@ const envStartSchema = objectType({
4041
4047
  return "stdio";
4042
4048
  })
4043
4049
  });
4050
+ // Read package.json data
4051
+ const __filename = fileURLToPath(import.meta.url);
4052
+ const __dirname = path.dirname(__filename);
4053
+ const packagePath = path.resolve(__dirname, '..', 'package.json');
4054
+ const packageData = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
4055
+ const { version, name } = packageData;
4056
+ const ENV$1 = envSchema.parse(process.env);
4057
+ const config = {
4058
+ name: `${name} ${version}`,
4059
+ graphQL: {
4060
+ endpoint: ENV$1.GRAPHQL_ENDPOINT || "https://xmcloudcm.localhost/sitecore/api/graph/",
4061
+ schemas: ENV$1.GRAPHQL_SCHEMAS ? ENV$1.GRAPHQL_SCHEMAS.split(",").map(x => x.trim()) : ["edge", "master"],
4062
+ apiKey: ENV$1.GRAPHQL_API_KEY || "{6D3F291E-66A5-4703-887A-D549AF83D859}",
4063
+ headers: ENV$1.GRAPHQL_HEADERS ? JSON.parse(ENV$1.GRAPHQL_HEADERS) : {},
4064
+ },
4065
+ itemService: {
4066
+ domain: ENV$1.ITEM_SERVICE_DOMAIN || "sitecore",
4067
+ username: ENV$1.ITEM_SERVICE_USERNAME || "admin",
4068
+ password: ENV$1.ITEM_SERVICE_PASSWORD || "b",
4069
+ serverUrl: ENV$1.ITEM_SERVICE_SERVER_URL || "https://xmcloudcm.localhost/",
4070
+ },
4071
+ powershell: {
4072
+ domain: ENV$1.POWERSHELL_DOMAIN || "sitecore",
4073
+ username: ENV$1.POWERSHELL_USERNAME || "admin",
4074
+ password: ENV$1.POWERSHELL_PASSWORD || "b",
4075
+ serverUrl: ENV$1.POWERSHELL_SERVER_URL || "https://xmcloudcm.localhost/",
4076
+ },
4077
+ authorizationHeader: ENV$1.AUTORIZATION_HEADER || "",
4078
+ };
4044
4079
 
4045
4080
  const LATEST_PROTOCOL_VERSION = "2025-03-26";
4046
4081
  const SUPPORTED_PROTOCOL_VERSIONS = [
@@ -26165,41 +26200,13 @@ async function registerAll(server, config) {
26165
26200
  ], server, config);
26166
26201
  }
26167
26202
 
26168
- // Read package.json data
26169
- const __filename = fileURLToPath(import.meta.url);
26170
- const __dirname = path.dirname(__filename);
26171
- const packagePath = path.resolve(__dirname, '..', 'package.json');
26172
- const packageData = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
26173
- const { version, name } = packageData;
26174
- async function getServer() {
26203
+ async function getServer(config) {
26175
26204
  const server = new McpServer({
26176
- name: `Sitecore MCP Server: ${name}`,
26205
+ name: `Sitecore MCP Server: ${config.name}`,
26177
26206
  description: "Modle Context Protocol for Sitecore",
26178
- version: version
26207
+ version: config.version || "0.0.1",
26179
26208
  });
26180
- const ENV = envSchema.parse(process.env);
26181
26209
  // Parse the environment variables and set default values
26182
- const config = {
26183
- name: `${name} ${version}`,
26184
- graphQL: {
26185
- endpoint: ENV.GRAPHQL_ENDPOINT || "https://xmcloudcm.localhost/sitecore/api/graph/",
26186
- schemas: ENV.GRAPHQL_SCHEMAS ? ENV.GRAPHQL_SCHEMAS.split(",").map(x => x.trim()) : ["edge", "master"],
26187
- apiKey: ENV.GRAPHQL_API_KEY || "{6D3F291E-66A5-4703-887A-D549AF83D859}",
26188
- headers: ENV.GRAPHQL_HEADERS ? JSON.parse(ENV.GRAPHQL_HEADERS) : {},
26189
- },
26190
- itemService: {
26191
- domain: ENV.ITEM_SERVICE_DOMAIN || "sitecore",
26192
- username: ENV.ITEM_SERVICE_USERNAME || "admin",
26193
- password: ENV.ITEM_SERVICE_PASSWORD || "b",
26194
- serverUrl: ENV.ITEM_SERVICE_SERVER_URL || "https://xmcloudcm.localhost/",
26195
- },
26196
- powershell: {
26197
- domain: ENV.POWERSHELL_DOMAIN || "sitecore",
26198
- username: ENV.POWERSHELL_USERNAME || "admin",
26199
- password: ENV.POWERSHELL_PASSWORD || "b",
26200
- serverUrl: ENV.POWERSHELL_SERVER_URL || "https://xmcloudcm.localhost/",
26201
- },
26202
- };
26203
26210
  server.resource("config", "config://main", async (uri) => {
26204
26211
  return {
26205
26212
  contents: [{
@@ -26223,7 +26230,7 @@ async function getServer() {
26223
26230
  }
26224
26231
 
26225
26232
  async function startSTDIO() {
26226
- const server = await getServer();
26233
+ const server = await getServer(config);
26227
26234
  const transport = new StdioServerTransport();
26228
26235
  await server.connect(transport);
26229
26236
  }
@@ -26425,7 +26432,7 @@ function requireDepd () {
26425
26432
  * Module dependencies.
26426
26433
  */
26427
26434
 
26428
- var relative = path.relative;
26435
+ var relative = require$$0$1.relative;
26429
26436
 
26430
26437
  /**
26431
26438
  * Module exports.
@@ -27386,7 +27393,7 @@ function requireSafer () {
27386
27393
  if (hasRequiredSafer) return safer_1;
27387
27394
  hasRequiredSafer = 1;
27388
27395
 
27389
- var buffer = require$$0$1;
27396
+ var buffer = require$$0$2;
27390
27397
  var Buffer = buffer.Buffer;
27391
27398
 
27392
27399
  var safer = {};
@@ -39238,28 +39245,42 @@ class SSEServerTransport {
39238
39245
  }
39239
39246
  }
39240
39247
 
39248
+ const authorizationHeaderName = "Authorization";
39249
+
39241
39250
  async function startSSE() {
39242
- const server = await getServer();
39251
+ const server = await getServer(config);
39243
39252
  const app = express();
39244
39253
  // to support multiple simultaneous connections we have a lookup object from
39245
39254
  // sessionId to transport
39246
39255
  const transports = {};
39247
- app.get("/sse", async (_, res) => {
39248
- const transport = new SSEServerTransport('/messages', res);
39249
- transports[transport.sessionId] = transport;
39250
- res.on("close", () => {
39251
- delete transports[transport.sessionId];
39252
- });
39253
- await server.connect(transport);
39256
+ app.get("/sse", async (req, res) => {
39257
+ if (config.authorizationHeader === ""
39258
+ || config.authorizationHeader === req.headers[authorizationHeaderName]) {
39259
+ const transport = new SSEServerTransport('/messages', res);
39260
+ transports[transport.sessionId] = transport;
39261
+ res.on("close", () => {
39262
+ delete transports[transport.sessionId];
39263
+ });
39264
+ await server.connect(transport);
39265
+ }
39266
+ else {
39267
+ res.status(401).send('Unauthorized');
39268
+ }
39254
39269
  });
39255
39270
  app.post("/messages", async (req, res) => {
39256
- const sessionId = req.query.sessionId;
39257
- const transport = transports[sessionId];
39258
- if (transport) {
39259
- await transport.handlePostMessage(req, res);
39271
+ if (config.authorizationHeader === ""
39272
+ || config.authorizationHeader === req.headers[authorizationHeaderName]) {
39273
+ const sessionId = req.query.sessionId;
39274
+ const transport = transports[sessionId];
39275
+ if (transport) {
39276
+ await transport.handlePostMessage(req, res);
39277
+ }
39278
+ else {
39279
+ res.status(400).send('No transport found for sessionId');
39280
+ }
39260
39281
  }
39261
39282
  else {
39262
- res.status(400).send('No transport found for sessionId');
39283
+ res.status(401).send('Unauthorized');
39263
39284
  }
39264
39285
  });
39265
39286
  app.listen(3001);
@@ -39800,45 +39821,51 @@ function startStreamableHTTP() {
39800
39821
  const transports = {};
39801
39822
  // Handle POST requests for client-to-server communication
39802
39823
  app.post('/mcp', async (req, res) => {
39803
- // Check for existing session ID
39804
- const sessionId = req.headers['mcp-session-id'];
39805
- let transport;
39806
- if (sessionId && transports[sessionId]) {
39807
- // Reuse existing transport
39808
- transport = transports[sessionId];
39809
- }
39810
- else if (!sessionId && isInitializeRequest(req.body)) {
39811
- // New initialization request
39812
- transport = new StreamableHTTPServerTransport({
39813
- sessionIdGenerator: () => generateUUID(),
39814
- onsessioninitialized: (sessionId) => {
39815
- // Store the transport by session ID
39816
- transports[sessionId] = transport;
39817
- }
39818
- });
39819
- // Clean up transport when closed
39820
- transport.onclose = () => {
39821
- if (transport.sessionId) {
39822
- delete transports[transport.sessionId];
39823
- }
39824
- };
39825
- const server = await getServer();
39826
- await server.connect(transport);
39824
+ if (config.authorizationHeader === "" ||
39825
+ config.authorizationHeader === req.headers[authorizationHeaderName]) {
39826
+ // Check for existing session ID
39827
+ const sessionId = req.headers['mcp-session-id'];
39828
+ let transport;
39829
+ if (sessionId && transports[sessionId]) {
39830
+ // Reuse existing transport
39831
+ transport = transports[sessionId];
39832
+ }
39833
+ else if (!sessionId && isInitializeRequest(req.body)) {
39834
+ // New initialization request
39835
+ transport = new StreamableHTTPServerTransport({
39836
+ sessionIdGenerator: () => generateUUID(),
39837
+ onsessioninitialized: (sessionId) => {
39838
+ // Store the transport by session ID
39839
+ transports[sessionId] = transport;
39840
+ }
39841
+ });
39842
+ // Clean up transport when closed
39843
+ transport.onclose = () => {
39844
+ if (transport.sessionId) {
39845
+ delete transports[transport.sessionId];
39846
+ }
39847
+ };
39848
+ const server = await getServer(config);
39849
+ await server.connect(transport);
39850
+ }
39851
+ else {
39852
+ // Invalid request
39853
+ res.status(400).json({
39854
+ jsonrpc: '2.0',
39855
+ error: {
39856
+ code: -32e3,
39857
+ message: 'Bad Request: No valid session ID provided',
39858
+ },
39859
+ id: null,
39860
+ });
39861
+ return;
39862
+ }
39863
+ // Handle the request
39864
+ await transport.handleRequest(req, res, req.body);
39827
39865
  }
39828
39866
  else {
39829
- // Invalid request
39830
- res.status(400).json({
39831
- jsonrpc: '2.0',
39832
- error: {
39833
- code: -32e3,
39834
- message: 'Bad Request: No valid session ID provided',
39835
- },
39836
- id: null,
39837
- });
39838
- return;
39867
+ res.status(401).send('Unauthorized');
39839
39868
  }
39840
- // Handle the request
39841
- await transport.handleRequest(req, res, req.body);
39842
39869
  });
39843
39870
  // Reusable handler for GET and DELETE requests
39844
39871
  const handleSessionRequest = async (req, res) => {
package/dist/config.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  declare const ConfigSchema: z.ZodObject<{
3
3
  name: z.ZodDefault<z.ZodString>;
4
+ version: z.ZodOptional<z.ZodString>;
4
5
  graphQL: z.ZodDefault<z.ZodObject<{
5
6
  endpoint: z.ZodString;
6
7
  schemas: z.ZodArray<z.ZodString, "many">;
@@ -49,6 +50,7 @@ declare const ConfigSchema: z.ZodObject<{
49
50
  password: string;
50
51
  serverUrl: string;
51
52
  }>>;
53
+ authorizationHeader: z.ZodDefault<z.ZodString>;
52
54
  }, "strip", z.ZodTypeAny, {
53
55
  name: string;
54
56
  graphQL: {
@@ -69,8 +71,11 @@ declare const ConfigSchema: z.ZodObject<{
69
71
  password: string;
70
72
  serverUrl: string;
71
73
  };
74
+ authorizationHeader: string;
75
+ version?: string | undefined;
72
76
  }, {
73
77
  name?: string | undefined;
78
+ version?: string | undefined;
74
79
  graphQL?: {
75
80
  endpoint: string;
76
81
  schemas: string[];
@@ -89,6 +94,7 @@ declare const ConfigSchema: z.ZodObject<{
89
94
  password: string;
90
95
  serverUrl: string;
91
96
  } | undefined;
97
+ authorizationHeader?: string | undefined;
92
98
  }>;
93
99
  export declare const envSchema: z.ZodObject<{
94
100
  GRAPHQL_ENDPOINT: z.ZodOptional<z.ZodString>;
@@ -103,6 +109,7 @@ export declare const envSchema: z.ZodObject<{
103
109
  POWERSHELL_USERNAME: z.ZodOptional<z.ZodString>;
104
110
  POWERSHELL_PASSWORD: z.ZodOptional<z.ZodString>;
105
111
  POWERSHELL_SERVER_URL: z.ZodOptional<z.ZodString>;
112
+ AUTORIZATION_HEADER: z.ZodOptional<z.ZodString>;
106
113
  }, "strip", z.ZodTypeAny, {
107
114
  GRAPHQL_ENDPOINT?: string | undefined;
108
115
  GRAPHQL_SCHEMAS?: string | undefined;
@@ -116,6 +123,7 @@ export declare const envSchema: z.ZodObject<{
116
123
  POWERSHELL_USERNAME?: string | undefined;
117
124
  POWERSHELL_PASSWORD?: string | undefined;
118
125
  POWERSHELL_SERVER_URL?: string | undefined;
126
+ AUTORIZATION_HEADER?: string | undefined;
119
127
  }, {
120
128
  GRAPHQL_ENDPOINT?: string | undefined;
121
129
  GRAPHQL_SCHEMAS?: string | undefined;
@@ -129,6 +137,7 @@ export declare const envSchema: z.ZodObject<{
129
137
  POWERSHELL_USERNAME?: string | undefined;
130
138
  POWERSHELL_PASSWORD?: string | undefined;
131
139
  POWERSHELL_SERVER_URL?: string | undefined;
140
+ AUTORIZATION_HEADER?: string | undefined;
132
141
  }>;
133
142
  export declare const envStartSchema: z.ZodObject<{
134
143
  TRANSPORT: z.ZodEffects<z.ZodOptional<z.ZodDefault<z.ZodString>>, "stdio" | "sse" | "streamable-http", string | undefined>;
@@ -140,4 +149,5 @@ export declare const envStartSchema: z.ZodObject<{
140
149
  export type Config = z.infer<typeof ConfigSchema>;
141
150
  export type EnvConfig = z.infer<typeof envSchema>;
142
151
  export type EnvStartConfig = z.infer<typeof envStartSchema>;
143
- export {};
152
+ declare const config: Config;
153
+ export { config };
package/dist/config.js CHANGED
@@ -1,6 +1,10 @@
1
+ import path from "node:path";
2
+ import { fileURLToPath } from "node:url";
1
3
  import { z } from "zod";
4
+ import fs from "node:fs";
2
5
  const ConfigSchema = z.object({
3
6
  name: z.string().default("mcp-sitecore-server"),
7
+ version: z.string().optional(),
4
8
  graphQL: z.object({
5
9
  endpoint: z.string().url().min(1, "endpoint is required"),
6
10
  schemas: z.array(z.string()),
@@ -34,6 +38,7 @@ const ConfigSchema = z.object({
34
38
  password: "b",
35
39
  serverUrl: "https://xmcloudcm.localhost/",
36
40
  }),
41
+ authorizationHeader: z.string().default("")
37
42
  });
38
43
  export const envSchema = z.object({
39
44
  GRAPHQL_ENDPOINT: z.string().url().optional(),
@@ -48,6 +53,7 @@ export const envSchema = z.object({
48
53
  POWERSHELL_USERNAME: z.string().optional(),
49
54
  POWERSHELL_PASSWORD: z.string().optional(),
50
55
  POWERSHELL_SERVER_URL: z.string().url().optional(),
56
+ AUTORIZATION_HEADER: z.string().optional(),
51
57
  });
52
58
  export const envStartSchema = z.object({
53
59
  //* The transport to use for the server. Can be one of 'stdio' or 'sse'.
@@ -63,4 +69,34 @@ export const envStartSchema = z.object({
63
69
  return "stdio";
64
70
  })
65
71
  });
72
+ // Read package.json data
73
+ const __filename = fileURLToPath(import.meta.url);
74
+ const __dirname = path.dirname(__filename);
75
+ const packagePath = path.resolve(__dirname, '..', 'package.json');
76
+ const packageData = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
77
+ const { version, name } = packageData;
78
+ const ENV = envSchema.parse(process.env);
79
+ const config = {
80
+ name: `${name} ${version}`,
81
+ graphQL: {
82
+ endpoint: ENV.GRAPHQL_ENDPOINT || "https://xmcloudcm.localhost/sitecore/api/graph/",
83
+ schemas: ENV.GRAPHQL_SCHEMAS ? ENV.GRAPHQL_SCHEMAS.split(",").map(x => x.trim()) : ["edge", "master"],
84
+ apiKey: ENV.GRAPHQL_API_KEY || "{6D3F291E-66A5-4703-887A-D549AF83D859}",
85
+ headers: ENV.GRAPHQL_HEADERS ? JSON.parse(ENV.GRAPHQL_HEADERS) : {},
86
+ },
87
+ itemService: {
88
+ domain: ENV.ITEM_SERVICE_DOMAIN || "sitecore",
89
+ username: ENV.ITEM_SERVICE_USERNAME || "admin",
90
+ password: ENV.ITEM_SERVICE_PASSWORD || "b",
91
+ serverUrl: ENV.ITEM_SERVICE_SERVER_URL || "https://xmcloudcm.localhost/",
92
+ },
93
+ powershell: {
94
+ domain: ENV.POWERSHELL_DOMAIN || "sitecore",
95
+ username: ENV.POWERSHELL_USERNAME || "admin",
96
+ password: ENV.POWERSHELL_PASSWORD || "b",
97
+ serverUrl: ENV.POWERSHELL_SERVER_URL || "https://xmcloudcm.localhost/",
98
+ },
99
+ authorizationHeader: ENV.AUTORIZATION_HEADER || "",
100
+ };
101
+ export { config };
66
102
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;QACzD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACvD,CAAC,CAAC,OAAO,CAAC;QACP,QAAQ,EAAE,iDAAiD;QAC3D,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC3B,MAAM,EAAE,wCAAwC;QAChD,OAAO,EAAE,EAAE;KACd,CAAC;IACF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;KAC9B,CAAC,CAAC,OAAO,CAAC;QACP,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,8BAA8B;KAC5C,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;KAC9B,CAAC,CAAC,OAAO,CAAC;QACP,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,8BAA8B;KAC5C,CAAC;CACL,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC7C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5C,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5C,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,wEAAwE;IACxE,6CAA6C;IAC7C,iDAAiD;IACjD,yEAAyE;IACzE,yCAAyC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;QAChE,IAAI,GAAG,EAAE,WAAW,EAAE,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QAC/C,IAAI,GAAG,EAAE,WAAW,EAAE,KAAK,iBAAiB;YAAE,OAAO,iBAAiB,CAAC;QACvE,OAAO,OAAO,CAAC;IACnB,CAAC,CAAC;CACL,CAAC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/const.d.ts CHANGED
@@ -0,0 +1 @@
1
+ export declare const authorizationHeaderName = "Authorization";
package/dist/const.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";
1
+ export const authorizationHeaderName = "Authorization";
2
2
  //# sourceMappingURL=const.js.map
package/dist/const.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC"}
package/dist/server.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function getServer(): Promise<McpServer>;
2
+ import { type Config } from "./config.js";
3
+ export declare function getServer(config: Config): Promise<McpServer>;
package/dist/server.js CHANGED
@@ -2,43 +2,14 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { envSchema } from "./config.js";
3
3
  import fs from 'fs';
4
4
  import path from 'path';
5
- import { fileURLToPath } from 'url';
6
5
  import { registerAll } from "./register.js";
7
- // Read package.json data
8
- const __filename = fileURLToPath(import.meta.url);
9
- const __dirname = path.dirname(__filename);
10
- const packagePath = path.resolve(__dirname, '..', 'package.json');
11
- const packageData = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
12
- const { version, name } = packageData;
13
- export async function getServer() {
6
+ export async function getServer(config) {
14
7
  const server = new McpServer({
15
- name: `Sitecore MCP Server: ${name}`,
8
+ name: `Sitecore MCP Server: ${config.name}`,
16
9
  description: "Modle Context Protocol for Sitecore",
17
- version: version
10
+ version: config.version || "0.0.1",
18
11
  });
19
- const ENV = envSchema.parse(process.env);
20
12
  // Parse the environment variables and set default values
21
- const config = {
22
- name: `${name} ${version}`,
23
- graphQL: {
24
- endpoint: ENV.GRAPHQL_ENDPOINT || "https://xmcloudcm.localhost/sitecore/api/graph/",
25
- schemas: ENV.GRAPHQL_SCHEMAS ? ENV.GRAPHQL_SCHEMAS.split(",").map(x => x.trim()) : ["edge", "master"],
26
- apiKey: ENV.GRAPHQL_API_KEY || "{6D3F291E-66A5-4703-887A-D549AF83D859}",
27
- headers: ENV.GRAPHQL_HEADERS ? JSON.parse(ENV.GRAPHQL_HEADERS) : {},
28
- },
29
- itemService: {
30
- domain: ENV.ITEM_SERVICE_DOMAIN || "sitecore",
31
- username: ENV.ITEM_SERVICE_USERNAME || "admin",
32
- password: ENV.ITEM_SERVICE_PASSWORD || "b",
33
- serverUrl: ENV.ITEM_SERVICE_SERVER_URL || "https://xmcloudcm.localhost/",
34
- },
35
- powershell: {
36
- domain: ENV.POWERSHELL_DOMAIN || "sitecore",
37
- username: ENV.POWERSHELL_USERNAME || "admin",
38
- password: ENV.POWERSHELL_PASSWORD || "b",
39
- serverUrl: ENV.POWERSHELL_SERVER_URL || "https://xmcloudcm.localhost/",
40
- },
41
- };
42
13
  server.resource("config", "config://main", async (uri) => {
43
14
  return {
44
15
  contents: [{
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAA+B,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc;IAC1C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QACzB,IAAI,EAAE,wBAAwB,MAAM,CAAC,IAAI,EAAE;QAC3C,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;KACrC,CAAC,CAAC;IAEH,yDAAyD;IAEzD,MAAM,CAAC,QAAQ,CACX,QAAQ,EACR,eAAe,EACf,KAAK,EAAE,GAAG,EAAE,EAAE;QACV,OAAO;YACH,QAAQ,EAAE,CAAC;oBACP,GAAG,EAAE,GAAG,CAAC,IAAI;oBACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxC,CAAC;SACL,CAAA;IACL,CAAC,CACJ,CAAC;IAEF,MAAM,CAAC,IAAI,CACP,QAAQ,EACR,sDAAsD,EACtD,EAAE,EACF,KAAK,EAAE,MAAM,EAAE,EAAE;QACb,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxC;aACJ;SACJ,CAAC;IACN,CAAC,CACJ,CAAC;IAEF,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC;AAClB,CAAC"}
package/dist/sse.js CHANGED
@@ -1,29 +1,42 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
1
  import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
3
2
  import express from "express";
4
3
  import { getServer } from "./server.js";
4
+ import { config } from "./config.js";
5
+ import { authorizationHeaderName } from "./const.js";
5
6
  export async function startSSE() {
6
- const server = await getServer();
7
+ const server = await getServer(config);
7
8
  const app = express();
8
9
  // to support multiple simultaneous connections we have a lookup object from
9
10
  // sessionId to transport
10
11
  const transports = {};
11
- app.get("/sse", async (_, res) => {
12
- const transport = new SSEServerTransport('/messages', res);
13
- transports[transport.sessionId] = transport;
14
- res.on("close", () => {
15
- delete transports[transport.sessionId];
16
- });
17
- await server.connect(transport);
12
+ app.get("/sse", async (req, res) => {
13
+ if (config.authorizationHeader === ""
14
+ || config.authorizationHeader === req.headers[authorizationHeaderName]) {
15
+ const transport = new SSEServerTransport('/messages', res);
16
+ transports[transport.sessionId] = transport;
17
+ res.on("close", () => {
18
+ delete transports[transport.sessionId];
19
+ });
20
+ await server.connect(transport);
21
+ }
22
+ else {
23
+ res.status(401).send('Unauthorized');
24
+ }
18
25
  });
19
26
  app.post("/messages", async (req, res) => {
20
- const sessionId = req.query.sessionId;
21
- const transport = transports[sessionId];
22
- if (transport) {
23
- await transport.handlePostMessage(req, res);
27
+ if (config.authorizationHeader === ""
28
+ || config.authorizationHeader === req.headers[authorizationHeaderName]) {
29
+ const sessionId = req.query.sessionId;
30
+ const transport = transports[sessionId];
31
+ if (transport) {
32
+ await transport.handlePostMessage(req, res);
33
+ }
34
+ else {
35
+ res.status(400).send('No transport found for sessionId');
36
+ }
24
37
  }
25
38
  else {
26
- res.status(400).send('No transport found for sessionId');
39
+ res.status(401).send('Unauthorized');
27
40
  }
28
41
  });
29
42
  app.listen(3001);
package/dist/sse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAEjC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IAEtB,4EAA4E;IAC5E,yBAAyB;IACzB,MAAM,UAAU,GAAgD,EAAE,CAAC;IAEnE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAU,EAAE,GAAa,EAAE,EAAE;QAClD,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC3D,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;QAC5C,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,OAAO,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC1D,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAmB,CAAC;QAChD,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IAEtB,4EAA4E;IAC5E,yBAAyB;IACzB,MAAM,UAAU,GAAgD,EAAE,CAAC;IAEnE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAEpD,IAAI,MAAM,CAAC,mBAAmB,KAAK,EAAE;eAChC,MAAM,CAAC,mBAAmB,KAAK,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACzE,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC3D,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;YAC5C,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,OAAO,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC1D,IAAI,MAAM,CAAC,mBAAmB,KAAK,EAAE;eAChC,MAAM,CAAC,mBAAmB,KAAK,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACzE,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAmB,CAAC;YAChD,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC"}
package/dist/stdio.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
2
2
  import { getServer } from './server.js';
3
+ import { config } from './config.js';
3
4
  export async function startSTDIO() {
4
- const server = await getServer();
5
+ const server = await getServer(config);
5
6
  const transport = new StdioServerTransport();
6
7
  await server.connect(transport);
7
8
  }
package/dist/stdio.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,MAAM,CAAC,KAAK,UAAU,UAAU;IAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,MAAM,CAAC,KAAK,UAAU,UAAU;IAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC"}
@@ -3,6 +3,8 @@ import { generateUUID } from "./utils.js";
3
3
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
4
4
  import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js";
5
5
  import { getServer } from "./server.js";
6
+ import { config } from "./config.js";
7
+ import { authorizationHeaderName } from "./const.js";
6
8
  export function startStreamableHTTP() {
7
9
  const app = express();
8
10
  app.use(express.json());
@@ -10,45 +12,51 @@ export function startStreamableHTTP() {
10
12
  const transports = {};
11
13
  // Handle POST requests for client-to-server communication
12
14
  app.post('/mcp', async (req, res) => {
13
- // Check for existing session ID
14
- const sessionId = req.headers['mcp-session-id'];
15
- let transport;
16
- if (sessionId && transports[sessionId]) {
17
- // Reuse existing transport
18
- transport = transports[sessionId];
19
- }
20
- else if (!sessionId && isInitializeRequest(req.body)) {
21
- // New initialization request
22
- transport = new StreamableHTTPServerTransport({
23
- sessionIdGenerator: () => generateUUID(),
24
- onsessioninitialized: (sessionId) => {
25
- // Store the transport by session ID
26
- transports[sessionId] = transport;
27
- }
28
- });
29
- // Clean up transport when closed
30
- transport.onclose = () => {
31
- if (transport.sessionId) {
32
- delete transports[transport.sessionId];
33
- }
34
- };
35
- const server = await getServer();
36
- await server.connect(transport);
15
+ if (config.authorizationHeader === "" ||
16
+ config.authorizationHeader === req.headers[authorizationHeaderName]) {
17
+ // Check for existing session ID
18
+ const sessionId = req.headers['mcp-session-id'];
19
+ let transport;
20
+ if (sessionId && transports[sessionId]) {
21
+ // Reuse existing transport
22
+ transport = transports[sessionId];
23
+ }
24
+ else if (!sessionId && isInitializeRequest(req.body)) {
25
+ // New initialization request
26
+ transport = new StreamableHTTPServerTransport({
27
+ sessionIdGenerator: () => generateUUID(),
28
+ onsessioninitialized: (sessionId) => {
29
+ // Store the transport by session ID
30
+ transports[sessionId] = transport;
31
+ }
32
+ });
33
+ // Clean up transport when closed
34
+ transport.onclose = () => {
35
+ if (transport.sessionId) {
36
+ delete transports[transport.sessionId];
37
+ }
38
+ };
39
+ const server = await getServer(config);
40
+ await server.connect(transport);
41
+ }
42
+ else {
43
+ // Invalid request
44
+ res.status(400).json({
45
+ jsonrpc: '2.0',
46
+ error: {
47
+ code: -32000,
48
+ message: 'Bad Request: No valid session ID provided',
49
+ },
50
+ id: null,
51
+ });
52
+ return;
53
+ }
54
+ // Handle the request
55
+ await transport.handleRequest(req, res, req.body);
37
56
  }
38
57
  else {
39
- // Invalid request
40
- res.status(400).json({
41
- jsonrpc: '2.0',
42
- error: {
43
- code: -32000,
44
- message: 'Bad Request: No valid session ID provided',
45
- },
46
- id: null,
47
- });
48
- return;
58
+ res.status(401).send('Unauthorized');
49
59
  }
50
- // Handle the request
51
- await transport.handleRequest(req, res, req.body);
52
60
  });
53
61
  // Reusable handler for GET and DELETE requests
54
62
  const handleSessionRequest = async (req, res) => {
@@ -1 +1 @@
1
- {"version":3,"file":"streamable-http.js","sourceRoot":"","sources":["../src/streamable-http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streamable-http.js","sourceRoot":"","sources":["../src/streamable-http.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,UAAU,mBAAmB;IAC/B,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,wCAAwC;IACxC,MAAM,UAAU,GAA2D,EAAE,CAAC;IAE9E,0DAA0D;IAC1D,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAChC,IAAI,MAAM,CAAC,mBAAmB,KAAK,EAAE;YACjC,MAAM,CAAC,mBAAmB,KAAK,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,EACrE,CAAC;YACC,gCAAgC;YAChC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;YACtE,IAAI,SAAwC,CAAC;YAE7C,IAAI,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,2BAA2B;gBAC3B,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,CAAC,SAAS,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrD,6BAA6B;gBAC7B,SAAS,GAAG,IAAI,6BAA6B,CAAC;oBAC1C,kBAAkB,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE;oBACxC,oBAAoB,EAAE,CAAC,SAAS,EAAE,EAAE;wBAChC,oCAAoC;wBACpC,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;oBACtC,CAAC;iBACJ,CAAC,CAAC;gBAEH,iCAAiC;gBACjC,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;oBACrB,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;wBACtB,OAAO,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;oBAC3C,CAAC;gBACL,CAAC,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;gBAEvC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACJ,kBAAkB;gBAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACH,IAAI,EAAE,CAAC,KAAK;wBACZ,OAAO,EAAE,2CAA2C;qBACvD;oBACD,EAAE,EAAE,IAAI;iBACX,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,qBAAqB;YACrB,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,MAAM,oBAAoB,GAAG,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,EAAE;QAC/E,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;QACtE,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YACtD,OAAO;QACX,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,iEAAiE;IACjE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAEtC,iDAAiD;IACjD,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAEzC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antonytm/mcp-sitecore-server",
3
- "version": "0.18.0",
3
+ "version": "0.19.1",
4
4
  "description": "A Model Context Protocol server for Sitecore",
5
5
  "files": [
6
6
  "dist",
@@ -23,7 +23,15 @@
23
23
  "start:streamable-http": "npm run build && cross-env TRANSPORT=streamable-http node dist/index.js",
24
24
  "start:stdio": "npm run build && cross-env TRANSPORT=stdio node dist/index.js",
25
25
  "run": "npm run build && node dist/run.js",
26
- "test": "npm run build && npm run bundle && vitest run"
26
+ "test": "npm run build && npm run bundle && vitest run",
27
+ "docker:windows:build": "docker build -t antonytm/mcp-sitecore-windows:0.19.1 -t antonytm/mcp-sitecore-windows:latest --file .\\docker\\windows\\Dockerfile .",
28
+ "docker:windows:run": "docker run -it --rm -p 4001:3001 antonytm/mcp-sitecore-windows:latest",
29
+ "docker:windows:push": "docker push antonytm/mcp-sitecore-windows:0.19.1 && docker push antonytm/mcp-sitecore-windows:latest",
30
+ "docker:windows": "npm run docker:windows:build && npm run docker:windows:push",
31
+ "docker:linux:build": "docker build -t antonytm/mcp-sitecore-linux:0.19.1 -t antonytm/mcp-sitecore-linux:latest --file ./docker/linux/Dockerfile .",
32
+ "docker:linux:run": "docker run -it --rm -p 4001:3001 antonytm/mcp-sitecore-linux:latest",
33
+ "docker:linux:push": "docker push antonytm/mcp-sitecore-linux:0.19.1 && docker push antonytm/mcp-sitecore-linux:latest",
34
+ "docker:linux": "npm run docker:linux:build && npm run docker:linux:push"
27
35
  },
28
36
  "dependencies": {
29
37
  "@antonytm/clixml-parser": "latest",