@validate.qa/mcp 1.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 ADDED
@@ -0,0 +1,139 @@
1
+ # @validate.qa/mcp
2
+
3
+ MCP server for Validate.QA.
4
+
5
+ This package lets AI IDEs like Claude Code and Cursor connect directly to your
6
+ Validate.QA workspace over stdio. Your AI can create, edit, run, and heal tests
7
+ from inside the editor while Validate.QA handles execution, scheduling, and
8
+ reporting on the platform side.
9
+
10
+ ## Requirements
11
+
12
+ - Node.js 18+
13
+ - A Validate.QA API URL
14
+ - A `pat_...` personal access token
15
+ - A Validate.QA project ID
16
+
17
+ ## Quick Start
18
+
19
+ Run it directly with `npx`:
20
+
21
+ ```bash
22
+ npx @validate.qa/mcp \
23
+ --api-url https://api.myorg.validate.qa \
24
+ --token pat_xxxxxxxxxxxx \
25
+ --project-id proj_xxxxxxxxxxxx
26
+ ```
27
+
28
+ Or install it globally:
29
+
30
+ ```bash
31
+ npm install -g @validate.qa/mcp
32
+
33
+ validate-mcp \
34
+ --api-url https://api.myorg.validate.qa \
35
+ --token pat_xxxxxxxxxxxx \
36
+ --project-id proj_xxxxxxxxxxxx
37
+ ```
38
+
39
+ ## Required Arguments
40
+
41
+ - `--api-url`
42
+ Your Validate.QA API base URL, for example `https://api.myorg.validate.qa`
43
+ or `http://localhost:3001`.
44
+ - `--token`
45
+ A Validate.QA personal access token. For IDE usage, use a `pat_...` token.
46
+ - `--project-id`
47
+ The project the MCP server should scope all tool calls to.
48
+
49
+ ## Configuration Resolution
50
+
51
+ The package resolves config in this order:
52
+
53
+ 1. CLI args: `--api-url`, `--token`, `--project-id`
54
+ 2. Environment variables: `VALIDATEQA_API_URL`, `VALIDATEQA_TOKEN`,
55
+ `VALIDATEQA_PROJECT_ID`
56
+ 3. `.validateqa.json` in the current working directory
57
+
58
+ Example `.validateqa.json`:
59
+
60
+ ```json
61
+ {
62
+ "apiUrl": "https://api.myorg.validate.qa",
63
+ "projectId": "proj_xxxxxxxxxxxx"
64
+ }
65
+ ```
66
+
67
+ `token` is intentionally not read from `.validateqa.json`; pass it via CLI or
68
+ environment variable instead.
69
+
70
+ ## Claude Code Example
71
+
72
+ Create `.mcp.json` in your repo:
73
+
74
+ ```json
75
+ {
76
+ "mcpServers": {
77
+ "validate.qa": {
78
+ "command": "npx",
79
+ "args": [
80
+ "@validate.qa/mcp",
81
+ "--api-url",
82
+ "https://api.myorg.validate.qa",
83
+ "--token",
84
+ "pat_xxxxxxxxxxxx",
85
+ "--project-id",
86
+ "proj_xxxxxxxxxxxx"
87
+ ]
88
+ }
89
+ }
90
+ }
91
+ ```
92
+
93
+ ## Cursor Example
94
+
95
+ Create `.cursor/mcp.json` in your repo:
96
+
97
+ ```json
98
+ {
99
+ "mcpServers": {
100
+ "validate.qa": {
101
+ "command": "npx",
102
+ "args": [
103
+ "@validate.qa/mcp",
104
+ "--api-url",
105
+ "https://api.myorg.validate.qa",
106
+ "--token",
107
+ "pat_xxxxxxxxxxxx",
108
+ "--project-id",
109
+ "proj_xxxxxxxxxxxx"
110
+ ]
111
+ }
112
+ }
113
+ }
114
+ ```
115
+
116
+ ## Optional Init Helper
117
+
118
+ The package also includes a helper to write MCP config files for supported IDEs:
119
+
120
+ ```bash
121
+ npx @validate.qa/mcp init \
122
+ --api-url https://api.myorg.validate.qa \
123
+ --token pat_xxxxxxxxxxxx \
124
+ --project-id proj_xxxxxxxxxxxx
125
+ ```
126
+
127
+ This can create or update:
128
+
129
+ - `.mcp.json` for Claude Code
130
+ - `.cursor/mcp.json` for Cursor
131
+ - `.windsurf/mcp.json` for Windsurf
132
+ - `.vscode/mcp.json` for VS Code
133
+
134
+ ## More Docs
135
+
136
+ - Full MCP guide:
137
+ [docs/MCP.md](https://github.com/Validate-QA/validate.qa/blob/main/docs/MCP.md)
138
+ - Package source:
139
+ [packages/mcp-server](https://github.com/Validate-QA/validate.qa/tree/main/packages/mcp-server)
package/bin.cjs ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ // CommonJS wrapper for Windows compatibility — npx can't run ESM bin files on Windows
3
+ const { resolve } = require('path');
4
+ const { execFileSync } = require('child_process');
5
+ const entry = resolve(__dirname, 'dist', 'index.js');
6
+ try {
7
+ execFileSync('node', [entry, ...process.argv.slice(2)], { stdio: 'inherit' });
8
+ } catch (e) {
9
+ process.exit(e.status || 1);
10
+ }