@loadmill/mcp 0.0.2-rc.5 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,12 +1,13 @@
1
1
  # Loadmill MCP Server
2
2
 
3
- This package provides a STDIO-based MCP (Message Control Protocol) server. It is designed to be integrated into your workflow, allowing communication over standard input/output streams.
3
+ This package provides a STDIO-based MCP server. It is designed to be integrated into your workflow, allowing LLM interact with Loadmill.
4
4
 
5
5
  ## Use Cases
6
6
  - Query Loadmill for information
7
7
  - Execute Loadmill tests
8
8
  - Write and maintain Loadmill tests (TBD)
9
9
 
10
+ *Note*: As always, when working with MCPs, make sure you are on `Agent` mode
10
11
 
11
12
  ## Install
12
13
 
@@ -31,4 +32,41 @@ This package provides a STDIO-based MCP (Message Control Protocol) server. It is
31
32
  "password": true
32
33
  }]
33
34
  }
34
- ```
35
+ ```
36
+
37
+ ### Cursor
38
+
39
+ ```
40
+ {
41
+ "mcpServers": {
42
+ // other MCP servers...
43
+ "loadmill": {
44
+ "command": "npx",
45
+ "args": ["@loadmill/mcp"],
46
+ "env": {
47
+ "LOADMILL_API_TOKEN": "${env:LOADMILL_API_TOKEN}"
48
+ }
49
+ }
50
+ }
51
+ }
52
+ ```
53
+
54
+ ## MCP Capabilities
55
+
56
+ This server declares the following MCP capabilities:
57
+
58
+ - Tools: Supports `list_tools` and `call_tool`.
59
+ - Search Loadmill test suites.
60
+ - Search Loadmill test suite runs.
61
+ - Run a specific test suite.
62
+ - Fetch details of a test suite run.
63
+ - Fetch details of a specific suite flow run.
64
+ - Search Loadmill test plans.
65
+ - Run a specific test plan (with optional labels/overrides).
66
+ - Fetch details of a test plan run.
67
+ - List all available labels in Loadmill.
68
+
69
+ - Prompts: Supports `list_prompts` and `get_prompt`.
70
+ - Investigate failed test: Analyze failed test results and suggest next steps.
71
+
72
+ - Resources: (TBD) Supports `list_resources` and `read_resource` (declared; not yet implemented).
@@ -1,8 +1,10 @@
1
1
  export declare const MCP_SERVER_NAME = "loadmill-mcp-server";
2
2
  export declare const MCP_SERVER_VERSION = "0.0.1";
3
3
  export declare const SEARCH_TEST_SUITES = "search_test_suites";
4
+ export declare const SEARCH_TEST_SUITE_RUNS = "search_test_suite_runs";
4
5
  export declare const RUN_TEST_SUITE = "run_test_suite";
5
6
  export declare const GET_TEST_SUITE_RUN = "get_test_suite_run";
7
+ export declare const GET_TEST_SUITE_FLOW_RUN = "get_test_suite_flow_run";
6
8
  export declare const SEARCH_TEST_PLAN = "search_test_plans";
7
9
  export declare const RUN_TEST_PLAN = "run_test_plans";
8
10
  export declare const GET_TEST_PLAN_RUN = "get_test_plan_run";
package/dist/constants.js CHANGED
@@ -1,20 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AVALIABLE_TOOLS = exports.GET_LABELS = exports.GET_TEST_PLAN_RUN = exports.RUN_TEST_PLAN = exports.SEARCH_TEST_PLAN = exports.GET_TEST_SUITE_RUN = exports.RUN_TEST_SUITE = exports.SEARCH_TEST_SUITES = exports.MCP_SERVER_VERSION = exports.MCP_SERVER_NAME = void 0;
3
+ exports.AVALIABLE_TOOLS = exports.GET_LABELS = exports.GET_TEST_PLAN_RUN = exports.RUN_TEST_PLAN = exports.SEARCH_TEST_PLAN = exports.GET_TEST_SUITE_FLOW_RUN = exports.GET_TEST_SUITE_RUN = exports.RUN_TEST_SUITE = exports.SEARCH_TEST_SUITE_RUNS = exports.SEARCH_TEST_SUITES = exports.MCP_SERVER_VERSION = exports.MCP_SERVER_NAME = void 0;
4
4
  exports.MCP_SERVER_NAME = 'loadmill-mcp-server';
5
5
  exports.MCP_SERVER_VERSION = '0.0.1';
6
6
  //tools
7
7
  exports.SEARCH_TEST_SUITES = 'search_test_suites';
8
+ exports.SEARCH_TEST_SUITE_RUNS = 'search_test_suite_runs';
8
9
  exports.RUN_TEST_SUITE = 'run_test_suite';
9
10
  exports.GET_TEST_SUITE_RUN = 'get_test_suite_run';
11
+ exports.GET_TEST_SUITE_FLOW_RUN = 'get_test_suite_flow_run';
10
12
  exports.SEARCH_TEST_PLAN = 'search_test_plans';
11
13
  exports.RUN_TEST_PLAN = 'run_test_plans';
12
14
  exports.GET_TEST_PLAN_RUN = 'get_test_plan_run';
13
15
  exports.GET_LABELS = 'get_labels';
14
16
  exports.AVALIABLE_TOOLS = [
15
17
  exports.SEARCH_TEST_SUITES,
18
+ exports.SEARCH_TEST_SUITE_RUNS,
16
19
  exports.RUN_TEST_SUITE,
17
20
  exports.GET_TEST_SUITE_RUN,
21
+ exports.GET_TEST_SUITE_FLOW_RUN,
18
22
  exports.GET_LABELS,
19
23
  exports.SEARCH_TEST_PLAN,
20
24
  exports.RUN_TEST_PLAN,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AACa,QAAA,eAAe,GAAG,qBAAqB,CAAC;AACxC,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAE1C,OAAO;AACM,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,cAAc,GAAG,gBAAgB,CAAC;AAClC,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AACvC,QAAA,aAAa,GAAG,gBAAgB,CAAC;AACjC,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,UAAU,GAAG,YAAY,CAAC;AAE1B,QAAA,eAAe,GAAG;IAC7B,0BAAkB;IAClB,sBAAc;IACd,0BAAkB;IAClB,kBAAU;IACV,wBAAgB;IAChB,qBAAa;IACb,yBAAiB;CAClB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AACa,QAAA,eAAe,GAAG,qBAAqB,CAAC;AACxC,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAE1C,OAAO;AACM,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAClD,QAAA,cAAc,GAAG,gBAAgB,CAAC;AAClC,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,uBAAuB,GAAG,yBAAyB,CAAC;AACpD,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AACvC,QAAA,aAAa,GAAG,gBAAgB,CAAC;AACjC,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,UAAU,GAAG,YAAY,CAAC;AAE1B,QAAA,eAAe,GAAG;IAC7B,0BAAkB;IAClB,8BAAsB;IACtB,sBAAc;IACd,0BAAkB;IAClB,+BAAuB;IACvB,kBAAU;IACV,wBAAgB;IAChB,qBAAa;IACb,yBAAiB;CAClB,CAAC"}
@@ -13,10 +13,8 @@ const sendHttpRequest = async (options) => {
13
13
  return await _executeRequest(options);
14
14
  }
15
15
  catch (err) {
16
- // eslint-disable-next-line no-console
17
16
  console.error(`Error during ${(options.method || HttpMethods.GET).toUpperCase()} request to ${options.url}:`, err);
18
17
  if (_shouldRetry(err)) {
19
- // eslint-disable-next-line no-console
20
18
  console.log(`Retrying ${(options.method || HttpMethods.GET).toUpperCase()} request to ${options.url}...`);
21
19
  await _delay(RETRY_DELAY_MS);
22
20
  return await _executeRequest(options);
@@ -30,9 +28,7 @@ const _executeRequest = async (options) => {
30
28
  let request = superagent_1.default[method](url)
31
29
  .auth(LOADMILL_API_TOKEN)
32
30
  .timeout(DEFAULT_TIMEOUT_MS);
33
- if (query) {
34
- request = request.query(query);
35
- }
31
+ request = request.query({ 'source': 'mcp', ...(query || {}) });
36
32
  if (body) {
37
33
  request = request.send(body);
38
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http-request.js","sourceRoot":"","sources":["../src/http-request.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAoC;AAEpC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAC,CAAC,aAAa;AAC/E,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,WAAW;AACxC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAEnD,MAAM,eAAe,GAAG,KAAK,EAAE,OAA2B,EAAE,EAAE;IACnE,IAAI;QACF,OAAO,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;KACvC;IACD,OAAO,GAAG,EAAE;QACV,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,eAAe,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACnH,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;YACrB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,eAAe,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1G,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;YAC7B,OAAO,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;SACvC;QACD,MAAM,GAAG,CAAC;KACX;AACH,CAAC,CAAC;AAfW,QAAA,eAAe,mBAe1B;AAEF,MAAM,eAAe,GAAG,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5D,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAC/D,IAAI,OAAO,GAAG,oBAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;SAClC,IAAI,CAAC,kBAAkB,CAAC;SACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE/B,IAAI,KAAK,EAAE;QACT,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAChC;IAED,IAAI,IAAI,EAAE;QACR,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,OAAO,MAAM,OAAO,CAAC;AACvB,CAAC,CAAC;AAEF,0BAA0B;AAC1B,MAAM,YAAY,GAAG,CAAC,GAAG,EAAW,EAAE;IACpC,OAAO,GAAG,CAAC,OAAO;QAChB,GAAG,CAAC,IAAI,KAAK,cAAc;QAC3B,GAAG,CAAC,IAAI,KAAK,cAAc;QAC3B,GAAG,CAAC,IAAI,KAAK,WAAW;QACxB,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAS/E,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,4BAAa,CAAA;IACb,0BAAW,CAAA;IACX,gCAAiB,CAAA;IACjB,8BAAe,CAAA;AACjB,CAAC,EANW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAMtB"}
1
+ {"version":3,"file":"http-request.js","sourceRoot":"","sources":["../src/http-request.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAoC;AAEpC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAC,CAAC,aAAa;AAC/E,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,WAAW;AACxC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAEnD,MAAM,eAAe,GAAG,KAAK,EAAE,OAA2B,EAAE,EAAE;IACnE,IAAI;QACF,OAAO,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;KACvC;IACD,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,eAAe,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACnH,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,eAAe,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1G,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;YAC7B,OAAO,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;SACvC;QACD,MAAM,GAAG,CAAC;KACX;AACH,CAAC,CAAC;AAbW,QAAA,eAAe,mBAa1B;AAEF,MAAM,eAAe,GAAG,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5D,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAC/D,IAAI,OAAO,GAAG,oBAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;SAClC,IAAI,CAAC,kBAAkB,CAAC;SACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE/B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/D,IAAI,IAAI,EAAE;QACR,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,OAAO,MAAM,OAAO,CAAC;AACvB,CAAC,CAAC;AAEF,0BAA0B;AAC1B,MAAM,YAAY,GAAG,CAAC,GAAG,EAAW,EAAE;IACpC,OAAO,GAAG,CAAC,OAAO;QAChB,GAAG,CAAC,IAAI,KAAK,cAAc;QAC3B,GAAG,CAAC,IAAI,KAAK,cAAc;QAC3B,GAAG,CAAC,IAAI,KAAK,WAAW;QACxB,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAS/E,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,4BAAa,CAAA;IACb,0BAAW,CAAA;IACX,gCAAiB,CAAA;IACjB,8BAAe,CAAA;AACjB,CAAC,EANW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAMtB"}
package/dist/index.js CHANGED
@@ -4,11 +4,9 @@ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
4
4
  const mcp_server_1 = require("./mcp-server");
5
5
  const transport = new stdio_js_1.StdioServerTransport();
6
6
  transport.onmessage = async (message) => {
7
- // eslint-disable-next-line no-console
8
7
  console.error('Loadmill MCP:\n' + JSON.stringify(message, null, 2));
9
8
  };
10
9
  transport.onerror = async (error) => {
11
- // eslint-disable-next-line no-console
12
10
  console.error('Loadmill MCP Error:\n' + JSON.stringify(error, null, 2));
13
11
  };
14
12
  exports.default = async () => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA,wEAAiF;AACjF,6CAAyC;AAEzC,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;AAE7C,SAAS,CAAC,SAAS,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE;IACtC,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF,SAAS,CAAC,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE;IAClC,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AAGF,kBAAe,KAAK,IAAI,EAAE;IACxB,MAAM,sBAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA,wEAAiF;AACjF,6CAAyC;AAEzC,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;AAE7C,SAAS,CAAC,SAAS,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE;IACtC,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF,SAAS,CAAC,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE;IAClC,OAAO,CAAC,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AAGF,kBAAe,KAAK,IAAI,EAAE;IACxB,MAAM,sBAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC,CAAC"}
@@ -4,6 +4,7 @@ exports.handlers = void 0;
4
4
  const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
5
5
  const constants_js_1 = require("./constants.js");
6
6
  const tools_js_1 = require("./tools.js");
7
+ const utils_js_1 = require("./utils.js");
7
8
  exports.handlers = [
8
9
  {
9
10
  schema: types_js_1.ListToolsRequestSchema,
@@ -35,7 +36,25 @@ exports.handlers = [
35
36
  },
36
37
  },
37
38
  {
38
- name: 'run_test_suite',
39
+ name: constants_js_1.SEARCH_TEST_SUITE_RUNS,
40
+ title: 'Search Test Suite Runs',
41
+ description: 'A tool to search for Loadmill test suite runs. Returns a list of test suite runs',
42
+ inputSchema: {
43
+ type: 'object',
44
+ properties: {
45
+ search: {
46
+ type: 'string',
47
+ description: 'free text filter to search for test suites',
48
+ },
49
+ page: {
50
+ type: 'integer',
51
+ description: 'page number for pagination',
52
+ },
53
+ },
54
+ },
55
+ },
56
+ {
57
+ name: constants_js_1.RUN_TEST_SUITE,
39
58
  title: 'Run Test Suite',
40
59
  description: 'A tool to run a Loadmill test suite. Returns the id of the running suite',
41
60
  inputSchema: {
@@ -49,9 +68,10 @@ exports.handlers = [
49
68
  },
50
69
  },
51
70
  {
52
- name: 'get_test_suite_run',
71
+ name: constants_js_1.GET_TEST_SUITE_RUN,
53
72
  title: 'Get Test Suite Run',
54
- description: 'A tool to get a Loadmill test suite run by its ID. Returns the run details.',
73
+ description: `A tool to get a Loadmill test suite run by its ID.
74
+ Returns the run details including the testSuiteFlowRuns list that can be fetched later and is useful for understanding the flow of the test run.`,
55
75
  inputSchema: {
56
76
  type: 'object',
57
77
  properties: {
@@ -62,6 +82,21 @@ exports.handlers = [
62
82
  },
63
83
  },
64
84
  },
85
+ {
86
+ name: constants_js_1.GET_TEST_SUITE_FLOW_RUN,
87
+ title: 'Get Test Suite Flow Run',
88
+ description: `A tool to get a Loadmill test suite flow run by its ID.
89
+ Returns the run details. Use this when investigating the test run results.`,
90
+ inputSchema: {
91
+ type: 'object',
92
+ properties: {
93
+ flowRunId: {
94
+ type: 'string',
95
+ description: 'ID of the test suite flow run to fetch',
96
+ },
97
+ },
98
+ },
99
+ },
65
100
  {
66
101
  name: constants_js_1.SEARCH_TEST_PLAN,
67
102
  title: 'Search Test Plans',
@@ -77,13 +112,6 @@ exports.handlers = [
77
112
  type: 'integer',
78
113
  description: 'page number for pagination',
79
114
  },
80
- labels: {
81
- type: 'array',
82
- items: {
83
- type: 'string',
84
- description: 'filter suites that have flows with these labels',
85
- },
86
- },
87
115
  },
88
116
  },
89
117
  },
@@ -98,6 +126,18 @@ exports.handlers = [
98
126
  type: 'string',
99
127
  description: 'ID of the test plan to run',
100
128
  },
129
+ labels: {
130
+ type: 'array',
131
+ items: {
132
+ type: 'string',
133
+ description: 'filter suites that have flows with these labels',
134
+ },
135
+ },
136
+ overrideParameters: {
137
+ type: 'string',
138
+ description: `Parameters to override in the test plan.
139
+ A string of comma separated list of key-value pairs, e.g. "param1=value1,param2=value2".`,
140
+ },
101
141
  },
102
142
  },
103
143
  },
@@ -141,6 +181,32 @@ exports.handlers = [
141
181
  return await tool(request.params);
142
182
  },
143
183
  },
184
+ {
185
+ schema: types_js_1.ListPromptsRequestSchema,
186
+ handler: async (_request) => {
187
+ return { prompts };
188
+ },
189
+ },
190
+ {
191
+ schema: types_js_1.GetPromptRequestSchema,
192
+ handler: async (req) => {
193
+ const { name, arguments: args = {} } = req.params;
194
+ const prompt = prompts.find((p) => p.name === name);
195
+ if (!prompt) {
196
+ throw new Error(`Unknown prompt: ${name}`);
197
+ }
198
+ const required = (prompt.inputSchema?.required ?? []);
199
+ const missing = required.filter((k) => args[k] === undefined);
200
+ if (missing.length) {
201
+ throw new Error(`Missing required prompt arguments: ${missing.join(', ')}`);
202
+ }
203
+ const messages = prompt.messages.map((m) => ({
204
+ role: m.role,
205
+ content: (0, utils_js_1.fillTemplate)(m.content, args),
206
+ }));
207
+ return { messages };
208
+ },
209
+ },
144
210
  {
145
211
  schema: types_js_1.ListResourcesRequestSchema,
146
212
  handler: async (_request) => {
@@ -154,4 +220,32 @@ exports.handlers = [
154
220
  },
155
221
  },
156
222
  ];
223
+ const prompts = [
224
+ {
225
+ name: 'investigate_failed_test',
226
+ description: 'Analyze failed test results and suggest next steps',
227
+ messages: [
228
+ {
229
+ role: 'system',
230
+ content: 'You are a QA investigator. Explain failures clearly and suggest next steps.',
231
+ },
232
+ {
233
+ role: 'user',
234
+ content: `The test '{{test_description}}' has failed.\n\n
235
+ Result:\n{{result}}\n\n
236
+ RedactableResult (extended data):\n{{redactableResult}}\n\n
237
+ Please explain the cause and suggest how to fix it.`,
238
+ },
239
+ ],
240
+ inputSchema: {
241
+ type: 'object',
242
+ properties: {
243
+ test_description: { type: 'string' },
244
+ result: { type: 'string' },
245
+ redactableResult: { type: 'string' },
246
+ },
247
+ required: ['test_description', 'result', 'redactableResult'],
248
+ },
249
+ },
250
+ ];
157
251
  //# sourceMappingURL=mcp-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-handler.js","sourceRoot":"","sources":["../src/mcp-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-handler.js","sourceRoot":"","sources":["../src/mcp-handler.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ const initMcpServer = () => {
19
19
  capabilities: {
20
20
  resources: {},
21
21
  tools: {},
22
+ prompts: {},
22
23
  },
23
24
  });
24
25
  setupToolHandlers(server);
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AACnE,2CAAkE;AAClE,qDAA4C;AAE5C,IAAI,MAAc,CAAC;AAGnB,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,aAAa,EAAE,CAAC;KAC1B;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,MAAM,GAAG,IAAI,iBAAM,CACjB;QACE,IAAI,EAAE,2BAAe;QACrB,OAAO,EAAE,8BAAkB;KAC5B,EACD;QACE,YAAY,EAAE;YACZ,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,EAAE;SACV;KACF,CACF,CAAC;IAGF,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,EAAE;IACnC,yBAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEW,QAAA,SAAS,GAAG,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AACnE,2CAAkE;AAClE,qDAA4C;AAE5C,IAAI,MAAc,CAAC;AAGnB,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,aAAa,EAAE,CAAC;KAC1B;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,MAAM,GAAG,IAAI,iBAAM,CACjB;QACE,IAAI,EAAE,2BAAe;QACrB,OAAO,EAAE,8BAAkB;KAC5B,EACD;QACE,YAAY,EAAE;YACZ,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;SACZ;KACF,CACF,CAAC;IAGF,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,EAAE;IACnC,yBAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEW,QAAA,SAAS,GAAG,UAAU,EAAE,CAAC"}
package/dist/tools.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toolsTasks = void 0;
4
4
  const http_request_js_1 = require("./http-request.js");
5
5
  const constants_js_1 = require("./constants.js");
6
+ const utils_js_1 = require("./utils.js");
6
7
  const LOADMILL_URL = process.env.LOADMILL_URL || 'https://app.loadmill.com';
7
8
  const BASE_URL = LOADMILL_URL + '/api';
8
9
  // todo make sure all return in the same allowed pattern
@@ -29,6 +30,27 @@ exports.toolsTasks = {
29
30
  }],
30
31
  };
31
32
  },
33
+ [constants_js_1.SEARCH_TEST_SUITE_RUNS]: async (params) => {
34
+ const args = params.arguments;
35
+ // eslint-disable-next-line no-console
36
+ console.log('Searching test suite runs with args:', args);
37
+ const response = await (0, http_request_js_1.sendHttpRequest)({
38
+ method: http_request_js_1.HttpMethods.GET,
39
+ url: `${BASE_URL}/test-suites-runs/flows`,
40
+ query: {
41
+ search: args.search || '',
42
+ filter: args.filter || 'All',
43
+ fromDateFilter: args.fromDateFilter || '',
44
+ toDateFilter: args.toDateFilter || '',
45
+ },
46
+ });
47
+ return {
48
+ content: [{
49
+ type: 'text',
50
+ text: JSON.stringify(response, null, 2),
51
+ }],
52
+ };
53
+ },
32
54
  [constants_js_1.RUN_TEST_SUITE]: async (params) => {
33
55
  const args = params.arguments;
34
56
  // eslint-disable-next-line no-console
@@ -59,6 +81,21 @@ exports.toolsTasks = {
59
81
  }],
60
82
  };
61
83
  },
84
+ [constants_js_1.GET_TEST_SUITE_FLOW_RUN]: async (params) => {
85
+ const args = params.arguments;
86
+ // eslint-disable-next-line no-console
87
+ console.log('Getting test suite flow run with args:', args);
88
+ const response = await (0, http_request_js_1.sendHttpRequest)({
89
+ method: http_request_js_1.HttpMethods.GET,
90
+ url: `${BASE_URL}/test-suites-runs/flows/${args.flowRunId}`,
91
+ });
92
+ return {
93
+ content: [{
94
+ type: 'text',
95
+ text: JSON.stringify(response, null, 2),
96
+ }],
97
+ };
98
+ },
62
99
  [constants_js_1.SEARCH_TEST_PLAN]: async (params) => {
63
100
  const args = params.arguments;
64
101
  // eslint-disable-next-line no-console
@@ -71,7 +108,6 @@ exports.toolsTasks = {
71
108
  filter: args.filter || 'All',
72
109
  fromDateFilter: args.fromDateFilter || '',
73
110
  toDateFilter: args.toDateFilter || '',
74
- labels: args.labels || [],
75
111
  },
76
112
  });
77
113
  return {
@@ -85,9 +121,16 @@ exports.toolsTasks = {
85
121
  const args = params.arguments;
86
122
  // eslint-disable-next-line no-console
87
123
  console.log('Running test plan with args:', args);
124
+ // AI decides to use both for some reason
125
+ const overrideParameters = args.overrideParameters && (0, utils_js_1.toLoadmillParams)(args.overrideParameters);
126
+ const parameters = args.parameters && (0, utils_js_1.toLoadmillParams)(args.parameters);
88
127
  const response = await (0, http_request_js_1.sendHttpRequest)({
89
128
  method: http_request_js_1.HttpMethods.POST,
90
129
  url: `${BASE_URL}/test-plans/${args.id}/run`,
130
+ body: {
131
+ labels: args.labels || [],
132
+ overrideParameters: overrideParameters || parameters || {},
133
+ },
91
134
  });
92
135
  return {
93
136
  content: [{
@@ -119,10 +162,18 @@ exports.toolsTasks = {
119
162
  method: http_request_js_1.HttpMethods.GET,
120
163
  url: `${BASE_URL}/labels`,
121
164
  });
165
+ // drop the colors
166
+ const res = JSON.parse(response.text);
167
+ const labels = res.teamLabels.map(tl => {
168
+ return {
169
+ id: tl.id,
170
+ description: tl.description,
171
+ };
172
+ });
122
173
  return {
123
174
  content: [{
124
175
  type: 'text',
125
- text: JSON.stringify(response, null, 2),
176
+ text: JSON.stringify(labels, null, 2),
126
177
  }],
127
178
  };
128
179
  },
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const toLoadmillParams: (rawParams?: string) => {};
2
+ export declare function fillTemplate(tpl: string, args: Record<string, unknown>): string;
package/dist/utils.js ADDED
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fillTemplate = exports.toLoadmillParams = void 0;
4
+ const toLoadmillParams = (rawParams = '') => {
5
+ const parameters = {};
6
+ if (Array.isArray(rawParams)) { // AI shenaniganz
7
+ rawParams = rawParams.join(',');
8
+ }
9
+ rawParams.split(',').forEach(pair => {
10
+ if (!pair) {
11
+ return;
12
+ }
13
+ const pivot = pair.indexOf('=');
14
+ if (pivot <= 0) {
15
+ throw new Error(`Invalid parameter assignment: ${pair}`);
16
+ }
17
+ const name = pair.slice(0, pivot);
18
+ parameters[name] = pair.slice(pivot + 1, pair.length);
19
+ });
20
+ return parameters;
21
+ };
22
+ exports.toLoadmillParams = toLoadmillParams;
23
+ function toStr(v) {
24
+ if (typeof v === 'string') {
25
+ return v;
26
+ }
27
+ try {
28
+ return JSON.stringify(v, null, 2);
29
+ }
30
+ catch {
31
+ return String(v);
32
+ }
33
+ }
34
+ function fillTemplate(tpl, args) {
35
+ return tpl.replace(/{{\s*([\w]+)\s*}}/g, (_, key) => {
36
+ const val = args?.[key];
37
+ return val === undefined || val === null ? '' : toStr(val);
38
+ });
39
+ }
40
+ exports.fillTemplate = fillTemplate;
41
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AACO,MAAM,gBAAgB,GAAG,CAAC,YAAoB,EAAE,EAAE,EAAE;IACzD,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,iBAAiB;QAC/C,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACjC;IAED,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAClC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;SAC1D;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAvBW,QAAA,gBAAgB,oBAuB3B;AAEF,SAAS,KAAK,CAAC,CAAU;IACvB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QACzB,OAAO,CAAC,CAAC;KACV;IACD,IAAI;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KACnC;IAAC,MAAM;QACN,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,GAAW,EAAE,IAA6B;IACrE,OAAO,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAClD,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AALD,oCAKC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loadmill/mcp",
3
- "version": "0.0.2-rc.5",
3
+ "version": "0.0.3",
4
4
  "description": "Loadmill mcp library",
5
5
  "main": "dist/",
6
6
  "module": "src/",