@testomatio/mcp 2.0.0-beta.8 → 2.0.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 +103 -9
- package/package.json +1 -1
- package/src/mcp/definitions/plans.js +26 -4
- package/src/mcp/registry/payloads.js +4 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Testomat.io MCP Server
|
|
2
2
|
|
|
3
|
-
Model Context Protocol (MCP) server that enables AI assistants (Claude, Cursor, etc.) to interact with Testomat.io Public API v2.
|
|
3
|
+
Model Context Protocol (MCP) server that enables AI assistants (Claude, Cursor, OpenCode, etc.) to interact with Testomat.io Public API v2.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
@@ -18,7 +18,7 @@ Model Context Protocol (MCP) server that enables AI assistants (Claude, Cursor,
|
|
|
18
18
|
### Installation
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
npm install -g @testomatio/mcp
|
|
21
|
+
npm install -g @testomatio/mcp@latest
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
### Configuration
|
|
@@ -48,17 +48,24 @@ export TESTOMATIO_BASE_URL=https://beta.testomat.io
|
|
|
48
48
|
|
|
49
49
|
### Cursor IDE
|
|
50
50
|
|
|
51
|
-
Add to `.
|
|
51
|
+
Add this config to `.cursor/mcp.json` in your project, or to `~/.cursor/mcp.json` for global access:
|
|
52
52
|
|
|
53
53
|
```json
|
|
54
54
|
{
|
|
55
55
|
"mcpServers": {
|
|
56
56
|
"testomatio": {
|
|
57
|
-
"
|
|
58
|
-
"
|
|
57
|
+
"type": "stdio",
|
|
58
|
+
"command": "npx",
|
|
59
|
+
"args": [
|
|
60
|
+
"-y",
|
|
61
|
+
"@testomatio/mcp@latest",
|
|
62
|
+
"--token",
|
|
63
|
+
"<TOKEN>",
|
|
64
|
+
"--project",
|
|
65
|
+
"<PROJECT_ID>"
|
|
66
|
+
],
|
|
59
67
|
"env": {
|
|
60
|
-
"
|
|
61
|
-
"TESTOMATIO_PROJECT_ID": "<PROJECT_ID>"
|
|
68
|
+
"TESTOMATIO_BASE_URL": "https://app.testomat.io"
|
|
62
69
|
}
|
|
63
70
|
}
|
|
64
71
|
}
|
|
@@ -67,12 +74,54 @@ Add to `.cursorrules` or settings.json:
|
|
|
67
74
|
|
|
68
75
|
### Claude Desktop
|
|
69
76
|
|
|
77
|
+
Add this config to:
|
|
78
|
+
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
79
|
+
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
80
|
+
|
|
70
81
|
```json
|
|
71
82
|
{
|
|
72
83
|
"mcpServers": {
|
|
73
84
|
"testomatio": {
|
|
74
|
-
"command": "
|
|
75
|
-
"args": [
|
|
85
|
+
"command": "npx",
|
|
86
|
+
"args": [
|
|
87
|
+
"-y",
|
|
88
|
+
"@testomatio/mcp@latest",
|
|
89
|
+
"--token",
|
|
90
|
+
"<TOKEN>",
|
|
91
|
+
"--project",
|
|
92
|
+
"<PROJECT_ID>"
|
|
93
|
+
],
|
|
94
|
+
"env": {
|
|
95
|
+
"TESTOMATIO_BASE_URL": "https://app.testomat.io"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### OpenCode
|
|
103
|
+
|
|
104
|
+
Add this config to `opencode.json` in your project root, or to `~/.config/opencode/opencode.json` for global access:
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"$schema": "https://opencode.ai/config.json",
|
|
109
|
+
"mcp": {
|
|
110
|
+
"testomat": {
|
|
111
|
+
"type": "local",
|
|
112
|
+
"command": [
|
|
113
|
+
"npx",
|
|
114
|
+
"-y",
|
|
115
|
+
"@testomatio/mcp@latest",
|
|
116
|
+
"--token",
|
|
117
|
+
"<TOKEN>",
|
|
118
|
+
"--project",
|
|
119
|
+
"<PROJECT_ID>"
|
|
120
|
+
],
|
|
121
|
+
"enabled": true,
|
|
122
|
+
"environment": {
|
|
123
|
+
"TESTOMATIO_BASE_URL": "https://app.testomat.io"
|
|
124
|
+
}
|
|
76
125
|
}
|
|
77
126
|
}
|
|
78
127
|
}
|
|
@@ -152,6 +201,38 @@ src/
|
|
|
152
201
|
|
|
153
202
|
*Either `TESTOMATIO_PROJECT_TOKEN` or `TESTOMATIO_API_TOKEN`
|
|
154
203
|
|
|
204
|
+
## Corporate TLS Certificates
|
|
205
|
+
|
|
206
|
+
If the MCP server runs behind a corporate proxy or TLS inspection, Node.js may reject Testomat.io HTTPS requests even when the same URL works in a browser. This usually means the company root certificate is trusted by the operating system, but not by Node.js.
|
|
207
|
+
|
|
208
|
+
Use Node.js system CA support:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
NODE_OPTIONS=--use-system-ca testomatio-mcp --token <TOKEN> --project <PROJECT_ID>
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
For MCP clients, pass `NODE_OPTIONS` in the server environment:
|
|
215
|
+
|
|
216
|
+
```json
|
|
217
|
+
{
|
|
218
|
+
"mcpServers": {
|
|
219
|
+
"testomatio": {
|
|
220
|
+
"command": "testomatio-mcp",
|
|
221
|
+
"args": ["--token", "<TOKEN>", "--project", "<PROJECT_ID>"],
|
|
222
|
+
"env": {
|
|
223
|
+
"NODE_OPTIONS": "--use-system-ca"
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
If your Node.js version does not support `--use-system-ca`, export the corporate root certificate to a PEM file and use Node.js extra CA support:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
NODE_EXTRA_CA_CERTS=/path/to/company-root-ca.pem testomatio-mcp --token <TOKEN> --project <PROJECT_ID>
|
|
234
|
+
```
|
|
235
|
+
|
|
155
236
|
## Important Notes
|
|
156
237
|
|
|
157
238
|
- **Run Status** - Use `runs_update` with `status_event` for transitions (finish, launch, rerun, etc.)
|
|
@@ -164,3 +245,16 @@ src/
|
|
|
164
245
|
npm install
|
|
165
246
|
npm run start -- --token <TOKEN> --project <PROJECT_ID>
|
|
166
247
|
```
|
|
248
|
+
|
|
249
|
+
For local MCP development, point Claude Desktop to the checked-out entrypoint:
|
|
250
|
+
|
|
251
|
+
```json
|
|
252
|
+
{
|
|
253
|
+
"mcpServers": {
|
|
254
|
+
"testomatio-local": {
|
|
255
|
+
"command": "node",
|
|
256
|
+
"args": ["/path/to/mcp/index.js", "--token", "<TOKEN>", "--project", "<PROJECT_ID>"]
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
```
|
package/package.json
CHANGED
|
@@ -63,8 +63,19 @@ export const PLANS_TOOLS = [
|
|
|
63
63
|
"as_manual": {
|
|
64
64
|
"type": "boolean"
|
|
65
65
|
},
|
|
66
|
-
"
|
|
67
|
-
"type": "
|
|
66
|
+
"test_ids": {
|
|
67
|
+
"type": "array",
|
|
68
|
+
"items": {
|
|
69
|
+
"type": "string"
|
|
70
|
+
},
|
|
71
|
+
"description": "List of test IDs (8-char) to include in the plan. If omitted, all tests matching the plan kind are included."
|
|
72
|
+
},
|
|
73
|
+
"suite_ids": {
|
|
74
|
+
"type": "array",
|
|
75
|
+
"items": {
|
|
76
|
+
"type": "string"
|
|
77
|
+
},
|
|
78
|
+
"description": "List of suite IDs (8-char) to include in the plan. If omitted, all suites are considered."
|
|
68
79
|
},
|
|
69
80
|
"link": {
|
|
70
81
|
"type": "array",
|
|
@@ -136,8 +147,19 @@ export const PLANS_TOOLS = [
|
|
|
136
147
|
"as_manual": {
|
|
137
148
|
"type": "boolean"
|
|
138
149
|
},
|
|
139
|
-
"
|
|
140
|
-
"type": "
|
|
150
|
+
"test_ids": {
|
|
151
|
+
"type": "array",
|
|
152
|
+
"items": {
|
|
153
|
+
"type": "string"
|
|
154
|
+
},
|
|
155
|
+
"description": "List of test IDs (8-char) to include in the plan. If omitted, all tests matching the plan kind are included."
|
|
156
|
+
},
|
|
157
|
+
"suite_ids": {
|
|
158
|
+
"type": "array",
|
|
159
|
+
"items": {
|
|
160
|
+
"type": "string"
|
|
161
|
+
},
|
|
162
|
+
"description": "List of suite IDs (8-char) to include in the plan. If omitted, all suites are considered."
|
|
141
163
|
},
|
|
142
164
|
"link": {
|
|
143
165
|
"type": "array",
|
|
@@ -253,7 +253,8 @@ export const payloadMethods = {
|
|
|
253
253
|
kind,
|
|
254
254
|
hidden,
|
|
255
255
|
as_manual: asManual,
|
|
256
|
-
|
|
256
|
+
test_ids: testIds,
|
|
257
|
+
suite_ids: suiteIds,
|
|
257
258
|
link,
|
|
258
259
|
} = {}) {
|
|
259
260
|
return {
|
|
@@ -262,7 +263,8 @@ export const payloadMethods = {
|
|
|
262
263
|
kind,
|
|
263
264
|
hidden,
|
|
264
265
|
as_manual: asManual,
|
|
265
|
-
|
|
266
|
+
test_ids: testIds,
|
|
267
|
+
suite_ids: suiteIds,
|
|
266
268
|
link,
|
|
267
269
|
};
|
|
268
270
|
},
|