@draftt-io/draftt-mcp 1.0.1 → 1.1.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 (47) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +88 -19
  3. package/dist/api/client.d.ts +16 -7
  4. package/dist/api/client.js +42 -12
  5. package/dist/api/client.js.map +1 -1
  6. package/dist/api/drafttClient.d.ts +14 -11
  7. package/dist/api/drafttClient.js +38 -23
  8. package/dist/api/drafttClient.js.map +1 -1
  9. package/dist/api/responseFormatter.d.ts +6 -6
  10. package/dist/api/responseFormatter.js +160 -7
  11. package/dist/api/responseFormatter.js.map +1 -1
  12. package/dist/handlers/componentHandler.d.ts +4 -2
  13. package/dist/handlers/componentHandler.js +10 -8
  14. package/dist/handlers/componentHandler.js.map +1 -1
  15. package/dist/handlers/drafttHandler.d.ts +10 -2
  16. package/dist/handlers/drafttHandler.js +24 -7
  17. package/dist/handlers/drafttHandler.js.map +1 -1
  18. package/dist/handlers/policyHandler.d.ts +10 -6
  19. package/dist/handlers/policyHandler.js +25 -21
  20. package/dist/handlers/policyHandler.js.map +1 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.js +138 -56
  23. package/dist/index.js.map +1 -1
  24. package/dist/mcp-server-sse.d.ts +2 -0
  25. package/dist/mcp-server-sse.js +151 -0
  26. package/dist/mcp-server-sse.js.map +1 -0
  27. package/dist/models/component.d.ts +54 -48
  28. package/dist/models/draftt.d.ts +4 -0
  29. package/dist/models/policy.d.ts +29 -0
  30. package/dist/schemas/componentSchema.d.ts +502 -201
  31. package/dist/schemas/componentSchema.js +155 -41
  32. package/dist/schemas/componentSchema.js.map +1 -1
  33. package/dist/schemas/drafttSchema.d.ts +16 -2
  34. package/dist/schemas/drafttSchema.js +14 -3
  35. package/dist/schemas/drafttSchema.js.map +1 -1
  36. package/dist/schemas/policySchema.d.ts +189 -4
  37. package/dist/schemas/policySchema.js +68 -9
  38. package/dist/schemas/policySchema.js.map +1 -1
  39. package/dist/utils/constants.d.ts +31 -3
  40. package/dist/utils/constants.js +103 -24
  41. package/dist/utils/constants.js.map +1 -1
  42. package/dist/utils/json.d.ts +37 -0
  43. package/dist/utils/json.js +102 -0
  44. package/dist/utils/json.js.map +1 -0
  45. package/dist/utils/logger.d.ts +1 -1
  46. package/dist/utils/logger.js +2 -2
  47. package/package.json +9 -4
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PolicyHandler = void 0;
4
4
  const client_1 = require("../api/client");
5
- const responseFormatter_1 = require("../api/responseFormatter");
6
5
  const logger_1 = require("../utils/logger");
6
+ const json_1 = require("../utils/json");
7
7
  class PolicyHandler {
8
8
  constructor(client) {
9
9
  this.client = client;
@@ -13,14 +13,15 @@ class PolicyHandler {
13
13
  try {
14
14
  logger.debug("Processing policy search with args:", args);
15
15
  const result = await this.client.policySearch(args);
16
- return (0, responseFormatter_1.formatSuccessResponse)(result);
16
+ return (0, json_1.createSafeResponse)(result);
17
17
  }
18
18
  catch (error) {
19
19
  logger.error("Error in policy search:", error);
20
20
  if (error instanceof client_1.ApiError) {
21
- return (0, responseFormatter_1.formatErrorResponse)(error.code, error.message, error.details);
21
+ return (0, json_1.createSafeResponse)({ error: { code: error.code, message: error.message, details: error.details } }, true);
22
22
  }
23
- return (0, responseFormatter_1.formatErrorResponse)("INTERNAL_ERROR", `Unexpected error during policy search: ${error instanceof Error ? error.message : String(error)}`);
23
+ const errorMessage = error instanceof Error ? error.message : String(error);
24
+ return (0, json_1.createSafeResponse)({ error: { code: "INTERNAL_ERROR", message: `Unexpected error during policy search: ${errorMessage}` } }, true);
24
25
  }
25
26
  }
26
27
  async get(args) {
@@ -28,35 +29,37 @@ class PolicyHandler {
28
29
  try {
29
30
  logger.debug("Processing policy get with args:", args);
30
31
  if (!args.policyId) {
31
- return (0, responseFormatter_1.formatErrorResponse)("MISSING_PARAM", "Missing required parameter: policyId");
32
+ return (0, json_1.createSafeResponse)({ error: { code: "MISSING_PARAM", message: "Missing required parameter: policyId" } }, true);
32
33
  }
33
34
  const result = await this.client.policyGet(args);
34
- return (0, responseFormatter_1.formatSuccessResponse)(result);
35
+ return (0, json_1.createSafeResponse)(result);
35
36
  }
36
37
  catch (error) {
37
38
  logger.error("Error in policy get:", error);
38
39
  if (error instanceof client_1.ApiError) {
39
- return (0, responseFormatter_1.formatErrorResponse)(error.code, error.message, error.details);
40
+ return (0, json_1.createSafeResponse)({ error: { code: error.code, message: error.message, details: error.details } }, true);
40
41
  }
41
- return (0, responseFormatter_1.formatErrorResponse)("INTERNAL_ERROR", `Unexpected error during policy get: ${error instanceof Error ? error.message : String(error)}`);
42
+ const errorMessage = error instanceof Error ? error.message : String(error);
43
+ return (0, json_1.createSafeResponse)({ error: { code: "INTERNAL_ERROR", message: `Unexpected error during policy get: ${errorMessage}` } }, true);
42
44
  }
43
45
  }
44
- async componentSearch(args) {
46
+ async componentQuery(args) {
45
47
  const logger = (0, logger_1.getLogger)();
46
48
  try {
47
- logger.debug("Processing policy component search with args:", args);
49
+ logger.debug("Processing policy component query with args:", args);
48
50
  if (!args.policyId) {
49
- return (0, responseFormatter_1.formatErrorResponse)("MISSING_PARAM", "Missing required parameter: policyId");
51
+ return (0, json_1.createSafeResponse)({ error: { code: "MISSING_PARAM", message: "Missing required parameter: policyId" } }, true);
50
52
  }
51
- const result = await this.client.policyComponentSearch(args);
52
- return (0, responseFormatter_1.formatSuccessResponse)(result);
53
+ const result = await this.client.policyComponentQuery(args);
54
+ return (0, json_1.createSafeResponse)(result);
53
55
  }
54
56
  catch (error) {
55
- logger.error("Error in policy component search:", error);
57
+ logger.error("Error in policy component query:", error);
56
58
  if (error instanceof client_1.ApiError) {
57
- return (0, responseFormatter_1.formatErrorResponse)(error.code, error.message, error.details);
59
+ return (0, json_1.createSafeResponse)({ error: { code: error.code, message: error.message, details: error.details } }, true);
58
60
  }
59
- return (0, responseFormatter_1.formatErrorResponse)("INTERNAL_ERROR", `Unexpected error during policy component search: ${error instanceof Error ? error.message : String(error)}`);
61
+ const errorMessage = error instanceof Error ? error.message : String(error);
62
+ return (0, json_1.createSafeResponse)({ error: { code: "INTERNAL_ERROR", message: `Unexpected error during policy component query: ${errorMessage}` } }, true);
60
63
  }
61
64
  }
62
65
  async componentGet(args) {
@@ -64,20 +67,21 @@ class PolicyHandler {
64
67
  try {
65
68
  logger.debug("Processing policy component get with args:", args);
66
69
  if (!args.policyId) {
67
- return (0, responseFormatter_1.formatErrorResponse)("MISSING_PARAM", "Missing required parameter: policyId");
70
+ return (0, json_1.createSafeResponse)({ error: { code: "MISSING_PARAM", message: "Missing required parameter: policyId" } }, true);
68
71
  }
69
72
  if (!args.componentId) {
70
- return (0, responseFormatter_1.formatErrorResponse)("MISSING_PARAM", "Missing required parameter: componentId");
73
+ return (0, json_1.createSafeResponse)({ error: { code: "MISSING_PARAM", message: "Missing required parameter: componentId" } }, true);
71
74
  }
72
75
  const result = await this.client.policyComponentGet(args);
73
- return (0, responseFormatter_1.formatSuccessResponse)(result);
76
+ return (0, json_1.createSafeResponse)(result);
74
77
  }
75
78
  catch (error) {
76
79
  logger.error("Error in policy component get:", error);
77
80
  if (error instanceof client_1.ApiError) {
78
- return (0, responseFormatter_1.formatErrorResponse)(error.code, error.message, error.details);
81
+ return (0, json_1.createSafeResponse)({ error: { code: error.code, message: error.message, details: error.details } }, true);
79
82
  }
80
- return (0, responseFormatter_1.formatErrorResponse)("INTERNAL_ERROR", `Unexpected error during policy component get: ${error instanceof Error ? error.message : String(error)}`);
83
+ const errorMessage = error instanceof Error ? error.message : String(error);
84
+ return (0, json_1.createSafeResponse)({ error: { code: "INTERNAL_ERROR", message: `Unexpected error during policy component get: ${errorMessage}` } }, true);
81
85
  }
82
86
  }
83
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"policyHandler.js","sourceRoot":"","sources":["../../src/handlers/policyHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policyHandler.js","sourceRoot":"","sources":["../../src/handlers/policyHandler.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ import 'dotenv/config';
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ require("dotenv/config");
7
8
  const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
8
9
  const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
9
10
  const minimist_1 = __importDefault(require("minimist"));
@@ -38,68 +39,149 @@ async function main() {
38
39
  version: "1.0.0",
39
40
  });
40
41
  // Register tools
41
- server.tool("draftt_component_search", "Search for components in Draftt", componentSchema_1.componentSearchSchema, async (args) => {
42
- const result = await componentHandler.search(args);
43
- return {
44
- content: result.content.map(item => ({
45
- type: "text",
46
- text: item.text
47
- }))
48
- };
42
+ server.tool("draftt_component_search", "Search and filter components in Draftt, component is a cloud asset with version, technology, type, etc.", componentSchema_1.componentSearchSchema.shape, async (args) => {
43
+ try {
44
+ const validatedArgs = componentSchema_1.componentSearchSchema.parse(args);
45
+ const result = await componentHandler.search(validatedArgs);
46
+ return {
47
+ content: result.content
48
+ };
49
+ }
50
+ catch (error) {
51
+ logger.error("Error in draftt_component_search:", error);
52
+ return {
53
+ content: [{
54
+ type: "text",
55
+ text: `Error: ${error instanceof Error ? error.message : 'Unknown error occurred'}`
56
+ }]
57
+ };
58
+ }
49
59
  });
50
- server.tool("draftt_component_get", "Get a detailed information about a component in Draftt", componentSchema_1.componentGetSchema, async (args) => {
51
- const result = await componentHandler.get(args);
52
- return {
53
- content: result.content.map(item => ({
54
- type: "text",
55
- text: item.text
56
- }))
57
- };
60
+ server.tool("draftt_component_get", "Get a detailed information about a component in Draftt where you can get all the data about a component", componentSchema_1.componentGetSchema.shape, async (args) => {
61
+ try {
62
+ const validatedArgs = componentSchema_1.componentGetSchema.parse(args);
63
+ const result = await componentHandler.get(validatedArgs);
64
+ return {
65
+ content: result.content
66
+ };
67
+ }
68
+ catch (error) {
69
+ logger.error("Error in draftt_component_get:", error);
70
+ return {
71
+ content: [{
72
+ type: "text",
73
+ text: `Error: ${error instanceof Error ? error.message : 'Unknown error occurred'}`
74
+ }]
75
+ };
76
+ }
58
77
  });
59
- server.tool("draftt_policy_search", "Search for policies in Draftt", policySchema_1.policySearchSchema, async (args) => {
60
- const result = await policyHandler.search(args);
61
- return {
62
- content: result.content.map(item => ({
63
- type: "text",
64
- text: item.text
65
- }))
66
- };
78
+ server.tool("draftt_policy_search", "Search for policies in Draftt(currently: EOL and Latest and Greatest), we're using policies for assessing specific rules for components, for example, a policy might indicate that a component reached end of life and needs to be updated.", policySchema_1.policySearchSchema.shape, async (args) => {
79
+ try {
80
+ const validatedArgs = policySchema_1.policySearchSchema.parse(args);
81
+ const result = await policyHandler.search(validatedArgs);
82
+ return {
83
+ content: result.content
84
+ };
85
+ }
86
+ catch (error) {
87
+ logger.error("Error in draftt_policy_search:", error);
88
+ return {
89
+ content: [{
90
+ type: "text",
91
+ text: `Error: ${error instanceof Error ? error.message : 'Unknown error occurred'}`
92
+ }]
93
+ };
94
+ }
67
95
  });
68
- server.tool("draftt_policy_get", "Get a detailed information about a policy in Draftt", policySchema_1.policyGetSchema, async (args) => {
69
- const result = await policyHandler.get(args);
70
- return {
71
- content: result.content.map(item => ({
72
- type: "text",
73
- text: item.text
74
- }))
75
- };
96
+ server.tool("draftt_policy_get", "Get a detailed information about a policy in Draftt", policySchema_1.policyGetSchema.shape, async (args) => {
97
+ try {
98
+ const validatedArgs = policySchema_1.policyGetSchema.parse(args);
99
+ const result = await policyHandler.get(validatedArgs);
100
+ return {
101
+ content: result.content
102
+ };
103
+ }
104
+ catch (error) {
105
+ logger.error("Error in draftt_policy_get:", error);
106
+ return {
107
+ content: [{
108
+ type: "text",
109
+ text: `Error: ${error instanceof Error ? error.message : 'Unknown error occurred'}`
110
+ }]
111
+ };
112
+ }
76
113
  });
77
- server.tool("draftt_component_policy_search", "Search for components policies in Draftt", componentSchema_1.policyComponentSearchSchema, async (args) => {
78
- const result = await policyHandler.componentSearch(args);
79
- return {
80
- content: result.content.map(item => ({
81
- type: "text",
82
- text: item.text
83
- }))
84
- };
114
+ server.tool("draftt_policy_component_get", "Get a specific information about a component policy in Draftt, where you can get all the data about a policy component (for example, when the policy component reached end of life, what is the recommended version to upgrade to, etc.)", componentSchema_1.policyComponentGetSchema.shape, async (args) => {
115
+ try {
116
+ const validatedArgs = componentSchema_1.policyComponentGetSchema.parse(args);
117
+ const result = await policyHandler.componentGet(validatedArgs);
118
+ return {
119
+ content: result.content
120
+ };
121
+ }
122
+ catch (error) {
123
+ logger.error("Error in draftt_policy_component_get:", error);
124
+ return {
125
+ content: [{
126
+ type: "text",
127
+ text: `Error: ${error instanceof Error ? error.message : 'Unknown error occurred'}`
128
+ }]
129
+ };
130
+ }
85
131
  });
86
- server.tool("draftt_component_policy_get", "Get a specific information about a component policy in Draftt", componentSchema_1.policyComponentGetSchema, async (args) => {
87
- const result = await policyHandler.componentGet(args);
88
- return {
89
- content: result.content.map(item => ({
90
- type: "text",
91
- text: item.text
92
- }))
93
- };
132
+ server.tool("draftt_get", "draftt representing an upgrade guide. currently for a k8s components only, draftt is a step by step guide for upgrading a k8s component from one version to another, it includes couple of sections (nodes,images, API, etc.), we generating it for a components that integrated to our platform", drafttSchema_1.drafttGetSchema.shape, async (args) => {
133
+ try {
134
+ const validatedArgs = drafttSchema_1.drafttGetSchema.parse(args);
135
+ const result = await drafttHandler.get(validatedArgs);
136
+ return {
137
+ content: result.content
138
+ };
139
+ }
140
+ catch (error) {
141
+ logger.error("Error in draftt_get:", error);
142
+ return {
143
+ content: [{
144
+ type: "text",
145
+ text: `Error: ${error instanceof Error ? error.message : 'Unknown error occurred'}`
146
+ }]
147
+ };
148
+ }
94
149
  });
95
- server.tool("draftt_get", "Get a draftt (k8s upgrade guide) for a k8s component", drafttSchema_1.drafttGetSchema, async (args) => {
96
- const result = await drafttHandler.get(args);
97
- return {
98
- content: result.content.map(item => ({
99
- type: "text",
100
- text: item.text
101
- }))
102
- };
150
+ server.tool("draftt_policy_component_query", "Advanced query for policy components with rich filtering using operators like $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin, $exists. Supports tag filtering, pagination, field selection, and cost analysis. Policy components describe how components match specific policies (e.g., EOL status, compliance requirements).", componentSchema_1.policyComponentQuerySchema.shape, async (args) => {
151
+ try {
152
+ const validatedArgs = componentSchema_1.policyComponentQuerySchema.parse(args);
153
+ const result = await policyHandler.componentQuery(validatedArgs);
154
+ return {
155
+ content: result.content
156
+ };
157
+ }
158
+ catch (error) {
159
+ logger.error("Error in draftt_policy_component_query:", error);
160
+ return {
161
+ content: [{
162
+ type: "text",
163
+ text: `Error: ${error instanceof Error ? error.message : 'Unknown error occurred'}`
164
+ }]
165
+ };
166
+ }
167
+ });
168
+ server.tool("draftt_component_draftt_query", "Query specific draftt sections for a k8s component. Allows requesting specific upgrade guide sections (eksAddOns, deployments, controlPlane, nodes, k8sApi) rather than returning the full upgrade guide. Useful for focused analysis of specific upgrade aspects.", drafttSchema_1.drafttQuerySchema.shape, async (args) => {
169
+ try {
170
+ const validatedArgs = drafttSchema_1.drafttQuerySchema.parse(args);
171
+ const result = await drafttHandler.query(validatedArgs);
172
+ return {
173
+ content: result.content
174
+ };
175
+ }
176
+ catch (error) {
177
+ logger.error("Error in draftt_component_draftt_query:", error);
178
+ return {
179
+ content: [{
180
+ type: "text",
181
+ text: `Error: ${error instanceof Error ? error.message : 'Unknown error occurred'}`
182
+ }]
183
+ };
184
+ }
103
185
  });
104
186
  // Connect to transport
105
187
  const transport = new stdio_js_1.StdioServerTransport();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import 'dotenv/config';
@@ -0,0 +1,151 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ require("dotenv/config");
8
+ const express_1 = __importDefault(require("express"));
9
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
10
+ const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
11
+ const minimist_1 = __importDefault(require("minimist"));
12
+ const drafttClient_1 = require("./api/drafttClient");
13
+ const componentHandler_1 = require("./handlers/componentHandler");
14
+ const policyHandler_1 = require("./handlers/policyHandler");
15
+ const drafttHandler_1 = require("./handlers/drafttHandler");
16
+ const logger_1 = require("./utils/logger");
17
+ const componentSchema_1 = require("./schemas/componentSchema");
18
+ const policySchema_1 = require("./schemas/policySchema");
19
+ const drafttSchema_1 = require("./schemas/drafttSchema");
20
+ function createMcpServer(drafttClient) {
21
+ const componentHandler = new componentHandler_1.ComponentHandler(drafttClient);
22
+ const policyHandler = new policyHandler_1.PolicyHandler(drafttClient);
23
+ const drafttHandler = new drafttHandler_1.DrafttHandler(drafttClient);
24
+ const server = new mcp_js_1.McpServer({
25
+ name: "Draftt MCP Server",
26
+ version: "1.0.0",
27
+ });
28
+ // Register tools
29
+ server.tool("draftt_component_search", "Search and filter components in Draftt, component is a cloud asset with version, technology, type, etc.", componentSchema_1.componentSearchSchema.shape, async (args) => {
30
+ const validatedArgs = componentSchema_1.componentSearchSchema.parse(args);
31
+ const result = await componentHandler.search(validatedArgs);
32
+ return {
33
+ content: result.content.map((item) => ({
34
+ type: "text",
35
+ text: item.text
36
+ }))
37
+ };
38
+ });
39
+ server.tool("draftt_component_get", "Get a detailed information about a component in Draftt where you can get all the data about a component", componentSchema_1.componentGetSchema.shape, async (args) => {
40
+ const validatedArgs = componentSchema_1.componentGetSchema.parse(args);
41
+ const result = await componentHandler.get(validatedArgs);
42
+ return {
43
+ content: result.content.map((item) => ({
44
+ type: "text",
45
+ text: item.text
46
+ }))
47
+ };
48
+ });
49
+ server.tool("draftt_policy_search", "Search for policies in Draftt(currently: EOL and Latest and Greatest), were using policies for indecating specific logic for components, for example, a policy might indicate that a component reached end of life and needs to be updated.", policySchema_1.policySearchSchema.shape, async (args) => {
50
+ const validatedArgs = policySchema_1.policySearchSchema.parse(args);
51
+ const result = await policyHandler.search(validatedArgs);
52
+ return {
53
+ content: result.content.map((item) => ({
54
+ type: "text",
55
+ text: item.text
56
+ }))
57
+ };
58
+ });
59
+ server.tool("draftt_policy_get", "Get a detailed information about a policy in Draftt", policySchema_1.policyGetSchema.shape, async (args) => {
60
+ const validatedArgs = policySchema_1.policyGetSchema.parse(args);
61
+ const result = await policyHandler.get(validatedArgs);
62
+ return {
63
+ content: result.content.map((item) => ({
64
+ type: "text",
65
+ text: item.text
66
+ }))
67
+ };
68
+ });
69
+ server.tool("draftt_policy_component_get", "Get a specific information about a component policy in Draftt, where you can get all the data about a policy component (for example, when the policy component reached end of life, what is the recommended version etc.)", componentSchema_1.policyComponentGetSchema.shape, async (args) => {
70
+ const validatedArgs = componentSchema_1.policyComponentGetSchema.parse(args);
71
+ const result = await policyHandler.componentGet(validatedArgs);
72
+ return {
73
+ content: result.content.map((item) => ({
74
+ type: "text",
75
+ text: item.text
76
+ }))
77
+ };
78
+ });
79
+ server.tool("draftt_get", "Get all draftts (k8s upgrade guide). currently for a k8s components only, draftt is a step by step guide for upgrading a k8s component from one version to another, it includes couple of sections (nodes,images, API, etc.)", drafttSchema_1.drafttGetSchema.shape, async (args) => {
80
+ const validatedArgs = drafttSchema_1.drafttGetSchema.parse(args);
81
+ const result = await drafttHandler.get(validatedArgs);
82
+ return {
83
+ content: result.content.map((item) => ({
84
+ type: "text",
85
+ text: item.text
86
+ }))
87
+ };
88
+ });
89
+ server.tool("draftt_policy_component_query", "Advanced query for policy components with rich filtering using operators like $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin, $exists. Supports tag filtering, pagination, field selection, and cost analysis. Policy components describe how components match specific policies (e.g., EOL status, compliance requirements).", componentSchema_1.policyComponentQuerySchema.shape, async (args) => {
90
+ const validatedArgs = componentSchema_1.policyComponentQuerySchema.parse(args);
91
+ const result = await policyHandler.componentQuery(validatedArgs);
92
+ return {
93
+ content: result.content.map((item) => ({
94
+ type: "text",
95
+ text: item.text
96
+ }))
97
+ };
98
+ });
99
+ server.tool("draftt_component_draftt_query", "Query specific draftt sections for a k8s component. Allows requesting specific upgrade guide sections (eksAddOns, deployments, controlPlane, nodes, k8sApi) rather than returning the full upgrade guide. Useful for focused analysis of specific upgrade aspects.", drafttSchema_1.drafttQuerySchema.shape, async (args) => {
100
+ const validatedArgs = drafttSchema_1.drafttQuerySchema.parse(args);
101
+ const result = await drafttHandler.query(validatedArgs);
102
+ return {
103
+ content: result.content.map((item) => ({
104
+ type: "text",
105
+ text: item.text
106
+ }))
107
+ };
108
+ });
109
+ return server;
110
+ }
111
+ async function main() {
112
+ const argv = (0, minimist_1.default)(process.argv.slice(2));
113
+ const accessKey = argv["access-key"] || process.env.DRAFTT_ACCESS_KEY;
114
+ const debug = argv["debug"] || false;
115
+ const port = argv["port"] || process.env.PORT || 3000;
116
+ const logger = (0, logger_1.setupLogger)(debug);
117
+ logger.info("Starting Draftt MCP Server with SSE transport...");
118
+ if (!accessKey) {
119
+ logger.error("Missing access-key");
120
+ throw new Error("Missing access-key. Please provide one via --access-key or DRAFTT_ACCESS_KEY environment variable");
121
+ }
122
+ const drafttClient = new drafttClient_1.DrafttClient(logger, accessKey);
123
+ const mcpServer = createMcpServer(drafttClient);
124
+ const app = (0, express_1.default)();
125
+ app.get('/healthz', (req, res) => {
126
+ res.json({ status: 'ok', timestamp: new Date().toISOString() });
127
+ });
128
+ app.get('/mcp', async (req, res) => {
129
+ logger.info("New SSE connection established");
130
+ const transport = new sse_js_1.SSEServerTransport('/mcp', res);
131
+ try {
132
+ await mcpServer.connect(transport);
133
+ logger.info("MCP server connected to SSE transport");
134
+ }
135
+ catch (error) {
136
+ logger.error("Error connecting MCP server to SSE transport:", error);
137
+ res.status(500).json({ error: "Internal server error" });
138
+ }
139
+ });
140
+ app.listen(port, () => {
141
+ logger.info(`Draftt MCP SSE Server listening on port ${port}`);
142
+ logger.info(`Health check available at: http://localhost:${port}/healthz`);
143
+ logger.info(`MCP SSE endpoint available at: http://localhost:${port}/mcp`);
144
+ });
145
+ }
146
+ main().catch((error) => {
147
+ const logger = (0, logger_1.getLogger)();
148
+ logger.error("Fatal error in SSE server main():", error);
149
+ process.exit(1);
150
+ });
151
+ //# sourceMappingURL=mcp-server-sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-sse.js","sourceRoot":"","sources":["../src/mcp-server-sse.ts"],"names":[],"mappings":"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"}