@antonytm/mcp-sitecore-server 0.17.1 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +6 -0
  2. package/dist/bundle.js +218 -89
  3. package/dist/config.d.ts +11 -1
  4. package/dist/config.js +36 -0
  5. package/dist/config.js.map +1 -1
  6. package/dist/const.d.ts +1 -0
  7. package/dist/const.js +1 -1
  8. package/dist/const.js.map +1 -1
  9. package/dist/register.js +13 -1
  10. package/dist/register.js.map +1 -1
  11. package/dist/server.d.ts +2 -1
  12. package/dist/server.js +3 -32
  13. package/dist/server.js.map +1 -1
  14. package/dist/sse.js +27 -14
  15. package/dist/sse.js.map +1 -1
  16. package/dist/stdio.js +2 -1
  17. package/dist/stdio.js.map +1 -1
  18. package/dist/streamable-http.js +44 -36
  19. package/dist/streamable-http.js.map +1 -1
  20. package/dist/tools/powershell/client.js +2 -0
  21. package/dist/tools/powershell/client.js.map +1 -1
  22. package/dist/tools/powershell/simple/presentation/get-default-layout-device.d.ts +3 -0
  23. package/dist/tools/powershell/simple/presentation/get-default-layout-device.js +9 -0
  24. package/dist/tools/powershell/simple/presentation/get-default-layout-device.js.map +1 -0
  25. package/dist/tools/powershell/simple/presentation/get-layout-device.d.ts +3 -0
  26. package/dist/tools/powershell/simple/presentation/get-layout-device.js +14 -0
  27. package/dist/tools/powershell/simple/presentation/get-layout-device.js.map +1 -0
  28. package/dist/tools/powershell/simple/presentation/merge-layout-by-id.d.ts +3 -0
  29. package/dist/tools/powershell/simple/presentation/merge-layout-by-id.js +22 -0
  30. package/dist/tools/powershell/simple/presentation/merge-layout-by-id.js.map +1 -0
  31. package/dist/tools/powershell/simple/presentation/merge-layout-by-path.d.ts +3 -0
  32. package/dist/tools/powershell/simple/presentation/merge-layout-by-path.js +18 -0
  33. package/dist/tools/powershell/simple/presentation/merge-layout-by-path.js.map +1 -0
  34. package/dist/tools/powershell/simple/presentation/reset-layout-by-id.d.ts +3 -0
  35. package/dist/tools/powershell/simple/presentation/reset-layout-by-id.js +22 -0
  36. package/dist/tools/powershell/simple/presentation/reset-layout-by-id.js.map +1 -0
  37. package/dist/tools/powershell/simple/presentation/reset-layout-by-path.d.ts +3 -0
  38. package/dist/tools/powershell/simple/presentation/reset-layout-by-path.js +22 -0
  39. package/dist/tools/powershell/simple/presentation/reset-layout-by-path.js.map +1 -0
  40. package/package.json +10 -2
package/README.md CHANGED
@@ -78,6 +78,12 @@
78
78
  - [x] `presentation-get-layout-by-path`: returns item presentation layout by path
79
79
  - [x] `presentation-set-layout-by-id`: sets item presentation layout by ID
80
80
  - [x] `presentation-set-layout-by-path`: sets item presentation layout by path
81
+ - [x] `presentation-reset-layout-by-id`: resets item presentation layout by ID
82
+ - [x] `presentation-reset-layout-by-path`: resets item presentation layout by path
83
+ - [x] `presentation-merge-layout-by-id`: Merges final and shared layouts by item Id
84
+ - [x] `presentation-merge-layout-by-path`: Merges final and shared layouts by item path
85
+ - [x] `presentation-get-layout-device`: Gets the layout for the device specified
86
+ - [x] `presentation-get-default-layout-device`: Gets the default layout
81
87
  - [x] Indexing
82
88
  - [x] `indexing-initialize-search-index`: initializes one or more search indexes
83
89
  - [x] `indexing-get-search-index`: returns a search index
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 = [
@@ -7287,6 +7322,9 @@ class McpServer {
7287
7322
  return;
7288
7323
  }
7289
7324
  this.server.assertCanSetRequestHandler(CompleteRequestSchema.shape.method.value);
7325
+ this.server.registerCapabilities({
7326
+ completions: {},
7327
+ });
7290
7328
  this.server.setRequestHandler(CompleteRequestSchema, async (request) => {
7291
7329
  switch (request.params.ref.type) {
7292
7330
  case "ref/prompt":
@@ -7360,8 +7398,9 @@ class McpServer {
7360
7398
  const result = await template.resourceTemplate.listCallback(extra);
7361
7399
  for (const resource of result.resources) {
7362
7400
  templateResources.push({
7363
- ...resource,
7364
7401
  ...template.metadata,
7402
+ // the defined resource metadata should override the template metadata if present
7403
+ ...resource,
7365
7404
  });
7366
7405
  }
7367
7406
  }
@@ -24197,6 +24236,8 @@ class PowershellClient {
24197
24236
  }
24198
24237
  async executeScript(script, parameters = {}) {
24199
24238
  const uuid = generateUUID();
24239
+ // Consider passing `rawOutput=True` and use custom serialization to CSV/JSON
24240
+ // ConvertTo-CliXml that is used internally in SPE relies on System.Management.Automation.Serializer, which seems has bad performance.
24200
24241
  const url = `${this.serverUrl}/-/script/script/?sessionId=${uuid}&rawOutput=False&persistentSession=False `;
24201
24242
  const headers = {
24202
24243
  'Authorization': this.bearertoken || '',
@@ -25848,6 +25889,96 @@ function setLayoutByPathPowershellTool(server, config) {
25848
25889
  });
25849
25890
  }
25850
25891
 
25892
+ function resetLayoutByIdPowershellTool(server, config) {
25893
+ server.tool("presentation-reset-layout-by-id", "Resets the layout of an item by Id.", {
25894
+ id: stringType().describe("The ID of the item to reset the layout for."),
25895
+ finalLayout: booleanType().describe("Specifies layout to be reset. If 'true', the final layout is reset, otherwise - shared layout.").optional(),
25896
+ language: stringType().describe("Specifies the item language to reset layout for.").optional(),
25897
+ }, async (params) => {
25898
+ const command = `Reset-Layout`;
25899
+ const options = {};
25900
+ options["Id"] = params.id;
25901
+ if (params.finalLayout === true) {
25902
+ options["FinalLayout"] = "";
25903
+ }
25904
+ if (params.language) {
25905
+ options["Language"] = params.language;
25906
+ }
25907
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25908
+ });
25909
+ }
25910
+
25911
+ function resetLayoutByPathPowershellTool(server, config) {
25912
+ server.tool("presentation-reset-layout-by-path", "Resets the layout of an item by path.", {
25913
+ path: stringType().describe("The path of the item to reset the layout for.").default("master:"),
25914
+ finalLayout: booleanType().describe("Specifies layout to be reset. If 'true', the final layout is reset, otherwise - shared layout.").optional(),
25915
+ language: stringType().describe("Specifies the item language to reset layout for.").optional(),
25916
+ }, async (params) => {
25917
+ const command = `Reset-Layout`;
25918
+ const options = {};
25919
+ options["Path"] = params.path;
25920
+ if (params.finalLayout === true) {
25921
+ options["FinalLayout"] = "";
25922
+ }
25923
+ if (params.language) {
25924
+ options["Language"] = params.language;
25925
+ }
25926
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25927
+ });
25928
+ }
25929
+
25930
+ function mergeLayoutByIdPowershellTool(server, config) {
25931
+ server.tool("presentation-merge-layout-by-id", "Merges final and shared layouts by item Id.", {
25932
+ id: stringType().describe("The ID of the item to merge layout for."),
25933
+ database: stringType().optional().describe("The database to merge layout for."),
25934
+ language: stringType().optional().describe("The item language to merge layout for."),
25935
+ }, async (params) => {
25936
+ const command = `Merge-Layout`;
25937
+ const options = {};
25938
+ options["Id"] = params.id;
25939
+ if (params.database) {
25940
+ options["Database"] = params.database;
25941
+ }
25942
+ if (params.language) {
25943
+ options["Language"] = params.language;
25944
+ }
25945
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25946
+ });
25947
+ }
25948
+
25949
+ function mergeLayoutByPathPowershellTool(server, config) {
25950
+ server.tool("presentation-merge-layout-by-path", "Merges final and shared layouts by item path.", {
25951
+ path: stringType().describe("The path of the item to merge layout for."),
25952
+ language: stringType().optional().describe("The item language to merge layout for."),
25953
+ }, async (params) => {
25954
+ const command = `Merge-Layout`;
25955
+ const options = {};
25956
+ options["Path"] = params.path;
25957
+ if (params.language) {
25958
+ options["Language"] = params.language;
25959
+ }
25960
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25961
+ });
25962
+ }
25963
+
25964
+ function getLayoutDevicePowershellTool(server, config) {
25965
+ server.tool("presentation-get-layout-device", "Gets the layout for the device specified.", {
25966
+ name: stringType().describe("Name of the device to return."),
25967
+ }, async (params) => {
25968
+ const command = `Get-LayoutDevice`;
25969
+ const options = {};
25970
+ options["Name"] = params.name;
25971
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
25972
+ });
25973
+ }
25974
+
25975
+ function getDefaultLayoutDevicePowershellTool(server, config) {
25976
+ server.tool("presentation-get-default-layout-device", "Gets the default layout.", {}, async () => {
25977
+ const command = `Get-LayoutDevice -Default`;
25978
+ return safeMcpResponse(runGenericPowershellCommand(config, command, {}));
25979
+ });
25980
+ }
25981
+
25851
25982
  var LogLevel;
25852
25983
  (function (LogLevel) {
25853
25984
  LogLevel["DEBUG"] = "DEBUG";
@@ -26037,10 +26168,16 @@ async function registerAll(server, config) {
26037
26168
  getItemReferenceByPathPowerShellTool,
26038
26169
  getItemReferrerByIdPowerShellTool,
26039
26170
  getItemReferrerByPathPowerShellTool,
26040
- //Layout
26171
+ //Presentation
26041
26172
  //Simple Layout PowerShell Tools
26042
26173
  getLayoutByIdPowershellTool,
26043
26174
  getLayoutByPathPowershellTool,
26175
+ resetLayoutByIdPowershellTool,
26176
+ resetLayoutByPathPowershellTool,
26177
+ mergeLayoutByIdPowershellTool,
26178
+ mergeLayoutByPathPowershellTool,
26179
+ getLayoutDevicePowershellTool,
26180
+ getDefaultLayoutDevicePowershellTool,
26044
26181
  //Composite Layout PowerShell Tools
26045
26182
  setLayoutIdPowershellTool,
26046
26183
  setLayoutByPathPowershellTool,
@@ -26063,41 +26200,13 @@ async function registerAll(server, config) {
26063
26200
  ], server, config);
26064
26201
  }
26065
26202
 
26066
- // Read package.json data
26067
- const __filename = fileURLToPath(import.meta.url);
26068
- const __dirname = path.dirname(__filename);
26069
- const packagePath = path.resolve(__dirname, '..', 'package.json');
26070
- const packageData = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
26071
- const { version, name } = packageData;
26072
- async function getServer() {
26203
+ async function getServer(config) {
26073
26204
  const server = new McpServer({
26074
- name: `Sitecore MCP Server: ${name}`,
26205
+ name: `Sitecore MCP Server: ${config.name}`,
26075
26206
  description: "Modle Context Protocol for Sitecore",
26076
- version: version
26207
+ version: config.version || "0.0.1",
26077
26208
  });
26078
- const ENV = envSchema.parse(process.env);
26079
26209
  // Parse the environment variables and set default values
26080
- const config = {
26081
- name: `${name} ${version}`,
26082
- graphQL: {
26083
- endpoint: ENV.GRAPHQL_ENDPOINT || "https://xmcloudcm.localhost/sitecore/api/graph/",
26084
- schemas: ENV.GRAPHQL_SCHEMAS ? ENV.GRAPHQL_SCHEMAS.split(",").map(x => x.trim()) : ["edge", "master"],
26085
- apiKey: ENV.GRAPHQL_API_KEY || "{6D3F291E-66A5-4703-887A-D549AF83D859}",
26086
- headers: ENV.GRAPHQL_HEADERS ? JSON.parse(ENV.GRAPHQL_HEADERS) : {},
26087
- },
26088
- itemService: {
26089
- domain: ENV.ITEM_SERVICE_DOMAIN || "sitecore",
26090
- username: ENV.ITEM_SERVICE_USERNAME || "admin",
26091
- password: ENV.ITEM_SERVICE_PASSWORD || "b",
26092
- serverUrl: ENV.ITEM_SERVICE_SERVER_URL || "https://xmcloudcm.localhost/",
26093
- },
26094
- powershell: {
26095
- domain: ENV.POWERSHELL_DOMAIN || "sitecore",
26096
- username: ENV.POWERSHELL_USERNAME || "admin",
26097
- password: ENV.POWERSHELL_PASSWORD || "b",
26098
- serverUrl: ENV.POWERSHELL_SERVER_URL || "https://xmcloudcm.localhost/",
26099
- },
26100
- };
26101
26210
  server.resource("config", "config://main", async (uri) => {
26102
26211
  return {
26103
26212
  contents: [{
@@ -26121,7 +26230,7 @@ async function getServer() {
26121
26230
  }
26122
26231
 
26123
26232
  async function startSTDIO() {
26124
- const server = await getServer();
26233
+ const server = await getServer(config);
26125
26234
  const transport = new StdioServerTransport();
26126
26235
  await server.connect(transport);
26127
26236
  }
@@ -26323,7 +26432,7 @@ function requireDepd () {
26323
26432
  * Module dependencies.
26324
26433
  */
26325
26434
 
26326
- var relative = path.relative;
26435
+ var relative = require$$0$1.relative;
26327
26436
 
26328
26437
  /**
26329
26438
  * Module exports.
@@ -27284,7 +27393,7 @@ function requireSafer () {
27284
27393
  if (hasRequiredSafer) return safer_1;
27285
27394
  hasRequiredSafer = 1;
27286
27395
 
27287
- var buffer = require$$0$1;
27396
+ var buffer = require$$0$2;
27288
27397
  var Buffer = buffer.Buffer;
27289
27398
 
27290
27399
  var safer = {};
@@ -39136,28 +39245,42 @@ class SSEServerTransport {
39136
39245
  }
39137
39246
  }
39138
39247
 
39248
+ const authorizationHeaderName = "Authorization";
39249
+
39139
39250
  async function startSSE() {
39140
- const server = await getServer();
39251
+ const server = await getServer(config);
39141
39252
  const app = express();
39142
39253
  // to support multiple simultaneous connections we have a lookup object from
39143
39254
  // sessionId to transport
39144
39255
  const transports = {};
39145
- app.get("/sse", async (_, res) => {
39146
- const transport = new SSEServerTransport('/messages', res);
39147
- transports[transport.sessionId] = transport;
39148
- res.on("close", () => {
39149
- delete transports[transport.sessionId];
39150
- });
39151
- 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
+ }
39152
39269
  });
39153
39270
  app.post("/messages", async (req, res) => {
39154
- const sessionId = req.query.sessionId;
39155
- const transport = transports[sessionId];
39156
- if (transport) {
39157
- 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
+ }
39158
39281
  }
39159
39282
  else {
39160
- res.status(400).send('No transport found for sessionId');
39283
+ res.status(401).send('Unauthorized');
39161
39284
  }
39162
39285
  });
39163
39286
  app.listen(3001);
@@ -39698,45 +39821,51 @@ function startStreamableHTTP() {
39698
39821
  const transports = {};
39699
39822
  // Handle POST requests for client-to-server communication
39700
39823
  app.post('/mcp', async (req, res) => {
39701
- // Check for existing session ID
39702
- const sessionId = req.headers['mcp-session-id'];
39703
- let transport;
39704
- if (sessionId && transports[sessionId]) {
39705
- // Reuse existing transport
39706
- transport = transports[sessionId];
39707
- }
39708
- else if (!sessionId && isInitializeRequest(req.body)) {
39709
- // New initialization request
39710
- transport = new StreamableHTTPServerTransport({
39711
- sessionIdGenerator: () => generateUUID(),
39712
- onsessioninitialized: (sessionId) => {
39713
- // Store the transport by session ID
39714
- transports[sessionId] = transport;
39715
- }
39716
- });
39717
- // Clean up transport when closed
39718
- transport.onclose = () => {
39719
- if (transport.sessionId) {
39720
- delete transports[transport.sessionId];
39721
- }
39722
- };
39723
- const server = await getServer();
39724
- 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);
39725
39865
  }
39726
39866
  else {
39727
- // Invalid request
39728
- res.status(400).json({
39729
- jsonrpc: '2.0',
39730
- error: {
39731
- code: -32e3,
39732
- message: 'Bad Request: No valid session ID provided',
39733
- },
39734
- id: null,
39735
- });
39736
- return;
39867
+ res.status(401).send('Unauthorized');
39737
39868
  }
39738
- // Handle the request
39739
- await transport.handleRequest(req, res, req.body);
39740
39869
  });
39741
39870
  // Reusable handler for GET and DELETE requests
39742
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":"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"}
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/register.js CHANGED
@@ -68,6 +68,12 @@ import { getLayoutByIdPowershellTool } from "./tools/powershell/simple/presentat
68
68
  import { getLayoutByPathPowershellTool } from "./tools/powershell/simple/presentation/get-layout-by-path.js";
69
69
  import { setLayoutIdPowershellTool } from "./tools/powershell/composite/presentation/set-layout-by-id.js";
70
70
  import { setLayoutByPathPowershellTool } from "./tools/powershell/composite/presentation/set-layout-by-path.js";
71
+ import { resetLayoutByIdPowershellTool } from "./tools/powershell/simple/presentation/reset-layout-by-id.js";
72
+ import { resetLayoutByPathPowershellTool } from "./tools/powershell/simple/presentation/reset-layout-by-path.js";
73
+ import { mergeLayoutByIdPowershellTool } from "./tools/powershell/simple/presentation/merge-layout-by-id.js";
74
+ import { mergeLayoutByPathPowershellTool } from "./tools/powershell/simple/presentation/merge-layout-by-path.js";
75
+ import { getLayoutDevicePowershellTool } from "./tools/powershell/simple/presentation/get-layout-device.js";
76
+ import { getDefaultLayoutDevicePowershellTool } from "./tools/powershell/simple/presentation/get-default-layout-device.js";
71
77
  import { getLogsPowerShellTool } from "./tools/powershell/composite/logging/get-logs.js";
72
78
  export async function register(array, server, config) {
73
79
  for (const register of array) {
@@ -140,10 +146,16 @@ export async function registerAll(server, config) {
140
146
  getItemReferenceByPathPowerShellTool,
141
147
  getItemReferrerByIdPowerShellTool,
142
148
  getItemReferrerByPathPowerShellTool,
143
- //Layout
149
+ //Presentation
144
150
  //Simple Layout PowerShell Tools
145
151
  getLayoutByIdPowershellTool,
146
152
  getLayoutByPathPowershellTool,
153
+ resetLayoutByIdPowershellTool,
154
+ resetLayoutByPathPowershellTool,
155
+ mergeLayoutByIdPowershellTool,
156
+ mergeLayoutByPathPowershellTool,
157
+ getLayoutDevicePowershellTool,
158
+ getDefaultLayoutDevicePowershellTool,
147
159
  //Composite Layout PowerShell Tools
148
160
  setLayoutIdPowershellTool,
149
161
  setLayoutByPathPowershellTool,
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
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":"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,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,yBAAyB;AACzB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAClE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;AACrE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,SAAS;IAC3B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QACzB,IAAI,EAAE,wBAAwB,IAAI,EAAE;QACpC,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,OAAO;KACnB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAc,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEpD,yDAAyD;IACzD,MAAM,MAAM,GAAW;QACnB,IAAI,EAAE,GAAG,IAAI,IAAI,OAAO,EAAE;QAC1B,OAAO,EAAE;YACL,QAAQ,EAAE,GAAG,CAAC,gBAAgB,IAAI,iDAAiD;YACnF,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC;YACrG,MAAM,EAAE,GAAG,CAAC,eAAe,IAAI,wCAAwC;YACvE,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;SACtE;QACD,WAAW,EAAE;YACT,MAAM,EAAE,GAAG,CAAC,mBAAmB,IAAI,UAAU;YAC7C,QAAQ,EAAE,GAAG,CAAC,qBAAqB,IAAI,OAAO;YAC9C,QAAQ,EAAE,GAAG,CAAC,qBAAqB,IAAI,GAAG;YAC1C,SAAS,EAAE,GAAG,CAAC,uBAAuB,IAAI,8BAA8B;SAC3E;QACD,UAAU,EAAE;YACR,MAAM,EAAE,GAAG,CAAC,iBAAiB,IAAI,UAAU;YAC3C,QAAQ,EAAE,GAAG,CAAC,mBAAmB,IAAI,OAAO;YAC5C,QAAQ,EAAE,GAAG,CAAC,mBAAmB,IAAI,GAAG;YACxC,SAAS,EAAE,GAAG,CAAC,qBAAqB,IAAI,8BAA8B;SACzE;KACJ,CAAC;IAEF,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"}
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":"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"}
@@ -15,6 +15,8 @@ class PowershellClient {
15
15
  }
16
16
  async executeScript(script, parameters = {}) {
17
17
  const uuid = generateUUID();
18
+ // Consider passing `rawOutput=True` and use custom serialization to CSV/JSON
19
+ // ConvertTo-CliXml that is used internally in SPE relies on System.Management.Automation.Serializer, which seems has bad performance.
18
20
  const url = `${this.serverUrl}/-/script/script/?sessionId=${uuid}&rawOutput=False&persistentSession=False `;
19
21
  const headers = {
20
22
  'Authorization': this.bearertoken || '',
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/tools/powershell/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,gBAAgB;IACV,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,WAAW,GAAkB,IAAI,CAAC;IAE1C,YAAY,SAAiB,EAAE,QAAgB,EAAE,QAAgB,EAAE,SAAiB,UAAU;QAC1F,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,aAAkC,EAAE;QACpE,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,+BAA+B,IAAI,2CAA2C,CAAC;QAC5G,MAAM,OAAO,GAAG;YACZ,eAAe,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACvC,cAAc,EAAE,kBAAkB;SACrC,CAAC;QAEF,IAAI,oBAAoB,GAAG,MAAM,CAAC;QAClC,IAAI,UAAU,EAAE,CAAC;YACb,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACjC,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;oBAC/B,oBAAoB,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7C,CAAC;qBACI,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;oBAC5C,oBAAoB,IAAI,KAAK,SAAS,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBACpF,CAAC;qBAAM,CAAC;oBACJ,oBAAoB,IAAI,KAAK,SAAS,KAAK,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;gBACxE,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,oBAAoB,UAAU,IAAI,QAAQ,CAAC;QAE3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI;SAEb,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,aAAkC,EAAE;QACxE,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACxD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI;iBAC3B,IAAI,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,GAAG,CAAC;iBACT,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/tools/powershell/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,gBAAgB;IACV,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,WAAW,GAAkB,IAAI,CAAC;IAE1C,YAAY,SAAiB,EAAE,QAAgB,EAAE,QAAgB,EAAE,SAAiB,UAAU;QAC1F,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,aAAkC,EAAE;QACpE,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAC5B,6EAA6E;QAC7E,sIAAsI;QACtI,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,+BAA+B,IAAI,2CAA2C,CAAC;QAC5G,MAAM,OAAO,GAAG;YACZ,eAAe,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACvC,cAAc,EAAE,kBAAkB;SACrC,CAAC;QAEF,IAAI,oBAAoB,GAAG,MAAM,CAAC;QAClC,IAAI,UAAU,EAAE,CAAC;YACb,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACjC,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;oBAC/B,oBAAoB,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7C,CAAC;qBACI,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;oBAC5C,oBAAoB,IAAI,KAAK,SAAS,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBACpF,CAAC;qBAAM,CAAC;oBACJ,oBAAoB,IAAI,KAAK,SAAS,KAAK,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;gBACxE,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,oBAAoB,UAAU,IAAI,QAAQ,CAAC;QAE3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI;SAEb,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,aAAkC,EAAE;QACxE,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACxD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI;iBAC3B,IAAI,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,GAAG,CAAC;iBACT,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp";
2
+ import type { Config } from "../../../../config.js";
3
+ export declare function getDefaultLayoutDevicePowershellTool(server: McpServer, config: Config): void;
@@ -0,0 +1,9 @@
1
+ import { safeMcpResponse } from "../../../../helper.js";
2
+ import { runGenericPowershellCommand } from "../generic.js";
3
+ export function getDefaultLayoutDevicePowershellTool(server, config) {
4
+ server.tool("presentation-get-default-layout-device", "Gets the default layout.", {}, async () => {
5
+ const command = `Get-LayoutDevice -Default`;
6
+ return safeMcpResponse(runGenericPowershellCommand(config, command, {}));
7
+ });
8
+ }
9
+ //# sourceMappingURL=get-default-layout-device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-default-layout-device.js","sourceRoot":"","sources":["../../../../../src/tools/powershell/simple/presentation/get-default-layout-device.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,UAAU,oCAAoC,CAAC,MAAiB,EAAE,MAAc;IAClF,MAAM,CAAC,IAAI,CACP,wCAAwC,EACxC,0BAA0B,EAC1B,EAAE,EACF,KAAK,IAAI,EAAE;QACP,MAAM,OAAO,GAAG,2BAA2B,CAAC;QAE5C,OAAO,eAAe,CAAC,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC,CACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp";
2
+ import type { Config } from "../../../../config.js";
3
+ export declare function getLayoutDevicePowershellTool(server: McpServer, config: Config): void;
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+ import { safeMcpResponse } from "../../../../helper.js";
3
+ import { runGenericPowershellCommand } from "../generic.js";
4
+ export function getLayoutDevicePowershellTool(server, config) {
5
+ server.tool("presentation-get-layout-device", "Gets the layout for the device specified.", {
6
+ name: z.string().describe("Name of the device to return."),
7
+ }, async (params) => {
8
+ const command = `Get-LayoutDevice`;
9
+ const options = {};
10
+ options["Name"] = params.name;
11
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
12
+ });
13
+ }
14
+ //# sourceMappingURL=get-layout-device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-layout-device.js","sourceRoot":"","sources":["../../../../../src/tools/powershell/simple/presentation/get-layout-device.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,UAAU,6BAA6B,CAAC,MAAiB,EAAE,MAAc;IAC3E,MAAM,CAAC,IAAI,CACP,gCAAgC,EAChC,2CAA2C,EAC3C;QACI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KAC7D,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACb,MAAM,OAAO,GAAG,kBAAkB,CAAC;QACnC,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAE9B,OAAO,eAAe,CAAC,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAClF,CAAC,CACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp";
2
+ import type { Config } from "../../../../config.js";
3
+ export declare function mergeLayoutByIdPowershellTool(server: McpServer, config: Config): void;
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ import { safeMcpResponse } from "../../../../helper.js";
3
+ import { runGenericPowershellCommand } from "../generic.js";
4
+ export function mergeLayoutByIdPowershellTool(server, config) {
5
+ server.tool("presentation-merge-layout-by-id", "Merges final and shared layouts by item Id.", {
6
+ id: z.string().describe("The ID of the item to merge layout for."),
7
+ database: z.string().optional().describe("The database to merge layout for."),
8
+ language: z.string().optional().describe("The item language to merge layout for."),
9
+ }, async (params) => {
10
+ const command = `Merge-Layout`;
11
+ const options = {};
12
+ options["Id"] = params.id;
13
+ if (params.database) {
14
+ options["Database"] = params.database;
15
+ }
16
+ if (params.language) {
17
+ options["Language"] = params.language;
18
+ }
19
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
20
+ });
21
+ }
22
+ //# sourceMappingURL=merge-layout-by-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-layout-by-id.js","sourceRoot":"","sources":["../../../../../src/tools/powershell/simple/presentation/merge-layout-by-id.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,UAAU,6BAA6B,CAAC,MAAiB,EAAE,MAAc;IAC3E,MAAM,CAAC,IAAI,CACP,iCAAiC,EACjC,6CAA6C,EAC7C;QACI,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC7E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KACrF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACb,MAAM,OAAO,GAAG,cAAc,CAAC;QAC/B,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;QAE1B,IAAI,MAAM,CAAC,QAAQ,EACnB,CAAC;YACG,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EACnB,CAAC;YACG,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,CAAC;QAED,OAAO,eAAe,CAAC,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAClF,CAAC,CACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp";
2
+ import type { Config } from "../../../../config.js";
3
+ export declare function mergeLayoutByPathPowershellTool(server: McpServer, config: Config): void;
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ import { safeMcpResponse } from "../../../../helper.js";
3
+ import { runGenericPowershellCommand } from "../generic.js";
4
+ export function mergeLayoutByPathPowershellTool(server, config) {
5
+ server.tool("presentation-merge-layout-by-path", "Merges final and shared layouts by item path.", {
6
+ path: z.string().describe("The path of the item to merge layout for."),
7
+ language: z.string().optional().describe("The item language to merge layout for."),
8
+ }, async (params) => {
9
+ const command = `Merge-Layout`;
10
+ const options = {};
11
+ options["Path"] = params.path;
12
+ if (params.language) {
13
+ options["Language"] = params.language;
14
+ }
15
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
16
+ });
17
+ }
18
+ //# sourceMappingURL=merge-layout-by-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-layout-by-path.js","sourceRoot":"","sources":["../../../../../src/tools/powershell/simple/presentation/merge-layout-by-path.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,UAAU,+BAA+B,CAAC,MAAiB,EAAE,MAAc;IAC7E,MAAM,CAAC,IAAI,CACP,mCAAmC,EACnC,+CAA+C,EAC/C;QACI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QACtE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KACrF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACb,MAAM,OAAO,GAAG,cAAc,CAAC;QAC/B,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAE9B,IAAI,MAAM,CAAC,QAAQ,EACnB,CAAC;YACG,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,CAAC;QAED,OAAO,eAAe,CAAC,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAClF,CAAC,CACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp";
2
+ import type { Config } from "../../../../config.js";
3
+ export declare function resetLayoutByIdPowershellTool(server: McpServer, config: Config): void;
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ import { safeMcpResponse } from "../../../../helper.js";
3
+ import { runGenericPowershellCommand } from "../generic.js";
4
+ export function resetLayoutByIdPowershellTool(server, config) {
5
+ server.tool("presentation-reset-layout-by-id", "Resets the layout of an item by Id.", {
6
+ id: z.string().describe("The ID of the item to reset the layout for."),
7
+ finalLayout: z.boolean().describe("Specifies layout to be reset. If 'true', the final layout is reset, otherwise - shared layout.").optional(),
8
+ language: z.string().describe("Specifies the item language to reset layout for.").optional(),
9
+ }, async (params) => {
10
+ const command = `Reset-Layout`;
11
+ const options = {};
12
+ options["Id"] = params.id;
13
+ if (params.finalLayout === true) {
14
+ options["FinalLayout"] = "";
15
+ }
16
+ if (params.language) {
17
+ options["Language"] = params.language;
18
+ }
19
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
20
+ });
21
+ }
22
+ //# sourceMappingURL=reset-layout-by-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset-layout-by-id.js","sourceRoot":"","sources":["../../../../../src/tools/powershell/simple/presentation/reset-layout-by-id.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,UAAU,6BAA6B,CAAC,MAAiB,EAAE,MAAc;IAC3E,MAAM,CAAC,IAAI,CACP,iCAAiC,EACjC,qCAAqC,EACrC;QACI,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QACtE,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,gGAAgG,CAAC,CAAC,QAAQ,EAAE;QAC9I,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC,CAAC,QAAQ,EAAE;KAC/F,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACb,MAAM,OAAO,GAAG,cAAc,CAAC;QAC/B,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;QAE1B,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,EAC/B,CAAC;YACG,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EACnB,CAAC;YACG,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,CAAC;QAED,OAAO,eAAe,CAAC,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAClF,CAAC,CACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp";
2
+ import type { Config } from "../../../../config.js";
3
+ export declare function resetLayoutByPathPowershellTool(server: McpServer, config: Config): void;
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ import { safeMcpResponse } from "../../../../helper.js";
3
+ import { runGenericPowershellCommand } from "../generic.js";
4
+ export function resetLayoutByPathPowershellTool(server, config) {
5
+ server.tool("presentation-reset-layout-by-path", "Resets the layout of an item by path.", {
6
+ path: z.string().describe("The path of the item to reset the layout for.").default("master:"),
7
+ finalLayout: z.boolean().describe("Specifies layout to be reset. If 'true', the final layout is reset, otherwise - shared layout.").optional(),
8
+ language: z.string().describe("Specifies the item language to reset layout for.").optional(),
9
+ }, async (params) => {
10
+ const command = `Reset-Layout`;
11
+ const options = {};
12
+ options["Path"] = params.path;
13
+ if (params.finalLayout === true) {
14
+ options["FinalLayout"] = "";
15
+ }
16
+ if (params.language) {
17
+ options["Language"] = params.language;
18
+ }
19
+ return safeMcpResponse(runGenericPowershellCommand(config, command, options));
20
+ });
21
+ }
22
+ //# sourceMappingURL=reset-layout-by-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset-layout-by-path.js","sourceRoot":"","sources":["../../../../../src/tools/powershell/simple/presentation/reset-layout-by-path.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,UAAU,+BAA+B,CAAC,MAAiB,EAAE,MAAc;IAC7E,MAAM,CAAC,IAAI,CACP,mCAAmC,EACnC,uCAAuC,EACvC;QACI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAC7F,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,gGAAgG,CAAC,CAAC,QAAQ,EAAE;QAC9I,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC,CAAC,QAAQ,EAAE;KAC/F,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACb,MAAM,OAAO,GAAG,cAAc,CAAC;QAC/B,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAE9B,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,EAC/B,CAAC;YACG,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EACnB,CAAC;YACG,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,CAAC;QAED,OAAO,eAAe,CAAC,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAClF,CAAC,CACJ,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antonytm/mcp-sitecore-server",
3
- "version": "0.17.1",
3
+ "version": "0.19.0",
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.0 -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.0 && 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.0 -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.0 && 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",