wopee-mcp 1.11.1 → 1.13.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.
package/README.md
CHANGED
|
@@ -70,6 +70,59 @@ If you're unsure about your proxy settings, check your VS Code settings (`settin
|
|
|
70
70
|
- `http://10.x.x.x:8080`
|
|
71
71
|
- `http://username:password@proxy.company.com:8080` (if authentication is required)
|
|
72
72
|
|
|
73
|
+
### TLS / Certificate Issues
|
|
74
|
+
|
|
75
|
+
**This is not required for MCP to work.** If you see HTTPS or certificate-related errors, that indicates a TLS or certificate trust issue in your environment.
|
|
76
|
+
|
|
77
|
+
If the server fails with errors such as **`UNABLE_TO_VERIFY_LEAF_SIGNATURE`** or **`certificate has expired`**, it may be due to:
|
|
78
|
+
|
|
79
|
+
- **Self-signed certificates** (e.g. when `WOPEE_API_URL` points to an internal or dev server)
|
|
80
|
+
- **Corporate proxy / SSL inspection** (traffic re-encrypted with a corporate CA your machine doesn’t trust)
|
|
81
|
+
- **Missing CA certificates** in Node’s trust store
|
|
82
|
+
|
|
83
|
+
#### Preferred solutions (secure)
|
|
84
|
+
|
|
85
|
+
1. **Use a valid TLS certificate** – e.g. Let’s Encrypt, or an internal CA – and ensure the **full certificate chain** is served.
|
|
86
|
+
2. **Install the corporate or internal CA** so Node trusts it:
|
|
87
|
+
|
|
88
|
+
Example:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
export NODE_EXTRA_CA_CERTS=/etc/ssl/certs/internal-ca.pem
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
In MCP config `env`:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
"env": {
|
|
98
|
+
"WOPEE_PROJECT_UUID": "your-project-uuid-here",
|
|
99
|
+
"WOPEE_API_KEY": "your-api-key-here",
|
|
100
|
+
"NODE_EXTRA_CA_CERTS": "/path/to/ca.pem"
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### Insecure workaround (not recommended)
|
|
105
|
+
|
|
106
|
+
For **local debugging only**, you may disable TLS verification in Node. This should **never** be used in production, as it disables HTTPS security and exposes traffic to interception.
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
export NODE_TLS_REJECT_UNAUTHORIZED=0
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Or in MCP config `env`:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
"env": {
|
|
116
|
+
"WOPEE_PROJECT_UUID": "your-project-uuid-here",
|
|
117
|
+
"WOPEE_API_KEY": "your-api-key-here",
|
|
118
|
+
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Treat this as a **debug-only escape hatch**, not a normal setup step.
|
|
123
|
+
|
|
124
|
+
**Note:** Some users have reported setting `PYTHONHTTPSVERIFY=0` as well. This MCP server does not use Python; that variable has no effect on it. It would only apply if you run a Python-based MCP host or other tooling that also performs HTTPS in the same environment—outside the scope of this server.
|
|
125
|
+
|
|
73
126
|
## Getting Started
|
|
74
127
|
|
|
75
128
|
Most tools in this MCP server require a `suiteUuid` to operate. You have two options to get started:
|
|
@@ -86,13 +139,21 @@ This will return a list of all analysis suites with their UUIDs, which you can t
|
|
|
86
139
|
|
|
87
140
|
### Option 2: Create a New Suite
|
|
88
141
|
|
|
89
|
-
If you don't have any suites yet,
|
|
142
|
+
If you don't have any suites yet, you have two options:
|
|
143
|
+
|
|
144
|
+
**Automatic Analysis:** Create and dispatch a full analysis/crawling suite:
|
|
90
145
|
|
|
91
146
|
```
|
|
92
147
|
Use the wopee_dispatch_analysis tool to create and dispatch a new analysis/crawling suite.
|
|
93
148
|
```
|
|
94
149
|
|
|
95
|
-
|
|
150
|
+
**Blank Suite:** Create an empty suite for manual configuration:
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
Use the wopee_create_blank_suite tool to create a blank analysis suite.
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Both options will return a suite UUID, which you can use for subsequent operations.
|
|
96
157
|
|
|
97
158
|
## Available Tools
|
|
98
159
|
|
|
@@ -122,6 +183,18 @@ Creates and dispatches a new analysis/crawling suite for your project. Use this
|
|
|
122
183
|
Dispatch a new analysis suite
|
|
123
184
|
```
|
|
124
185
|
|
|
186
|
+
#### `wopee_create_blank_suite`
|
|
187
|
+
|
|
188
|
+
Creates a blank analysis suite for your project. Use this when you want to manually configure and populate a suite rather than having it automatically analyzed.
|
|
189
|
+
|
|
190
|
+
- **Returns:** The created suite information including its UUID
|
|
191
|
+
|
|
192
|
+
**Example Usage:**
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
Create a blank analysis suite for my project
|
|
196
|
+
```
|
|
197
|
+
|
|
125
198
|
### Generation Tools
|
|
126
199
|
|
|
127
200
|
These tools generate various artifacts for a specific suite. All require a `suiteUuid` and `type` to generate.
|
package/build/tools/index.js
CHANGED
|
@@ -3,8 +3,10 @@ import { wopeeUpdateArtifact } from "./wopee_update_artifact/index.js";
|
|
|
3
3
|
import { wopeeGenerateArtifact } from "./wopee_generate_artifact/index.js";
|
|
4
4
|
import { wopeeDispatchAgent } from "./wopee_dispatch_agent/index.js";
|
|
5
5
|
import { wopeeDispatchAnalysis } from "./wopee_dispatch_analysis/index.js";
|
|
6
|
+
import { wopeeCreateBlankSuite } from "./wopee_create_blank_suite/index.js";
|
|
6
7
|
import { wopeeFetchAnalysisSuites } from "./wopee_fetch_analysis_suites/index.js";
|
|
7
8
|
export const TOOLS = [
|
|
9
|
+
wopeeCreateBlankSuite,
|
|
8
10
|
wopeeFetchAnalysisSuites,
|
|
9
11
|
wopeeDispatchAnalysis,
|
|
10
12
|
wopeeDispatchAgent,
|
|
@@ -155,3 +155,41 @@ export const GenerateReusableTestCaseSteps = `
|
|
|
155
155
|
generateReusableTestCaseSteps(input: $input)
|
|
156
156
|
}
|
|
157
157
|
`;
|
|
158
|
+
export const CreateBlankAnalysisSuite = `
|
|
159
|
+
mutation CreateBlankAnalysisSuite($projectUuid: ID!) {
|
|
160
|
+
createBlankAnalysisSuite(projectUuid: $projectUuid) {
|
|
161
|
+
uuid
|
|
162
|
+
name
|
|
163
|
+
suiteType
|
|
164
|
+
executionStatus
|
|
165
|
+
createdAt
|
|
166
|
+
updatedAt
|
|
167
|
+
analysisIdentifier
|
|
168
|
+
suiteRunningStatus
|
|
169
|
+
generatedAnalysisDataState {
|
|
170
|
+
suiteUuid
|
|
171
|
+
appContext {
|
|
172
|
+
isGenerated
|
|
173
|
+
status
|
|
174
|
+
}
|
|
175
|
+
generalUserStories {
|
|
176
|
+
isGenerated
|
|
177
|
+
status
|
|
178
|
+
}
|
|
179
|
+
userStories {
|
|
180
|
+
isGenerated
|
|
181
|
+
status
|
|
182
|
+
}
|
|
183
|
+
testCases {
|
|
184
|
+
isGenerated
|
|
185
|
+
status
|
|
186
|
+
}
|
|
187
|
+
reusableTestCases {
|
|
188
|
+
isGenerated
|
|
189
|
+
status
|
|
190
|
+
}
|
|
191
|
+
testCaseSteps
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
`;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export var ToolName;
|
|
2
2
|
(function (ToolName) {
|
|
3
|
+
ToolName["WOPEE_CREATE_BLANK_SUITE"] = "wopee_create_blank_suite";
|
|
3
4
|
ToolName["WOPEE_FETCH_ANALYSIS_SUITES"] = "wopee_fetch_analysis_suites";
|
|
4
5
|
ToolName["WOPEE_DISPATCH_ANALYSIS"] = "wopee_dispatch_analysis";
|
|
5
6
|
ToolName["WOPEE_DISPATCH_AGENT"] = "wopee_dispatch_agent";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getConfig } from "../../utils/getConfig.js";
|
|
2
|
+
import { requestClient } from "../../utils/requestClient.js";
|
|
3
|
+
import { ToolName } from "../shared/types.js";
|
|
4
|
+
import { CreateBlankAnalysisSuite } from "../shared/gql-queries.js";
|
|
5
|
+
export const wopeeCreateBlankSuite = {
|
|
6
|
+
name: ToolName.WOPEE_CREATE_BLANK_SUITE,
|
|
7
|
+
config: {
|
|
8
|
+
title: "Create blank analysis suite",
|
|
9
|
+
description: "Create a blank analysis suite for a project",
|
|
10
|
+
},
|
|
11
|
+
handler: async () => {
|
|
12
|
+
const { WOPEE_PROJECT_UUID } = getConfig();
|
|
13
|
+
if (!WOPEE_PROJECT_UUID)
|
|
14
|
+
return {
|
|
15
|
+
content: [
|
|
16
|
+
{
|
|
17
|
+
type: "text",
|
|
18
|
+
text: "WOPEE_PROJECT_UUID is not set",
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
const result = await requestClient(CreateBlankAnalysisSuite, {
|
|
23
|
+
projectUuid: WOPEE_PROJECT_UUID,
|
|
24
|
+
});
|
|
25
|
+
if (!result || !result.createBlankAnalysisSuite)
|
|
26
|
+
return {
|
|
27
|
+
content: [
|
|
28
|
+
{
|
|
29
|
+
type: "text",
|
|
30
|
+
text: "Failed to fetch analysis suites",
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
return {
|
|
35
|
+
content: [
|
|
36
|
+
{
|
|
37
|
+
type: "text",
|
|
38
|
+
text: JSON.stringify(result.createBlankAnalysisSuite, null, 2),
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
};
|
|
42
|
+
},
|
|
43
|
+
};
|