@camunda/e2e-test-suite 0.0.613 → 0.0.614
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/resources/mcp_server_saas/mcp_as_tool_process.bpmn +34 -0
- package/dist/resources/mcp_server_saas/mcp_as_tool_temp.bpmn +34 -0
- package/dist/resources/mcp_server_saas/mcp_as_tool_temp_disabled.bpmn +28 -0
- package/dist/resources/mcp_server_saas/mcp_as_tool_v1.bpmn +34 -0
- package/dist/resources/mcp_server_saas/mcp_as_tool_v2.bpmn +34 -0
- package/dist/resources/mcp_server_saas/mcp_as_tool_with_inputs.bpmn +35 -0
- package/dist/resources/mcp_server_saas/mcp_plain_process.bpmn +28 -0
- package/dist/tests/8.10/orchestration-cluster-mcp-server/api/mcp-processes-list-tools.spec.d.ts +1 -0
- package/dist/tests/8.10/orchestration-cluster-mcp-server/api/mcp-processes-list-tools.spec.js +242 -0
- package/dist/utils/constants.d.ts +4 -0
- package/dist/utils/constants.js +6 -1
- package/dist/utils/mcpHelpers.d.ts +9 -0
- package/dist/utils/mcpHelpers.js +94 -0
- package/package.json +1 -1
- package/resources/mcp_server_saas/mcp_as_tool_process.bpmn +34 -0
- package/resources/mcp_server_saas/mcp_as_tool_temp.bpmn +34 -0
- package/resources/mcp_server_saas/mcp_as_tool_temp_disabled.bpmn +28 -0
- package/resources/mcp_server_saas/mcp_as_tool_v1.bpmn +34 -0
- package/resources/mcp_server_saas/mcp_as_tool_v2.bpmn +34 -0
- package/resources/mcp_server_saas/mcp_as_tool_with_inputs.bpmn +35 -0
- package/resources/mcp_server_saas/mcp_plain_process.bpmn +28 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpAsToolProcess" name="MCP As Tool Process" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Tool triggered">
|
|
5
|
+
<bpmn:extensionElements>
|
|
6
|
+
<zeebe:properties>
|
|
7
|
+
<zeebe:property name="io.camunda.tool:name" value="mcp-as-tool-process" />
|
|
8
|
+
<zeebe:property name="io.camunda.tool:purpose" value="Test tool for list tools E2E tests." />
|
|
9
|
+
</zeebe:properties>
|
|
10
|
+
</bpmn:extensionElements>
|
|
11
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
12
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_tool_process" />
|
|
13
|
+
</bpmn:startEvent>
|
|
14
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
15
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
16
|
+
</bpmn:endEvent>
|
|
17
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
18
|
+
</bpmn:process>
|
|
19
|
+
<bpmn:message id="Message_tool_process" name="mcp-as-tool-process" />
|
|
20
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
21
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpAsToolProcess">
|
|
22
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
23
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
24
|
+
</bpmndi:BPMNShape>
|
|
25
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
26
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
27
|
+
</bpmndi:BPMNShape>
|
|
28
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
29
|
+
<di:waypoint x="186" y="118" />
|
|
30
|
+
<di:waypoint x="242" y="118" />
|
|
31
|
+
</bpmndi:BPMNEdge>
|
|
32
|
+
</bpmndi:BPMNPlane>
|
|
33
|
+
</bpmndi:BPMNDiagram>
|
|
34
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpTempTool" name="MCP Temp Tool" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Temp tool triggered">
|
|
5
|
+
<bpmn:extensionElements>
|
|
6
|
+
<zeebe:properties>
|
|
7
|
+
<zeebe:property name="io.camunda.tool:name" value="mcp-temp-tool" />
|
|
8
|
+
<zeebe:property name="io.camunda.tool:purpose" value="Temporary tool deployed and deleted within SC-MCP-08." />
|
|
9
|
+
</zeebe:properties>
|
|
10
|
+
</bpmn:extensionElements>
|
|
11
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
12
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_temp_tool" />
|
|
13
|
+
</bpmn:startEvent>
|
|
14
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
15
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
16
|
+
</bpmn:endEvent>
|
|
17
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
18
|
+
</bpmn:process>
|
|
19
|
+
<bpmn:message id="Message_temp_tool" name="mcp-temp-tool" />
|
|
20
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
21
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpTempTool">
|
|
22
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
23
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
24
|
+
</bpmndi:BPMNShape>
|
|
25
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
26
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
27
|
+
</bpmndi:BPMNShape>
|
|
28
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
29
|
+
<di:waypoint x="186" y="118" />
|
|
30
|
+
<di:waypoint x="242" y="118" />
|
|
31
|
+
</bpmndi:BPMNEdge>
|
|
32
|
+
</bpmndi:BPMNPlane>
|
|
33
|
+
</bpmndi:BPMNDiagram>
|
|
34
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpTempTool" name="MCP Temp Tool" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Temp tool triggered">
|
|
5
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
6
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_temp_tool" />
|
|
7
|
+
</bpmn:startEvent>
|
|
8
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
9
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
10
|
+
</bpmn:endEvent>
|
|
11
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
12
|
+
</bpmn:process>
|
|
13
|
+
<bpmn:message id="Message_temp_tool" name="mcp-temp-tool" />
|
|
14
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
15
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpTempTool">
|
|
16
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
17
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
18
|
+
</bpmndi:BPMNShape>
|
|
19
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
20
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
21
|
+
</bpmndi:BPMNShape>
|
|
22
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
23
|
+
<di:waypoint x="186" y="118" />
|
|
24
|
+
<di:waypoint x="242" y="118" />
|
|
25
|
+
</bpmndi:BPMNEdge>
|
|
26
|
+
</bpmndi:BPMNPlane>
|
|
27
|
+
</bpmndi:BPMNDiagram>
|
|
28
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpVersionedTool" name="MCP Versioned Tool" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Versioned tool triggered">
|
|
5
|
+
<bpmn:extensionElements>
|
|
6
|
+
<zeebe:properties>
|
|
7
|
+
<zeebe:property name="io.camunda.tool:name" value="mcp-versioned-tool" />
|
|
8
|
+
<zeebe:property name="io.camunda.tool:purpose" value="Versioned tool for version binding tests (v1)." />
|
|
9
|
+
</zeebe:properties>
|
|
10
|
+
</bpmn:extensionElements>
|
|
11
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
12
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_versioned_tool" />
|
|
13
|
+
</bpmn:startEvent>
|
|
14
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
15
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
16
|
+
</bpmn:endEvent>
|
|
17
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
18
|
+
</bpmn:process>
|
|
19
|
+
<bpmn:message id="Message_versioned_tool" name="mcp-versioned-tool" />
|
|
20
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
21
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpVersionedTool">
|
|
22
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
23
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
24
|
+
</bpmndi:BPMNShape>
|
|
25
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
26
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
27
|
+
</bpmndi:BPMNShape>
|
|
28
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
29
|
+
<di:waypoint x="186" y="118" />
|
|
30
|
+
<di:waypoint x="242" y="118" />
|
|
31
|
+
</bpmndi:BPMNEdge>
|
|
32
|
+
</bpmndi:BPMNPlane>
|
|
33
|
+
</bpmndi:BPMNDiagram>
|
|
34
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpVersionedTool" name="MCP Versioned Tool" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Versioned tool triggered">
|
|
5
|
+
<bpmn:extensionElements>
|
|
6
|
+
<zeebe:properties>
|
|
7
|
+
<zeebe:property name="io.camunda.tool:name" value="mcp-versioned-tool" />
|
|
8
|
+
<zeebe:property name="io.camunda.tool:purpose" value="Versioned tool for version binding tests (v2)." />
|
|
9
|
+
</zeebe:properties>
|
|
10
|
+
</bpmn:extensionElements>
|
|
11
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
12
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_versioned_tool" />
|
|
13
|
+
</bpmn:startEvent>
|
|
14
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
15
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
16
|
+
</bpmn:endEvent>
|
|
17
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
18
|
+
</bpmn:process>
|
|
19
|
+
<bpmn:message id="Message_versioned_tool" name="mcp-versioned-tool" />
|
|
20
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
21
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpVersionedTool">
|
|
22
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
23
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
24
|
+
</bpmndi:BPMNShape>
|
|
25
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
26
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
27
|
+
</bpmndi:BPMNShape>
|
|
28
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
29
|
+
<di:waypoint x="186" y="118" />
|
|
30
|
+
<di:waypoint x="242" y="118" />
|
|
31
|
+
</bpmndi:BPMNEdge>
|
|
32
|
+
</bpmndi:BPMNPlane>
|
|
33
|
+
</bpmndi:BPMNDiagram>
|
|
34
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpAsToolWithInputs" name="MCP As Tool With Inputs" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Tool with inputs triggered">
|
|
5
|
+
<bpmn:extensionElements>
|
|
6
|
+
<zeebe:properties>
|
|
7
|
+
<zeebe:property name="io.camunda.tool:name" value="mcp-as-tool-with-inputs" />
|
|
8
|
+
<zeebe:property name="io.camunda.tool:purpose" value="Test tool with typed inputs for list tools E2E tests." />
|
|
9
|
+
<zeebe:property name="io.camunda.tool:inputs" value="firstName: optional string, the first name of the person. amount: required integer, the amount to process." />
|
|
10
|
+
</zeebe:properties>
|
|
11
|
+
</bpmn:extensionElements>
|
|
12
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
13
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_tool_with_inputs" />
|
|
14
|
+
</bpmn:startEvent>
|
|
15
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
16
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
17
|
+
</bpmn:endEvent>
|
|
18
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
19
|
+
</bpmn:process>
|
|
20
|
+
<bpmn:message id="Message_tool_with_inputs" name="mcp-as-tool-with-inputs" />
|
|
21
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
22
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpAsToolWithInputs">
|
|
23
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
24
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
25
|
+
</bpmndi:BPMNShape>
|
|
26
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
27
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
28
|
+
</bpmndi:BPMNShape>
|
|
29
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
30
|
+
<di:waypoint x="186" y="118" />
|
|
31
|
+
<di:waypoint x="242" y="118" />
|
|
32
|
+
</bpmndi:BPMNEdge>
|
|
33
|
+
</bpmndi:BPMNPlane>
|
|
34
|
+
</bpmndi:BPMNDiagram>
|
|
35
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpPlainProcess" name="MCP Plain Process" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Plain start">
|
|
5
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
6
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_plain_process" />
|
|
7
|
+
</bpmn:startEvent>
|
|
8
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
9
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
10
|
+
</bpmn:endEvent>
|
|
11
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
12
|
+
</bpmn:process>
|
|
13
|
+
<bpmn:message id="Message_plain_process" name="mcp-plain-process" />
|
|
14
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
15
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpPlainProcess">
|
|
16
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
17
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
18
|
+
</bpmndi:BPMNShape>
|
|
19
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
20
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
21
|
+
</bpmndi:BPMNShape>
|
|
22
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
23
|
+
<di:waypoint x="186" y="118" />
|
|
24
|
+
<di:waypoint x="242" y="118" />
|
|
25
|
+
</bpmndi:BPMNEdge>
|
|
26
|
+
</bpmndi:BPMNPlane>
|
|
27
|
+
</bpmndi:BPMNDiagram>
|
|
28
|
+
</bpmn:definitions>
|
package/dist/tests/8.10/orchestration-cluster-mcp-server/api/mcp-processes-list-tools.spec.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH under
|
|
4
|
+
* one or more contributor license agreements. See the NOTICE file distributed
|
|
5
|
+
* with this work for additional information regarding copyright ownership.
|
|
6
|
+
* Licensed under the Camunda License 1.0. You may not use this file
|
|
7
|
+
* except in compliance with the Camunda License 1.0.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
/*
|
|
11
|
+
* Tests for POST /mcp/processes — tools/list endpoint.
|
|
12
|
+
*
|
|
13
|
+
* Direct JSON-RPC 2.0 calls to the /mcp/processes MCP server. No browser
|
|
14
|
+
* interaction; authentication and BPMN deployment use the same helpers as
|
|
15
|
+
* other tests in this folder.
|
|
16
|
+
*/
|
|
17
|
+
const _8_10_1 = require("../../../../fixtures/8.10");
|
|
18
|
+
const test_1 = require("@playwright/test");
|
|
19
|
+
const apiHelpers_1 = require("../../../../utils/apiHelpers");
|
|
20
|
+
const constants_1 = require("../../../../utils/constants");
|
|
21
|
+
const mcpHelpers_1 = require("../../../../utils/mcpHelpers");
|
|
22
|
+
let authToken;
|
|
23
|
+
let mcpProcessesUrl;
|
|
24
|
+
let messageSubscriptionsSearchUrl;
|
|
25
|
+
let mcpSessionId = null;
|
|
26
|
+
_8_10_1.test.describe
|
|
27
|
+
.parallel('Orchestration Cluster MCP Server — /mcp/processes tools/list', () => {
|
|
28
|
+
_8_10_1.test.beforeAll(async () => {
|
|
29
|
+
authToken = await (0, apiHelpers_1.authSaasAPI)(undefined, 'agentic_cluster');
|
|
30
|
+
mcpProcessesUrl = (0, apiHelpers_1.buildZeebeApiUrl)('/mcp/processes', 'saas', 'agentic_cluster');
|
|
31
|
+
messageSubscriptionsSearchUrl = (0, apiHelpers_1.buildZeebeApiUrl)('/v2/message-subscriptions/search', 'saas', 'agentic_cluster');
|
|
32
|
+
const apiContext = await (0, apiHelpers_1.getApiRequestContext)();
|
|
33
|
+
mcpSessionId = await (0, mcpHelpers_1.initializeMcpSession)(apiContext, mcpProcessesUrl, authToken, mcpSessionId);
|
|
34
|
+
// Deploy independent processes concurrently to reduce beforeAll runtime.
|
|
35
|
+
// Process definitions are never deleted (the C8 REST API does not expose a
|
|
36
|
+
// deletion endpoint), so each run on the shared agentic cluster accumulates
|
|
37
|
+
// versions. Tests use regex matchers and subscription-key lookups rather
|
|
38
|
+
// than fixed names to stay robust across accumulated versions.
|
|
39
|
+
const [toolProcessKey, withInputsKey, plainKey] = await Promise.all([
|
|
40
|
+
(0, apiHelpers_1.deployProcess)('./resources/mcp_server_saas/mcp_as_tool_process.bpmn', authToken, 'saas', 'agentic_cluster'),
|
|
41
|
+
(0, apiHelpers_1.deployProcess)('./resources/mcp_server_saas/mcp_as_tool_with_inputs.bpmn', authToken, 'saas', 'agentic_cluster'),
|
|
42
|
+
(0, apiHelpers_1.deployProcess)('./resources/mcp_server_saas/mcp_plain_process.bpmn', authToken, 'saas', 'agentic_cluster'),
|
|
43
|
+
]);
|
|
44
|
+
if (toolProcessKey == null)
|
|
45
|
+
throw new Error('Failed to deploy mcp_as_tool_process.bpmn');
|
|
46
|
+
if (withInputsKey == null)
|
|
47
|
+
throw new Error('Failed to deploy mcp_as_tool_with_inputs.bpmn');
|
|
48
|
+
if (plainKey == null)
|
|
49
|
+
throw new Error('Failed to deploy mcp_plain_process.bpmn');
|
|
50
|
+
// Deploy v1 then v2 sequentially — order matters so version 2 is the latest.
|
|
51
|
+
// Camunda deduplicates identical BPMN content, so v1 and v2 differ only in
|
|
52
|
+
// their purpose property to force a genuine new version.
|
|
53
|
+
const v1Key = await (0, apiHelpers_1.deployProcess)('./resources/mcp_server_saas/mcp_as_tool_v1.bpmn', authToken, 'saas', 'agentic_cluster');
|
|
54
|
+
if (v1Key == null)
|
|
55
|
+
throw new Error('Failed to deploy mcp_as_tool_v1.bpmn');
|
|
56
|
+
const v2Key = await (0, apiHelpers_1.deployProcess)('./resources/mcp_server_saas/mcp_as_tool_v2.bpmn', authToken, 'saas', 'agentic_cluster');
|
|
57
|
+
if (v2Key == null)
|
|
58
|
+
throw new Error('Failed to deploy mcp_as_tool_v2.bpmn');
|
|
59
|
+
});
|
|
60
|
+
(0, _8_10_1.test)('SC-MCP-02 — Static observability tools always present in tools/list', async () => {
|
|
61
|
+
const apiContext = await (0, apiHelpers_1.getApiRequestContext)();
|
|
62
|
+
await (0, test_1.expect)(async () => {
|
|
63
|
+
const tools = await (0, mcpHelpers_1.listTools)(apiContext, mcpProcessesUrl, authToken, mcpSessionId);
|
|
64
|
+
const names = tools.map((t) => t.name);
|
|
65
|
+
(0, test_1.expect)(names).toContain('getProcessInstance');
|
|
66
|
+
(0, test_1.expect)(names).toContain('searchVariables');
|
|
67
|
+
(0, test_1.expect)(names).toContain('searchIncidents');
|
|
68
|
+
}).toPass(constants_1.defaultAssertionOptions);
|
|
69
|
+
});
|
|
70
|
+
(0, _8_10_1.test)('SC-MCP-03 — Deployed MCP process appears as a dynamic tool', async () => {
|
|
71
|
+
const apiContext = await (0, apiHelpers_1.getApiRequestContext)();
|
|
72
|
+
await (0, test_1.expect)(async () => {
|
|
73
|
+
const tools = await (0, mcpHelpers_1.listTools)(apiContext, mcpProcessesUrl, authToken, mcpSessionId);
|
|
74
|
+
const hasToolProcess = tools.some((t) => /^mcp-as-tool-process_\d+$/.test(t.name));
|
|
75
|
+
(0, test_1.expect)(hasToolProcess).toBe(true);
|
|
76
|
+
}).toPass(constants_1.defaultAssertionOptions);
|
|
77
|
+
});
|
|
78
|
+
(0, _8_10_1.test)('SC-MCP-04 — Tool name encodes the messageSubscriptionKey from the search API', async () => {
|
|
79
|
+
const apiContext = await (0, apiHelpers_1.getApiRequestContext)();
|
|
80
|
+
// Resolve the subscription key from the REST API first.
|
|
81
|
+
// Sort by processDefinitionVersion DESC so we always get the latest deployed
|
|
82
|
+
// version's subscription key, not a stale one from a previous CI run.
|
|
83
|
+
let subscriptionKey = null;
|
|
84
|
+
await _8_10_1.test.step('Resolve messageSubscriptionKey via REST API', async () => {
|
|
85
|
+
await (0, test_1.expect)(async () => {
|
|
86
|
+
const res = await apiContext.post(messageSubscriptionsSearchUrl, {
|
|
87
|
+
headers: (0, mcpHelpers_1.buildMcpHeaders)(authToken, mcpSessionId),
|
|
88
|
+
data: {
|
|
89
|
+
filter: {
|
|
90
|
+
processDefinitionId: 'mcpAsToolProcess',
|
|
91
|
+
messageSubscriptionType: 'START_EVENT',
|
|
92
|
+
},
|
|
93
|
+
sort: [{ field: 'processDefinitionVersion', order: 'desc' }],
|
|
94
|
+
page: { limit: 1 },
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
await (0, mcpHelpers_1.assertResponseStatus)(res, 200);
|
|
98
|
+
const json = await res.json();
|
|
99
|
+
(0, test_1.expect)(json.items.length).toBeGreaterThanOrEqual(1);
|
|
100
|
+
subscriptionKey = String(json.items[0].messageSubscriptionKey);
|
|
101
|
+
}).toPass(constants_1.defaultAssertionOptions);
|
|
102
|
+
});
|
|
103
|
+
await _8_10_1.test.step('Verify tool name in tools/list matches subscriptionKey', async () => {
|
|
104
|
+
const expectedName = `mcp-as-tool-process_${subscriptionKey}`;
|
|
105
|
+
await (0, test_1.expect)(async () => {
|
|
106
|
+
const tools = await (0, mcpHelpers_1.listTools)(apiContext, mcpProcessesUrl, authToken, mcpSessionId);
|
|
107
|
+
const names = tools.map((t) => t.name);
|
|
108
|
+
(0, test_1.expect)(names).toContain(expectedName);
|
|
109
|
+
}).toPass(constants_1.defaultAssertionOptions);
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
(0, _8_10_1.test)('SC-MCP-05 — Process with io.camunda.tool:inputs appears as a tool with an object inputSchema', async () => {
|
|
113
|
+
// The server exposes processes as tools regardless of their io.camunda.tool:inputs
|
|
114
|
+
// content. inputSchema is always an empty object schema in this server version
|
|
115
|
+
// (typed JSON Schema generation from extension properties is not yet implemented).
|
|
116
|
+
// extensionProperties are not populated on the entity returned by the internal
|
|
117
|
+
// search service, so description is always empty — not asserted here.
|
|
118
|
+
const apiContext = await (0, apiHelpers_1.getApiRequestContext)();
|
|
119
|
+
await (0, test_1.expect)(async () => {
|
|
120
|
+
const tools = await (0, mcpHelpers_1.listTools)(apiContext, mcpProcessesUrl, authToken, mcpSessionId);
|
|
121
|
+
const withInputsTool = tools.find((t) => /^mcp-as-tool-with-inputs_\d+$/.test(t.name));
|
|
122
|
+
(0, test_1.expect)(withInputsTool).toBeDefined();
|
|
123
|
+
const schema = withInputsTool.inputSchema;
|
|
124
|
+
(0, test_1.expect)(schema).toBeDefined();
|
|
125
|
+
(0, test_1.expect)(schema.type).toBe('object');
|
|
126
|
+
}).toPass(constants_1.defaultAssertionOptions);
|
|
127
|
+
});
|
|
128
|
+
(0, _8_10_1.test)('SC-MCP-06 — Multiple deployed MCP processes each appear as a separate tool', async () => {
|
|
129
|
+
const apiContext = await (0, apiHelpers_1.getApiRequestContext)();
|
|
130
|
+
await (0, test_1.expect)(async () => {
|
|
131
|
+
const tools = await (0, mcpHelpers_1.listTools)(apiContext, mcpProcessesUrl, authToken, mcpSessionId);
|
|
132
|
+
const hasToolProcess = tools.some((t) => /^mcp-as-tool-process_\d+$/.test(t.name));
|
|
133
|
+
const hasWithInputs = tools.some((t) => /^mcp-as-tool-with-inputs_\d+$/.test(t.name));
|
|
134
|
+
(0, test_1.expect)(hasToolProcess).toBe(true);
|
|
135
|
+
(0, test_1.expect)(hasWithInputs).toBe(true);
|
|
136
|
+
}).toPass(constants_1.defaultAssertionOptions);
|
|
137
|
+
});
|
|
138
|
+
(0, _8_10_1.test)('SC-MCP-07 — Message start event without io.camunda.tool:name does not appear as a tool', async () => {
|
|
139
|
+
const apiContext = await (0, apiHelpers_1.getApiRequestContext)();
|
|
140
|
+
// mcp_plain_process.bpmn has a message start event but no io.camunda.tool:* properties.
|
|
141
|
+
// It must not produce a dynamic tool entry in tools/list.
|
|
142
|
+
// Both conditions are checked on the same snapshot inside the retry loop so
|
|
143
|
+
// that eventual consistency cannot produce a false-positive on the negative case.
|
|
144
|
+
await (0, test_1.expect)(async () => {
|
|
145
|
+
const tools = await (0, mcpHelpers_1.listTools)(apiContext, mcpProcessesUrl, authToken, mcpSessionId);
|
|
146
|
+
// Positive anchor: wait until the cluster is settled (mcp-as-tool-process present).
|
|
147
|
+
(0, test_1.expect)(tools.some((t) => /^mcp-as-tool-process_\d+$/.test(t.name))).toBe(true);
|
|
148
|
+
// Negative assertion on the same snapshot.
|
|
149
|
+
(0, test_1.expect)(tools.some((t) => /mcp-plain-process/.test(t.name))).toBe(false);
|
|
150
|
+
}).toPass(constants_1.defaultAssertionOptions);
|
|
151
|
+
});
|
|
152
|
+
(0, _8_10_1.test)('SC-MCP-08 — Tool disappears from tools/list after redeploying without MCP annotation', async () => {
|
|
153
|
+
// Process definition deletion is not available in the C8 REST API.
|
|
154
|
+
// Redeploying the same process with the io.camunda.tool:name property removed
|
|
155
|
+
// creates a new version whose message subscription has no toolName. Camunda
|
|
156
|
+
// marks the old subscription as DELETED, which removes it from tools/list.
|
|
157
|
+
const apiContext = await (0, apiHelpers_1.getApiRequestContext)();
|
|
158
|
+
await _8_10_1.test.step('Deploy temp MCP tool process', async () => {
|
|
159
|
+
const tempKey = await (0, apiHelpers_1.deployProcess)('./resources/mcp_server_saas/mcp_as_tool_temp.bpmn', authToken, 'saas', 'agentic_cluster');
|
|
160
|
+
if (tempKey == null) {
|
|
161
|
+
throw new Error('Failed to deploy temp tool process');
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
await _8_10_1.test.step('Wait for temp tool to appear in tools/list', async () => {
|
|
165
|
+
await (0, test_1.expect)(async () => {
|
|
166
|
+
const tools = await (0, mcpHelpers_1.listTools)(apiContext, mcpProcessesUrl, authToken, mcpSessionId);
|
|
167
|
+
const hasTemp = tools.some((t) => /^mcp-temp-tool_\d+$/.test(t.name));
|
|
168
|
+
(0, test_1.expect)(hasTemp).toBe(true);
|
|
169
|
+
}).toPass(constants_1.defaultAssertionOptions);
|
|
170
|
+
});
|
|
171
|
+
await _8_10_1.test.step('Redeploy without io.camunda.tool:name annotation', async () => {
|
|
172
|
+
// Old subscription transitions to DELETED, new subscription has no toolName
|
|
173
|
+
// and is excluded from tools/list by the server's filter.
|
|
174
|
+
const disabledKey = await (0, apiHelpers_1.deployProcess)('./resources/mcp_server_saas/mcp_as_tool_temp_disabled.bpmn', authToken, 'saas', 'agentic_cluster');
|
|
175
|
+
if (disabledKey == null) {
|
|
176
|
+
throw new Error('Failed to deploy temp tool disabled process');
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
await _8_10_1.test.step('Wait for temp tool to disappear from tools/list', async () => {
|
|
180
|
+
await (0, test_1.expect)(async () => {
|
|
181
|
+
const tools = await (0, mcpHelpers_1.listTools)(apiContext, mcpProcessesUrl, authToken, mcpSessionId);
|
|
182
|
+
const hasTemp = tools.some((t) => /^mcp-temp-tool_\d+$/.test(t.name));
|
|
183
|
+
(0, test_1.expect)(hasTemp).toBe(false);
|
|
184
|
+
}).toPass(constants_1.deletionAssertionOptions);
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
(0, _8_10_1.test)('SC-MCP-09 — Latest version of a versioned process appears as a tool', async () => {
|
|
188
|
+
// The server exposes ALL active message subscriptions that carry the
|
|
189
|
+
// io.camunda.tool:name property, regardless of process definition version.
|
|
190
|
+
// A subscription transitions to DELETED only when the process is redeployed
|
|
191
|
+
// WITHOUT the MCP annotation (tested in SC-MCP-08); redeploying WITH the same
|
|
192
|
+
// annotation keeps both the old and new subscriptions ACTIVE.
|
|
193
|
+
//
|
|
194
|
+
// On a shared cluster, previous CI runs accumulate versions — each deployment
|
|
195
|
+
// adds a new subscription that stays active indefinitely (no deletion API).
|
|
196
|
+
// Therefore we only assert the POSITIVE case: the latest version's subscription
|
|
197
|
+
// key IS present in tools/list. We do not assert that older keys are absent,
|
|
198
|
+
// because the server correctly surfaces all active annotated subscriptions.
|
|
199
|
+
const apiContext = await (0, apiHelpers_1.getApiRequestContext)();
|
|
200
|
+
// Fetch the latest subscription for mcpVersionedTool (version DESC, limit 1).
|
|
201
|
+
let latestSubscriptionKey = null;
|
|
202
|
+
await _8_10_1.test.step('Fetch latest subscription key for mcpVersionedTool', async () => {
|
|
203
|
+
await (0, test_1.expect)(async () => {
|
|
204
|
+
const res = await apiContext.post(messageSubscriptionsSearchUrl, {
|
|
205
|
+
headers: (0, mcpHelpers_1.buildMcpHeaders)(authToken, mcpSessionId),
|
|
206
|
+
data: {
|
|
207
|
+
filter: {
|
|
208
|
+
processDefinitionId: 'mcpVersionedTool',
|
|
209
|
+
messageSubscriptionType: 'START_EVENT',
|
|
210
|
+
},
|
|
211
|
+
sort: [{ field: 'processDefinitionVersion', order: 'desc' }],
|
|
212
|
+
page: { limit: 1 },
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
await (0, mcpHelpers_1.assertResponseStatus)(res, 200);
|
|
216
|
+
const json = await res.json();
|
|
217
|
+
(0, test_1.expect)(json.items.length).toBeGreaterThanOrEqual(1);
|
|
218
|
+
latestSubscriptionKey = String(json.items[0].messageSubscriptionKey);
|
|
219
|
+
}).toPass(constants_1.defaultAssertionOptions);
|
|
220
|
+
});
|
|
221
|
+
await _8_10_1.test.step('Verify latest subscription key appears as a tool in tools/list', async () => {
|
|
222
|
+
// The latest version's subscription key must appear as a tool in tools/list.
|
|
223
|
+
await (0, test_1.expect)(async () => {
|
|
224
|
+
const tools = await (0, mcpHelpers_1.listTools)(apiContext, mcpProcessesUrl, authToken, mcpSessionId);
|
|
225
|
+
const toolNames = tools.map((t) => t.name);
|
|
226
|
+
const expectedTool = `mcp-versioned-tool_${latestSubscriptionKey}`;
|
|
227
|
+
(0, test_1.expect)(toolNames).toContain(expectedTool);
|
|
228
|
+
}).toPass(constants_1.defaultAssertionOptions);
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
(0, _8_10_1.test)('SC-MCP-10 — Unauthenticated request to /mcp/processes is rejected', async () => {
|
|
232
|
+
const apiContext = await (0, apiHelpers_1.getApiRequestContext)();
|
|
233
|
+
const res = await apiContext.post(mcpProcessesUrl, {
|
|
234
|
+
headers: {
|
|
235
|
+
'Content-Type': 'application/json',
|
|
236
|
+
Accept: 'application/json, text/event-stream',
|
|
237
|
+
},
|
|
238
|
+
data: { jsonrpc: '2.0', id: 1, method: 'tools/list', params: {} },
|
|
239
|
+
});
|
|
240
|
+
await (0, mcpHelpers_1.assertResponseStatus)(res, [401, 403]);
|
|
241
|
+
});
|
|
242
|
+
});
|
|
@@ -6,6 +6,10 @@ export declare const defaultAssertionOptions: {
|
|
|
6
6
|
intervals: number[];
|
|
7
7
|
timeout: number;
|
|
8
8
|
};
|
|
9
|
+
export declare const deletionAssertionOptions: {
|
|
10
|
+
intervals: number[];
|
|
11
|
+
timeout: number;
|
|
12
|
+
};
|
|
9
13
|
export declare const TIMEOUT: {
|
|
10
14
|
short: number;
|
|
11
15
|
medium: number;
|
package/dist/utils/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TIMEOUT = exports.defaultAssertionOptions = exports._3_MINUTES_IN_MS = exports._1_MINUTE_IN_MS = exports._1_SECOND_IN_MS = exports._100_MS = void 0;
|
|
3
|
+
exports.TIMEOUT = exports.deletionAssertionOptions = exports.defaultAssertionOptions = exports._3_MINUTES_IN_MS = exports._1_MINUTE_IN_MS = exports._1_SECOND_IN_MS = exports._100_MS = void 0;
|
|
4
4
|
exports._100_MS = 100;
|
|
5
5
|
exports._1_SECOND_IN_MS = 1000;
|
|
6
6
|
exports._1_MINUTE_IN_MS = 60 * 1000;
|
|
@@ -9,6 +9,11 @@ exports.defaultAssertionOptions = {
|
|
|
9
9
|
intervals: [5000, 10000, 15000],
|
|
10
10
|
timeout: 30000,
|
|
11
11
|
};
|
|
12
|
+
// Longer options for tool-removal assertions that require subscription propagation.
|
|
13
|
+
exports.deletionAssertionOptions = {
|
|
14
|
+
intervals: [5000, 10000, 15000, 30000],
|
|
15
|
+
timeout: 60000,
|
|
16
|
+
};
|
|
12
17
|
exports.TIMEOUT = {
|
|
13
18
|
short: 15000,
|
|
14
19
|
medium: 30000,
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { APIRequestContext, APIResponse } from '@playwright/test';
|
|
2
|
+
export declare function assertResponseStatus(res: APIResponse, expected: number | number[], label?: string): Promise<void>;
|
|
3
|
+
export declare function buildMcpHeaders(authToken: string, mcpSessionId: string | null): Record<string, string>;
|
|
4
|
+
export declare function initializeMcpSession(apiContext: APIRequestContext, mcpProcessesUrl: string, authToken: string, mcpSessionId: string | null): Promise<string | null>;
|
|
5
|
+
export declare function listTools(apiContext: APIRequestContext, mcpProcessesUrl: string, authToken: string, mcpSessionId: string | null): Promise<{
|
|
6
|
+
name: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
inputSchema?: unknown;
|
|
9
|
+
}[]>;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listTools = exports.initializeMcpSession = exports.buildMcpHeaders = exports.assertResponseStatus = void 0;
|
|
4
|
+
const test_1 = require("@playwright/test");
|
|
5
|
+
async function assertResponseStatus(res, expected, label) {
|
|
6
|
+
const matches = Array.isArray(expected)
|
|
7
|
+
? expected.includes(res.status())
|
|
8
|
+
: res.status() === expected;
|
|
9
|
+
if (!matches) {
|
|
10
|
+
const body = await res.text().catch(() => '<no-body>');
|
|
11
|
+
const expectedStr = Array.isArray(expected)
|
|
12
|
+
? expected.join('/')
|
|
13
|
+
: String(expected);
|
|
14
|
+
console.error(`${label ?? 'assertResponseStatus'}: expected ${expectedStr} but got ${res.status()}`, body);
|
|
15
|
+
}
|
|
16
|
+
if (Array.isArray(expected)) {
|
|
17
|
+
(0, test_1.expect)(expected).toContain(res.status());
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
(0, test_1.expect)(res.status()).toBe(expected);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.assertResponseStatus = assertResponseStatus;
|
|
24
|
+
function buildMcpHeaders(authToken, mcpSessionId) {
|
|
25
|
+
const headers = {
|
|
26
|
+
Authorization: authToken,
|
|
27
|
+
'Content-Type': 'application/json',
|
|
28
|
+
Accept: 'application/json, text/event-stream',
|
|
29
|
+
};
|
|
30
|
+
if (mcpSessionId)
|
|
31
|
+
headers['Mcp-Session-Id'] = mcpSessionId;
|
|
32
|
+
return headers;
|
|
33
|
+
}
|
|
34
|
+
exports.buildMcpHeaders = buildMcpHeaders;
|
|
35
|
+
async function initializeMcpSession(apiContext, mcpProcessesUrl, authToken, mcpSessionId) {
|
|
36
|
+
const res = await apiContext.post(mcpProcessesUrl, {
|
|
37
|
+
headers: buildMcpHeaders(authToken, mcpSessionId),
|
|
38
|
+
data: {
|
|
39
|
+
jsonrpc: '2.0',
|
|
40
|
+
id: 1,
|
|
41
|
+
method: 'initialize',
|
|
42
|
+
params: {
|
|
43
|
+
protocolVersion: '2024-11-05',
|
|
44
|
+
capabilities: {},
|
|
45
|
+
clientInfo: { name: 'playwright-test', version: '1.0.0' },
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
if (res.status() >= 300) {
|
|
50
|
+
const body = await res.text().catch(() => '<no-body>');
|
|
51
|
+
console.error('initializeMcpSession: unexpected HTTP status', res.status(), body);
|
|
52
|
+
}
|
|
53
|
+
(0, test_1.expect)(res.status()).toBeLessThan(300);
|
|
54
|
+
const initBody = await res.json();
|
|
55
|
+
if (initBody.error) {
|
|
56
|
+
console.error('initializeMcpSession: JSON-RPC error on initialize', JSON.stringify(initBody.error));
|
|
57
|
+
}
|
|
58
|
+
(0, test_1.expect)(initBody.error).toBeUndefined();
|
|
59
|
+
(0, test_1.expect)(initBody.result).toBeDefined();
|
|
60
|
+
const newSessionId = res.headers()['mcp-session-id'] ?? null;
|
|
61
|
+
if (!newSessionId) {
|
|
62
|
+
console.warn('initializeMcpSession: server did not return Mcp-Session-Id — running without session (stateless mode)');
|
|
63
|
+
}
|
|
64
|
+
const notifRes = await apiContext.post(mcpProcessesUrl, {
|
|
65
|
+
headers: buildMcpHeaders(authToken, newSessionId),
|
|
66
|
+
data: { jsonrpc: '2.0', method: 'notifications/initialized', params: {} },
|
|
67
|
+
});
|
|
68
|
+
if (notifRes.status() >= 300) {
|
|
69
|
+
const body = await notifRes.text().catch(() => '<no-body>');
|
|
70
|
+
console.error('initializeMcpSession: unexpected HTTP status on notifications/initialized', notifRes.status(), body);
|
|
71
|
+
}
|
|
72
|
+
(0, test_1.expect)(notifRes.status()).toBeLessThan(300);
|
|
73
|
+
return newSessionId;
|
|
74
|
+
}
|
|
75
|
+
exports.initializeMcpSession = initializeMcpSession;
|
|
76
|
+
async function listTools(apiContext, mcpProcessesUrl, authToken, mcpSessionId) {
|
|
77
|
+
const res = await apiContext.post(mcpProcessesUrl, {
|
|
78
|
+
headers: buildMcpHeaders(authToken, mcpSessionId),
|
|
79
|
+
data: { jsonrpc: '2.0', id: 1, method: 'tools/list', params: {} },
|
|
80
|
+
});
|
|
81
|
+
if (res.status() !== 200) {
|
|
82
|
+
const body = await res.text().catch(() => '<no-body>');
|
|
83
|
+
console.error('listTools: unexpected HTTP status', res.status(), body);
|
|
84
|
+
}
|
|
85
|
+
(0, test_1.expect)(res.status()).toBe(200);
|
|
86
|
+
const body = await res.json();
|
|
87
|
+
if (body.error) {
|
|
88
|
+
console.error('listTools: JSON-RPC error', JSON.stringify(body.error));
|
|
89
|
+
}
|
|
90
|
+
(0, test_1.expect)(body.error).toBeUndefined();
|
|
91
|
+
(0, test_1.expect)(Array.isArray(body.result?.tools)).toBe(true);
|
|
92
|
+
return body.result.tools;
|
|
93
|
+
}
|
|
94
|
+
exports.listTools = listTools;
|
package/package.json
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpAsToolProcess" name="MCP As Tool Process" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Tool triggered">
|
|
5
|
+
<bpmn:extensionElements>
|
|
6
|
+
<zeebe:properties>
|
|
7
|
+
<zeebe:property name="io.camunda.tool:name" value="mcp-as-tool-process" />
|
|
8
|
+
<zeebe:property name="io.camunda.tool:purpose" value="Test tool for list tools E2E tests." />
|
|
9
|
+
</zeebe:properties>
|
|
10
|
+
</bpmn:extensionElements>
|
|
11
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
12
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_tool_process" />
|
|
13
|
+
</bpmn:startEvent>
|
|
14
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
15
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
16
|
+
</bpmn:endEvent>
|
|
17
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
18
|
+
</bpmn:process>
|
|
19
|
+
<bpmn:message id="Message_tool_process" name="mcp-as-tool-process" />
|
|
20
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
21
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpAsToolProcess">
|
|
22
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
23
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
24
|
+
</bpmndi:BPMNShape>
|
|
25
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
26
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
27
|
+
</bpmndi:BPMNShape>
|
|
28
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
29
|
+
<di:waypoint x="186" y="118" />
|
|
30
|
+
<di:waypoint x="242" y="118" />
|
|
31
|
+
</bpmndi:BPMNEdge>
|
|
32
|
+
</bpmndi:BPMNPlane>
|
|
33
|
+
</bpmndi:BPMNDiagram>
|
|
34
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpTempTool" name="MCP Temp Tool" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Temp tool triggered">
|
|
5
|
+
<bpmn:extensionElements>
|
|
6
|
+
<zeebe:properties>
|
|
7
|
+
<zeebe:property name="io.camunda.tool:name" value="mcp-temp-tool" />
|
|
8
|
+
<zeebe:property name="io.camunda.tool:purpose" value="Temporary tool deployed and deleted within SC-MCP-08." />
|
|
9
|
+
</zeebe:properties>
|
|
10
|
+
</bpmn:extensionElements>
|
|
11
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
12
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_temp_tool" />
|
|
13
|
+
</bpmn:startEvent>
|
|
14
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
15
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
16
|
+
</bpmn:endEvent>
|
|
17
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
18
|
+
</bpmn:process>
|
|
19
|
+
<bpmn:message id="Message_temp_tool" name="mcp-temp-tool" />
|
|
20
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
21
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpTempTool">
|
|
22
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
23
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
24
|
+
</bpmndi:BPMNShape>
|
|
25
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
26
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
27
|
+
</bpmndi:BPMNShape>
|
|
28
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
29
|
+
<di:waypoint x="186" y="118" />
|
|
30
|
+
<di:waypoint x="242" y="118" />
|
|
31
|
+
</bpmndi:BPMNEdge>
|
|
32
|
+
</bpmndi:BPMNPlane>
|
|
33
|
+
</bpmndi:BPMNDiagram>
|
|
34
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpTempTool" name="MCP Temp Tool" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Temp tool triggered">
|
|
5
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
6
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_temp_tool" />
|
|
7
|
+
</bpmn:startEvent>
|
|
8
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
9
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
10
|
+
</bpmn:endEvent>
|
|
11
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
12
|
+
</bpmn:process>
|
|
13
|
+
<bpmn:message id="Message_temp_tool" name="mcp-temp-tool" />
|
|
14
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
15
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpTempTool">
|
|
16
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
17
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
18
|
+
</bpmndi:BPMNShape>
|
|
19
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
20
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
21
|
+
</bpmndi:BPMNShape>
|
|
22
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
23
|
+
<di:waypoint x="186" y="118" />
|
|
24
|
+
<di:waypoint x="242" y="118" />
|
|
25
|
+
</bpmndi:BPMNEdge>
|
|
26
|
+
</bpmndi:BPMNPlane>
|
|
27
|
+
</bpmndi:BPMNDiagram>
|
|
28
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpVersionedTool" name="MCP Versioned Tool" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Versioned tool triggered">
|
|
5
|
+
<bpmn:extensionElements>
|
|
6
|
+
<zeebe:properties>
|
|
7
|
+
<zeebe:property name="io.camunda.tool:name" value="mcp-versioned-tool" />
|
|
8
|
+
<zeebe:property name="io.camunda.tool:purpose" value="Versioned tool for version binding tests (v1)." />
|
|
9
|
+
</zeebe:properties>
|
|
10
|
+
</bpmn:extensionElements>
|
|
11
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
12
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_versioned_tool" />
|
|
13
|
+
</bpmn:startEvent>
|
|
14
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
15
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
16
|
+
</bpmn:endEvent>
|
|
17
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
18
|
+
</bpmn:process>
|
|
19
|
+
<bpmn:message id="Message_versioned_tool" name="mcp-versioned-tool" />
|
|
20
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
21
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpVersionedTool">
|
|
22
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
23
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
24
|
+
</bpmndi:BPMNShape>
|
|
25
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
26
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
27
|
+
</bpmndi:BPMNShape>
|
|
28
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
29
|
+
<di:waypoint x="186" y="118" />
|
|
30
|
+
<di:waypoint x="242" y="118" />
|
|
31
|
+
</bpmndi:BPMNEdge>
|
|
32
|
+
</bpmndi:BPMNPlane>
|
|
33
|
+
</bpmndi:BPMNDiagram>
|
|
34
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpVersionedTool" name="MCP Versioned Tool" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Versioned tool triggered">
|
|
5
|
+
<bpmn:extensionElements>
|
|
6
|
+
<zeebe:properties>
|
|
7
|
+
<zeebe:property name="io.camunda.tool:name" value="mcp-versioned-tool" />
|
|
8
|
+
<zeebe:property name="io.camunda.tool:purpose" value="Versioned tool for version binding tests (v2)." />
|
|
9
|
+
</zeebe:properties>
|
|
10
|
+
</bpmn:extensionElements>
|
|
11
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
12
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_versioned_tool" />
|
|
13
|
+
</bpmn:startEvent>
|
|
14
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
15
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
16
|
+
</bpmn:endEvent>
|
|
17
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
18
|
+
</bpmn:process>
|
|
19
|
+
<bpmn:message id="Message_versioned_tool" name="mcp-versioned-tool" />
|
|
20
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
21
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpVersionedTool">
|
|
22
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
23
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
24
|
+
</bpmndi:BPMNShape>
|
|
25
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
26
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
27
|
+
</bpmndi:BPMNShape>
|
|
28
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
29
|
+
<di:waypoint x="186" y="118" />
|
|
30
|
+
<di:waypoint x="242" y="118" />
|
|
31
|
+
</bpmndi:BPMNEdge>
|
|
32
|
+
</bpmndi:BPMNPlane>
|
|
33
|
+
</bpmndi:BPMNDiagram>
|
|
34
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpAsToolWithInputs" name="MCP As Tool With Inputs" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Tool with inputs triggered">
|
|
5
|
+
<bpmn:extensionElements>
|
|
6
|
+
<zeebe:properties>
|
|
7
|
+
<zeebe:property name="io.camunda.tool:name" value="mcp-as-tool-with-inputs" />
|
|
8
|
+
<zeebe:property name="io.camunda.tool:purpose" value="Test tool with typed inputs for list tools E2E tests." />
|
|
9
|
+
<zeebe:property name="io.camunda.tool:inputs" value="firstName: optional string, the first name of the person. amount: required integer, the amount to process." />
|
|
10
|
+
</zeebe:properties>
|
|
11
|
+
</bpmn:extensionElements>
|
|
12
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
13
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_tool_with_inputs" />
|
|
14
|
+
</bpmn:startEvent>
|
|
15
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
16
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
17
|
+
</bpmn:endEvent>
|
|
18
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
19
|
+
</bpmn:process>
|
|
20
|
+
<bpmn:message id="Message_tool_with_inputs" name="mcp-as-tool-with-inputs" />
|
|
21
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
22
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpAsToolWithInputs">
|
|
23
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
24
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
25
|
+
</bpmndi:BPMNShape>
|
|
26
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
27
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
28
|
+
</bpmndi:BPMNShape>
|
|
29
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
30
|
+
<di:waypoint x="186" y="118" />
|
|
31
|
+
<di:waypoint x="242" y="118" />
|
|
32
|
+
</bpmndi:BPMNEdge>
|
|
33
|
+
</bpmndi:BPMNPlane>
|
|
34
|
+
</bpmndi:BPMNDiagram>
|
|
35
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Web Modeler" exporterVersion="e2e-test" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.10.0">
|
|
3
|
+
<bpmn:process id="mcpPlainProcess" name="MCP Plain Process" isExecutable="true">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Plain start">
|
|
5
|
+
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
|
6
|
+
<bpmn:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_plain_process" />
|
|
7
|
+
</bpmn:startEvent>
|
|
8
|
+
<bpmn:endEvent id="EndEvent_1">
|
|
9
|
+
<bpmn:incoming>Flow_1</bpmn:incoming>
|
|
10
|
+
</bpmn:endEvent>
|
|
11
|
+
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
|
|
12
|
+
</bpmn:process>
|
|
13
|
+
<bpmn:message id="Message_plain_process" name="mcp-plain-process" />
|
|
14
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
15
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="mcpPlainProcess">
|
|
16
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_1" bpmnElement="StartEvent_1">
|
|
17
|
+
<dc:Bounds x="150" y="100" width="36" height="36" />
|
|
18
|
+
</bpmndi:BPMNShape>
|
|
19
|
+
<bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
|
|
20
|
+
<dc:Bounds x="242" y="100" width="36" height="36" />
|
|
21
|
+
</bpmndi:BPMNShape>
|
|
22
|
+
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
|
|
23
|
+
<di:waypoint x="186" y="118" />
|
|
24
|
+
<di:waypoint x="242" y="118" />
|
|
25
|
+
</bpmndi:BPMNEdge>
|
|
26
|
+
</bpmndi:BPMNPlane>
|
|
27
|
+
</bpmndi:BPMNDiagram>
|
|
28
|
+
</bpmn:definitions>
|