@runhuman/mcp-server 2.0.1 → 2.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/.env.example CHANGED
@@ -1,12 +1,12 @@
1
- # RunHuman API Configuration
2
-
3
- # API Base URL
4
- # For local development, use http://localhost:3400
5
- # For production, use your deployed API URL
6
- RUNHUMAN_API_URL=http://localhost:3400
7
-
8
- # API Key
9
- # Get this from the API dashboard at http://localhost:3400/app.html
10
- # Or use the default test key below for local development
11
- # Format: qa_live_xxxxxxxxxxxxxxxxxxxxx
12
- RUNHUMAN_API_KEY=qa_live_test_key_for_demo_purposes_only_12345
1
+ # RunHuman API Configuration
2
+
3
+ # API Base URL
4
+ # For local development, use http://localhost:3400
5
+ # For production, use your deployed API URL
6
+ RUNHUMAN_API_URL=http://localhost:3400
7
+
8
+ # API Key
9
+ # Get this from the API dashboard at http://localhost:3400/app.html
10
+ # Or use the default test key below for local development
11
+ # Format: qa_live_xxxxxxxxxxxxxxxxxxxxx
12
+ RUNHUMAN_API_KEY=qa_live_test_key_for_demo_purposes_only_12345
package/README.md CHANGED
@@ -1,240 +1,240 @@
1
- # RunHuman MCP Server
2
-
3
- A Model Context Protocol (MCP) server that allows AI agents to interact with the RunHuman QA testing service.
4
-
5
- ## Overview
6
-
7
- This MCP server provides tools for creating and managing human QA jobs through the RunHuman API. AI agents can use this server to:
8
-
9
- - Create new QA jobs with custom schemas
10
- - Check the status of running jobs
11
- - Retrieve completed job results
12
-
13
- ## Installation
14
-
15
- ### For Claude Desktop (Recommended)
16
-
17
- 1. Get your API key at: https://runhuman.com/app.html
18
-
19
- 2. Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on Mac):
20
-
21
- ```json
22
- {
23
- "mcpServers": {
24
- "runhuman": {
25
- "command": "npx",
26
- "args": ["-y", "@runhuman/mcp-server", "--api-key=qa_live_xxxxxxxxxxxxx"]
27
- }
28
- }
29
- }
30
- ```
31
-
32
- 3. Restart Claude Desktop
33
-
34
- That's it! The server will be automatically downloaded and run by Claude.
35
-
36
- ### For Development
37
-
38
- From the monorepo root:
39
-
40
- ```bash
41
- npm install
42
- npm run build --workspace=@runhuman/mcp-server
43
-
44
- # Run with API key
45
- node packages/mcp-server/dist/index.js --api-key=qa_live_xxxxx
46
- ```
47
-
48
- ### Available Tools
49
-
50
- #### `create_job`
51
- Create a new QA job with human testers.
52
-
53
- **Parameters:**
54
- - `url` (string): The URL to test
55
- - `description` (string): Instructions for the human tester describing what to test
56
- - `schema` (object): Expected result schema that the tester response will be extracted into
57
- - `targetDurationMinutes` (number, optional): Time limit for tester (default: 5, range: 1-60)
58
-
59
- #### `wait_for_result`
60
- Check status, wait, and retrieve results for a QA job in a single convenient call.
61
-
62
- **Parameters:**
63
- - `jobId` (string): The ID of the job to check
64
- - `waitSeconds` (number, optional): How long to wait before checking again (default: 30, range: 1-300)
65
-
66
- **Behavior:**
67
- - Checks status BEFORE waiting (returns immediately if already complete)
68
- - Waits for the specified duration
69
- - Checks status AFTER waiting
70
- - Returns results if complete, otherwise suggests calling again with longer wait time
71
-
72
- **Usage Pattern:**
73
- ```javascript
74
- // After creating a job, call repeatedly with increasing wait times:
75
- let result = await wait_for_result(jobId, { waitSeconds: 30 });
76
- if (result.status !== 'completed') {
77
- result = await wait_for_result(jobId, { waitSeconds: 45 });
78
- }
79
- if (result.status !== 'completed') {
80
- result = await wait_for_result(jobId, { waitSeconds: 60 });
81
- }
82
- ```
83
-
84
- **Returns:**
85
- - `result`: Structured test results extracted from tester's response
86
- - `status`: Job status (completed, failed, timeout, pending, claimed, in_progress)
87
- - `costUsd`: Exact cost in USD with full precision (e.g., 0.396)
88
- - `testDurationSeconds`: Time spent by tester in seconds (rounded up)
89
- - Additional metadata (timestamps, tester info, etc.)
90
-
91
- **Cost Calculation:**
92
- - Costs are calculated as: `duration × $0.0018/second` (general-use tier)
93
- - Duration is always rounded UP using Math.ceil (any partial second counts)
94
- - Costs are never $0 unless the tester never actually worked on it
95
- - Full precision maintained (not rounded to cents)
96
-
97
- ## Configuration
98
-
99
- The MCP server needs to be configured with your RunHuman API credentials.
100
-
101
- ### 1. Get an API Key
102
-
103
- **Option A: Via Dashboard**
104
- 1. Start the API server: `npm run dev --workspace=@runhuman/api`
105
- 2. Open http://localhost:3400/app.html
106
- 3. Go to "API Keys" tab
107
- 4. Click "Create API Key"
108
- 5. Copy the key (starts with `qa_live_`)
109
-
110
- **Option B: Use Default Test Key**
111
- - For local development, you can use: `qa_live_test_key_123`
112
- - This key exists in `packages/api/data/api-keys.json`
113
-
114
- ### 2. Configure Environment Variables
115
-
116
- Create a `.env` file in the MCP server directory:
117
-
118
- ```bash
119
- # For local development
120
- RUNHUMAN_API_URL=http://localhost:3400
121
- RUNHUMAN_API_KEY=qa_live_test_key_123
122
-
123
- # For production
124
- RUNHUMAN_API_URL=https://api.runhuman.com
125
- RUNHUMAN_API_KEY=qa_live_xxxxxxxxxxxxxxxxxxxxx
126
- ```
127
-
128
- **Important:** Never commit `.env` files to git! They're already in `.gitignore`.
129
-
130
- ### 3. Verify Configuration
131
-
132
- Test your API key works:
133
-
134
- ```bash
135
- curl http://localhost:3400/api/jobs \
136
- -H "Authorization: Bearer qa_live_test_key_123" \
137
- -H "Content-Type: application/json" \
138
- -d '{"url":"https://example.com","description":"test","outputSchema":{}}'
139
- ```
140
-
141
- Should return a job ID if authentication works.
142
-
143
- For more details, see [docs/API-AUTHENTICATION.md](docs/API-AUTHENTICATION.md)
144
-
145
- ## Testing
146
-
147
- The MCP server includes automated tests to verify it's working correctly:
148
-
149
- ```bash
150
- # Build first
151
- npm run build --workspace=@runhuman/mcp-server
152
-
153
- # Run simple automated test
154
- npm run test --workspace=@runhuman/mcp-server
155
-
156
- # Or use the MCP Inspector (interactive testing)
157
- npm run test:inspector --workspace=@runhuman/mcp-server
158
- ```
159
-
160
- The test script will:
161
- 1. ✅ Initialize a connection to the MCP server
162
- 2. ✅ List all available tools (create_job, wait_for_result)
163
- 3. ✅ Test calling the create_job tool
164
-
165
- ### Expected Test Output
166
-
167
- ```
168
- ✅ Server initialized successfully
169
- ✅ Tools listed: create_job, wait_for_result
170
- ✅ create_job tool called successfully
171
- ```
172
-
173
- ## Development
174
-
175
- ```bash
176
- # Watch mode (auto-rebuild on changes)
177
- npm run dev --workspace=@runhuman/mcp-server
178
-
179
- # Build
180
- npm run build --workspace=@runhuman/mcp-server
181
-
182
- # Test after building
183
- npm run test --workspace=@runhuman/mcp-server
184
- ```
185
-
186
- ## Integration with Claude Desktop
187
-
188
- To use this MCP server with Claude Desktop, add it to your configuration:
189
-
190
- ```json
191
- {
192
- "mcpServers": {
193
- "runhuman": {
194
- "command": "node",
195
- "args": ["/path/to/qa-experiment/packages/mcp-server/dist/index.js"]
196
- }
197
- }
198
- }
199
- ```
200
-
201
- ## Example Usage
202
-
203
- Once connected to an AI agent (like Claude), the agent can use these tools naturally:
204
-
205
- **User:** "Can someone test my checkout page at https://myapp.com/checkout?"
206
-
207
- **Agent uses create_job:**
208
- ```
209
- ✅ Job created successfully!
210
- Job ID: job_abc123
211
- Status: pending
212
- ...
213
- ```
214
-
215
- **Agent calls wait_for_result repeatedly until complete:**
216
- ```
217
- ⏳ Job Status: in_progress
218
- Waited 30s, job not complete yet.
219
- 💡 Suggestion: Call wait_for_result again with waitSeconds: 45
220
- ```
221
-
222
- **Finally:**
223
- ```
224
- ✅ Test completed!
225
- Results Summary:
226
- - Checkout Flow: ✅ Working
227
- - Payment Processing: ✅ Successful
228
- ...
229
- ```
230
-
231
- ## Developer Documentation
232
-
233
- For developers working on this MCP server:
234
- - [docs/HOW-AGENTS-USE-MCP.md](docs/HOW-AGENTS-USE-MCP.md) - How AI agents discover and use MCP servers
235
- - [docs/TOOL-RESPONSE-BEST-PRACTICES.md](docs/TOOL-RESPONSE-BEST-PRACTICES.md) - Best practices for tool responses
236
-
237
- ## Learn More
238
-
239
- - [Model Context Protocol Documentation](https://modelcontextprotocol.io/)
240
- - [RunHuman API Documentation](../api/README.md)
1
+ # RunHuman MCP Server
2
+
3
+ A Model Context Protocol (MCP) server that allows AI agents to interact with the RunHuman QA testing service.
4
+
5
+ ## Overview
6
+
7
+ This MCP server provides tools for creating and managing human QA jobs through the RunHuman API. AI agents can use this server to:
8
+
9
+ - Create new QA jobs with custom schemas
10
+ - Check the status of running jobs
11
+ - Retrieve completed job results
12
+
13
+ ## Installation
14
+
15
+ ### For Claude Desktop (Recommended)
16
+
17
+ 1. Get your API key at: https://runhuman.com/app.html
18
+
19
+ 2. Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on Mac):
20
+
21
+ ```json
22
+ {
23
+ "mcpServers": {
24
+ "runhuman": {
25
+ "command": "npx",
26
+ "args": ["-y", "@runhuman/mcp-server", "--api-key=qa_live_xxxxxxxxxxxxx"]
27
+ }
28
+ }
29
+ }
30
+ ```
31
+
32
+ 3. Restart Claude Desktop
33
+
34
+ That's it! The server will be automatically downloaded and run by Claude.
35
+
36
+ ### For Development
37
+
38
+ From the monorepo root:
39
+
40
+ ```bash
41
+ npm install
42
+ npm run build --workspace=@runhuman/mcp-server
43
+
44
+ # Run with API key
45
+ node packages/mcp-server/dist/index.js --api-key=qa_live_xxxxx
46
+ ```
47
+
48
+ ### Available Tools
49
+
50
+ #### `create_job`
51
+ Create a new QA job with human testers.
52
+
53
+ **Parameters:**
54
+ - `url` (string): The URL to test
55
+ - `description` (string): Instructions for the human tester describing what to test
56
+ - `schema` (object): Expected result schema that the tester response will be extracted into
57
+ - `targetDurationMinutes` (number, optional): Time limit for tester (default: 5, range: 1-60)
58
+
59
+ #### `wait_for_result`
60
+ Check status, wait, and retrieve results for a QA job in a single convenient call.
61
+
62
+ **Parameters:**
63
+ - `jobId` (string): The ID of the job to check
64
+ - `waitSeconds` (number, optional): How long to wait before checking again (default: 30, range: 1-300)
65
+
66
+ **Behavior:**
67
+ - Checks status BEFORE waiting (returns immediately if already complete)
68
+ - Waits for the specified duration
69
+ - Checks status AFTER waiting
70
+ - Returns results if complete, otherwise suggests calling again with longer wait time
71
+
72
+ **Usage Pattern:**
73
+ ```javascript
74
+ // After creating a job, call repeatedly with increasing wait times:
75
+ let result = await wait_for_result(jobId, { waitSeconds: 30 });
76
+ if (result.status !== 'completed') {
77
+ result = await wait_for_result(jobId, { waitSeconds: 45 });
78
+ }
79
+ if (result.status !== 'completed') {
80
+ result = await wait_for_result(jobId, { waitSeconds: 60 });
81
+ }
82
+ ```
83
+
84
+ **Returns:**
85
+ - `result`: Structured test results extracted from tester's response
86
+ - `status`: Job status (completed, failed, timeout, pending, claimed, in_progress)
87
+ - `costUsd`: Exact cost in USD with full precision (e.g., 0.396)
88
+ - `testDurationSeconds`: Time spent by tester in seconds (rounded up)
89
+ - Additional metadata (timestamps, tester info, etc.)
90
+
91
+ **Cost Calculation:**
92
+ - Costs are calculated as: `duration × $0.0018/second` (general-use tier)
93
+ - Duration is always rounded UP using Math.ceil (any partial second counts)
94
+ - Costs are never $0 unless the tester never actually worked on it
95
+ - Full precision maintained (not rounded to cents)
96
+
97
+ ## Configuration
98
+
99
+ The MCP server needs to be configured with your RunHuman API credentials.
100
+
101
+ ### 1. Get an API Key
102
+
103
+ **Option A: Via Dashboard**
104
+ 1. Start the API server: `npm run dev --workspace=@runhuman/api`
105
+ 2. Open http://localhost:3400/app.html
106
+ 3. Go to "API Keys" tab
107
+ 4. Click "Create API Key"
108
+ 5. Copy the key (starts with `qa_live_`)
109
+
110
+ **Option B: Use Default Test Key**
111
+ - For local development, you can use: `qa_live_test_key_123`
112
+ - This key exists in `packages/api/data/api-keys.json`
113
+
114
+ ### 2. Configure Environment Variables
115
+
116
+ Create a `.env` file in the MCP server directory:
117
+
118
+ ```bash
119
+ # For local development
120
+ RUNHUMAN_API_URL=http://localhost:3400
121
+ RUNHUMAN_API_KEY=qa_live_test_key_123
122
+
123
+ # For production
124
+ RUNHUMAN_API_URL=https://api.runhuman.com
125
+ RUNHUMAN_API_KEY=qa_live_xxxxxxxxxxxxxxxxxxxxx
126
+ ```
127
+
128
+ **Important:** Never commit `.env` files to git! They're already in `.gitignore`.
129
+
130
+ ### 3. Verify Configuration
131
+
132
+ Test your API key works:
133
+
134
+ ```bash
135
+ curl http://localhost:3400/api/jobs \
136
+ -H "Authorization: Bearer qa_live_test_key_123" \
137
+ -H "Content-Type: application/json" \
138
+ -d '{"url":"https://example.com","description":"test","outputSchema":{}}'
139
+ ```
140
+
141
+ Should return a job ID if authentication works.
142
+
143
+ For more details, see [docs/API-AUTHENTICATION.md](docs/API-AUTHENTICATION.md)
144
+
145
+ ## Testing
146
+
147
+ The MCP server includes automated tests to verify it's working correctly:
148
+
149
+ ```bash
150
+ # Build first
151
+ npm run build --workspace=@runhuman/mcp-server
152
+
153
+ # Run simple automated test
154
+ npm run test --workspace=@runhuman/mcp-server
155
+
156
+ # Or use the MCP Inspector (interactive testing)
157
+ npm run test:inspector --workspace=@runhuman/mcp-server
158
+ ```
159
+
160
+ The test script will:
161
+ 1. ✅ Initialize a connection to the MCP server
162
+ 2. ✅ List all available tools (create_job, wait_for_result)
163
+ 3. ✅ Test calling the create_job tool
164
+
165
+ ### Expected Test Output
166
+
167
+ ```
168
+ ✅ Server initialized successfully
169
+ ✅ Tools listed: create_job, wait_for_result
170
+ ✅ create_job tool called successfully
171
+ ```
172
+
173
+ ## Development
174
+
175
+ ```bash
176
+ # Watch mode (auto-rebuild on changes)
177
+ npm run dev --workspace=@runhuman/mcp-server
178
+
179
+ # Build
180
+ npm run build --workspace=@runhuman/mcp-server
181
+
182
+ # Test after building
183
+ npm run test --workspace=@runhuman/mcp-server
184
+ ```
185
+
186
+ ## Integration with Claude Desktop
187
+
188
+ To use this MCP server with Claude Desktop, add it to your configuration:
189
+
190
+ ```json
191
+ {
192
+ "mcpServers": {
193
+ "runhuman": {
194
+ "command": "node",
195
+ "args": ["/path/to/qa-experiment/packages/mcp-server/dist/index.js"]
196
+ }
197
+ }
198
+ }
199
+ ```
200
+
201
+ ## Example Usage
202
+
203
+ Once connected to an AI agent (like Claude), the agent can use these tools naturally:
204
+
205
+ **User:** "Can someone test my checkout page at https://myapp.com/checkout?"
206
+
207
+ **Agent uses create_job:**
208
+ ```
209
+ ✅ Job created successfully!
210
+ Job ID: job_abc123
211
+ Status: pending
212
+ ...
213
+ ```
214
+
215
+ **Agent calls wait_for_result repeatedly until complete:**
216
+ ```
217
+ ⏳ Job Status: in_progress
218
+ Waited 30s, job not complete yet.
219
+ 💡 Suggestion: Call wait_for_result again with waitSeconds: 45
220
+ ```
221
+
222
+ **Finally:**
223
+ ```
224
+ ✅ Test completed!
225
+ Results Summary:
226
+ - Checkout Flow: ✅ Working
227
+ - Payment Processing: ✅ Successful
228
+ ...
229
+ ```
230
+
231
+ ## Developer Documentation
232
+
233
+ For developers working on this MCP server:
234
+ - [docs/HOW-AGENTS-USE-MCP.md](docs/HOW-AGENTS-USE-MCP.md) - How AI agents discover and use MCP servers
235
+ - [docs/TOOL-RESPONSE-BEST-PRACTICES.md](docs/TOOL-RESPONSE-BEST-PRACTICES.md) - Best practices for tool responses
236
+
237
+ ## Learn More
238
+
239
+ - [Model Context Protocol Documentation](https://modelcontextprotocol.io/)
240
+ - [RunHuman API Documentation](../api/README.md)
package/dist/index.js CHANGED
@@ -75,22 +75,22 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
75
75
  tools: [
76
76
  {
77
77
  name: 'create_job',
78
- description: `⚠️ IMPORTANT: This ONLY creates and queues a job. It does NOT perform the test or return results. You MUST follow up with wait_for_result.
79
-
80
- Creates a QA job that will be performed by a REAL HUMAN tester (not AI). The human will manually test your application, describe findings in natural language, and GPT-4o will extract structured data from their response.
81
-
82
- Use this when you need human verification of:
83
- - UI/UX functionality that's hard to automate
84
- - Visual issues, accessibility problems
85
- - Complex user flows (login, checkout, forms)
86
- - Cross-browser compatibility
87
- - Real user experience feedback
88
-
89
- ⚠️ REQUIRED WORKFLOW (do NOT skip steps):
90
- 1. create_job → Returns jobId (job is now QUEUED, not complete!)
91
- 2. wait_for_result → Checks status, waits, and retrieves results (takes 2-10 min total)
92
- 3. If not complete, call wait_for_result again with longer wait time
93
-
78
+ description: `⚠️ IMPORTANT: This ONLY creates and queues a job. It does NOT perform the test or return results. You MUST follow up with wait_for_result.
79
+
80
+ Creates a QA job that will be performed by a REAL HUMAN tester (not AI). The human will manually test your application, describe findings in natural language, and GPT-4o will extract structured data from their response.
81
+
82
+ Use this when you need human verification of:
83
+ - UI/UX functionality that's hard to automate
84
+ - Visual issues, accessibility problems
85
+ - Complex user flows (login, checkout, forms)
86
+ - Cross-browser compatibility
87
+ - Real user experience feedback
88
+
89
+ ⚠️ REQUIRED WORKFLOW (do NOT skip steps):
90
+ 1. create_job → Returns jobId (job is now QUEUED, not complete!)
91
+ 2. wait_for_result → Checks status, waits, and retrieves results (takes 2-10 min total)
92
+ 3. If not complete, call wait_for_result again with longer wait time
93
+
94
94
  DO NOT treat job creation as completion. You MUST wait for and retrieve results.`,
95
95
  inputSchema: {
96
96
  type: 'object',
@@ -111,28 +111,36 @@ DO NOT treat job creation as completion. You MUST wait for and retrieve results.
111
111
  type: 'number',
112
112
  description: 'Time limit in minutes for the tester to complete the test after claiming. Default: 5 minutes. Range: 1-60.',
113
113
  },
114
+ allowDurationExtension: {
115
+ type: 'boolean',
116
+ description: 'Allow test duration to exceed targetDurationMinutes if the tester needs more time. Default: true.',
117
+ },
118
+ maxExtensionMinutes: {
119
+ type: ['number', 'boolean'],
120
+ description: 'Maximum additional minutes allowed for extension. Set to false for unlimited. Default: false (unlimited). Range: 1-60 if number.',
121
+ },
114
122
  },
115
123
  required: ['url', 'description', 'schema'],
116
124
  },
117
125
  },
118
126
  {
119
127
  name: 'wait_for_result',
120
- description: `Check status, wait, and retrieve results for a QA job in a single call.
121
-
122
- This tool combines status checking, waiting, and result retrieval into one convenient function:
123
- - Checks status BEFORE waiting (returns immediately if already complete)
124
- - Waits for the specified duration (default 30s, configurable 1-300s)
125
- - Checks status AFTER waiting
126
- - Returns results if complete, otherwise suggests calling again with longer wait
127
-
128
- Jobs progress through states: pending → claimed → in_progress → completed (or failed/timeout)
129
- Typical completion time: 2-10 minutes total
130
-
131
- Use this tool repeatedly with increasing wait times until you get results:
132
- - First call: wait_for_result(jobId, { waitSeconds: 30 })
133
- - If not complete: wait_for_result(jobId, { waitSeconds: 45 })
134
- - If still not complete: wait_for_result(jobId, { waitSeconds: 60 })
135
-
128
+ description: `Check status, wait, and retrieve results for a QA job in a single call.
129
+
130
+ This tool combines status checking, waiting, and result retrieval into one convenient function:
131
+ - Checks status BEFORE waiting (returns immediately if already complete)
132
+ - Waits for the specified duration (default 30s, configurable 1-300s)
133
+ - Checks status AFTER waiting
134
+ - Returns results if complete, otherwise suggests calling again with longer wait
135
+
136
+ Jobs progress through states: pending → claimed → in_progress → completed (or failed/timeout)
137
+ Typical completion time: 2-10 minutes total
138
+
139
+ Use this tool repeatedly with increasing wait times until you get results:
140
+ - First call: wait_for_result(jobId, { waitSeconds: 30 })
141
+ - If not complete: wait_for_result(jobId, { waitSeconds: 45 })
142
+ - If still not complete: wait_for_result(jobId, { waitSeconds: 60 })
143
+
136
144
  Returns immediately if job is already complete (no waiting needed).`,
137
145
  inputSchema: {
138
146
  type: 'object',
@@ -177,6 +185,8 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
177
185
  description: args.description,
178
186
  outputSchema: args.schema,
179
187
  targetDurationMinutes: args.targetDurationMinutes,
188
+ allowDurationExtension: args.allowDurationExtension,
189
+ maxExtensionMinutes: args.maxExtensionMinutes,
180
190
  })
181
191
  });
182
192
  if (!response.ok) {
@@ -184,14 +194,14 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
184
194
  return {
185
195
  content: [{
186
196
  type: 'text',
187
- text: `❌ Failed to create job
188
-
189
- Error: ${error.error || error.message || response.statusText}
190
- Status: ${response.status}
191
-
192
- Please check:
193
- - Your RUNHUMAN_API_KEY is valid
194
- - The API server is running at ${API_URL}
197
+ text: `❌ Failed to create job
198
+
199
+ Error: ${error.error || error.message || response.statusText}
200
+ Status: ${response.status}
201
+
202
+ Please check:
203
+ - Your RUNHUMAN_API_KEY is valid
204
+ - The API server is running at ${API_URL}
195
205
  - Your API key has permission to create jobs`
196
206
  }],
197
207
  isError: true
@@ -203,22 +213,22 @@ Please check:
203
213
  content: [
204
214
  {
205
215
  type: 'text',
206
- text: `⏳ Job QUEUED (not complete yet!)
207
-
208
- Job ID: ${data.jobId}
209
- Status: ${data.status}
210
- URL: ${args.url}
211
- Time limit: ${duration} minutes
212
-
213
- The test has been queued for a HUMAN tester. It is NOT complete yet.
214
-
215
- ⚠️ REQUIRED NEXT STEPS:
216
- 1. Call wait_for_result(jobId: "${data.jobId}", waitSeconds: 30)
217
- 2. If not complete, call wait_for_result again with waitSeconds: 45
218
- 3. Continue with increasing wait times (60, 90, etc.) until complete
219
-
220
- Typical completion time: 2-10 minutes total.
221
-
216
+ text: `⏳ Job QUEUED (not complete yet!)
217
+
218
+ Job ID: ${data.jobId}
219
+ Status: ${data.status}
220
+ URL: ${args.url}
221
+ Time limit: ${duration} minutes
222
+
223
+ The test has been queued for a HUMAN tester. It is NOT complete yet.
224
+
225
+ ⚠️ REQUIRED NEXT STEPS:
226
+ 1. Call wait_for_result(jobId: "${data.jobId}", waitSeconds: 30)
227
+ 2. If not complete, call wait_for_result again with waitSeconds: 45
228
+ 3. Continue with increasing wait times (60, 90, etc.) until complete
229
+
230
+ Typical completion time: 2-10 minutes total.
231
+
222
232
  DO NOT consider this task done until you have retrieved the results!`,
223
233
  },
224
234
  ],
@@ -228,13 +238,13 @@ DO NOT consider this task done until you have retrieved the results!`,
228
238
  return {
229
239
  content: [{
230
240
  type: 'text',
231
- text: `❌ Error creating job
232
-
233
- ${error instanceof Error ? error.message : 'Unknown error'}
234
-
235
- Please check:
236
- - The API server is running at ${API_URL}
237
- - Your network connection
241
+ text: `❌ Error creating job
242
+
243
+ ${error instanceof Error ? error.message : 'Unknown error'}
244
+
245
+ Please check:
246
+ - The API server is running at ${API_URL}
247
+ - Your network connection
238
248
  - Your .env file configuration`
239
249
  }],
240
250
  isError: true
@@ -269,15 +279,18 @@ Please check:
269
279
  content: [
270
280
  {
271
281
  type: 'text',
272
- text: `✅ Test completed!
273
-
274
- Job ID: ${job.id}
275
-
282
+ text: `✅ Test completed!
283
+
284
+ Job ID: ${job.id}
285
+
276
286
  **Test Results:**`
277
287
  },
278
288
  {
279
289
  type: 'text',
280
- text: JSON.stringify(job.result || {}, null, 2)
290
+ text: JSON.stringify({
291
+ result: job.result || {},
292
+ testerData: job.testerData
293
+ }, null, 2)
281
294
  }
282
295
  ]
283
296
  };
@@ -286,9 +299,9 @@ Job ID: ${job.id}
286
299
  return {
287
300
  content: [{
288
301
  type: 'text',
289
- text: `❌ Job failed
290
-
291
- Job ID: ${job.id}
302
+ text: `❌ Job failed
303
+
304
+ Job ID: ${job.id}
292
305
  Error: ${job.error || 'Unknown error'}`
293
306
  }],
294
307
  isError: true
@@ -298,10 +311,10 @@ Error: ${job.error || 'Unknown error'}`
298
311
  return {
299
312
  content: [{
300
313
  type: 'text',
301
- text: `⏰ Job timed out
302
-
303
- Job ID: ${job.id}
304
-
314
+ text: `⏰ Job timed out
315
+
316
+ Job ID: ${job.id}
317
+
305
318
  The tester did not complete the test in time.`
306
319
  }],
307
320
  isError: true
@@ -326,15 +339,18 @@ The tester did not complete the test in time.`
326
339
  content: [
327
340
  {
328
341
  type: 'text',
329
- text: `✅ Test completed!
330
-
331
- Job ID: ${job.id}
332
-
342
+ text: `✅ Test completed!
343
+
344
+ Job ID: ${job.id}
345
+
333
346
  **Test Results:**`
334
347
  },
335
348
  {
336
349
  type: 'text',
337
- text: JSON.stringify(job.result || {}, null, 2)
350
+ text: JSON.stringify({
351
+ result: job.result || {},
352
+ testerData: job.testerData
353
+ }, null, 2)
338
354
  }
339
355
  ]
340
356
  };
@@ -343,9 +359,9 @@ Job ID: ${job.id}
343
359
  return {
344
360
  content: [{
345
361
  type: 'text',
346
- text: `❌ Job failed
347
-
348
- Job ID: ${job.id}
362
+ text: `❌ Job failed
363
+
364
+ Job ID: ${job.id}
349
365
  Error: ${job.error || 'Unknown error'}`
350
366
  }],
351
367
  isError: true
@@ -355,10 +371,10 @@ Error: ${job.error || 'Unknown error'}`
355
371
  return {
356
372
  content: [{
357
373
  type: 'text',
358
- text: `⏰ Job timed out
359
-
360
- Job ID: ${job.id}
361
-
374
+ text: `⏰ Job timed out
375
+
376
+ Job ID: ${job.id}
377
+
362
378
  The tester did not complete the test in time.`
363
379
  }],
364
380
  isError: true
@@ -372,15 +388,15 @@ The tester did not complete the test in time.`
372
388
  return {
373
389
  content: [{
374
390
  type: 'text',
375
- text: `${emoji} Job Status: ${job.status}
376
-
377
- Job ID: ${job.id}
378
-
379
- ${statusMessage}
380
-
381
- ⏰ Waited ${waitSeconds}s, job not complete yet.
382
-
383
- 💡 Suggestion: Call wait_for_result again with waitSeconds: ${nextWait}
391
+ text: `${emoji} Job Status: ${job.status}
392
+
393
+ Job ID: ${job.id}
394
+
395
+ ${statusMessage}
396
+
397
+ ⏰ Waited ${waitSeconds}s, job not complete yet.
398
+
399
+ 💡 Suggestion: Call wait_for_result again with waitSeconds: ${nextWait}
384
400
  Typical completion time: 2-10 minutes total.`
385
401
  }]
386
402
  };
@@ -389,8 +405,8 @@ Typical completion time: 2-10 minutes total.`
389
405
  return {
390
406
  content: [{
391
407
  type: 'text',
392
- text: `❌ Error waiting for result
393
-
408
+ text: `❌ Error waiting for result
409
+
394
410
  ${error instanceof Error ? error.message : 'Unknown error'}`
395
411
  }],
396
412
  isError: true
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,62 +1,62 @@
1
- {
2
- "name": "@runhuman/mcp-server",
3
- "version": "2.0.1",
4
- "description": "Model Context Protocol (MCP) server for RunHuman - Human-powered QA testing for AI agents",
5
- "main": "dist/index.js",
6
- "type": "module",
7
- "bin": {
8
- "runhuman-mcp": "dist/index.js"
9
- },
10
- "files": [
11
- "dist",
12
- "README.md",
13
- ".env.example"
14
- ],
15
- "scripts": {
16
- "build": "tsc",
17
- "dev": "tsx watch src/index.ts",
18
- "start": "node dist/index.js",
19
- "prepublishOnly": "npm run build",
20
- "test": "node test-simple.cjs",
21
- "test:all": "node test-all-tools.cjs",
22
- "test:routes": "node test-route-fix.cjs",
23
- "test:endpoints": "node test-api-endpoints.cjs",
24
- "test:ci": "npm run test:endpoints && npm run test:routes",
25
- "test:inspector": "npx @modelcontextprotocol/inspector node dist/index.js"
26
- },
27
- "keywords": [
28
- "mcp",
29
- "model-context-protocol",
30
- "qa",
31
- "testing",
32
- "human-in-the-loop",
33
- "ai-agent",
34
- "claude",
35
- "anthropic",
36
- "qa-testing",
37
- "manual-testing"
38
- ],
39
- "author": "RunHuman <hey@runhuman.com>",
40
- "repository": {
41
- "type": "git",
42
- "url": "git+https://github.com/yueranyuan/qa-experiment.git",
43
- "directory": "packages/mcp-server"
44
- },
45
- "homepage": "https://runhuman.com",
46
- "bugs": {
47
- "url": "https://github.com/yueranyuan/qa-experiment/issues"
48
- },
49
- "license": "ISC",
50
- "engines": {
51
- "node": ">=18.0.0"
52
- },
53
- "dependencies": {
54
- "@modelcontextprotocol/sdk": "latest",
55
- "dotenv": "^17.2.3"
56
- },
57
- "devDependencies": {
58
- "@types/node": "^20.11.17",
59
- "tsx": "^4.7.1",
60
- "typescript": "^5.3.3"
61
- }
62
- }
1
+ {
2
+ "name": "@runhuman/mcp-server",
3
+ "version": "2.0.3",
4
+ "description": "Model Context Protocol (MCP) server for RunHuman - Human-powered QA testing for AI agents",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "bin": {
8
+ "runhuman-mcp": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ ".env.example"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "dev": "tsx watch src/index.ts",
18
+ "start": "node dist/index.js",
19
+ "prepublishOnly": "npm run build",
20
+ "test": "node test-simple.cjs",
21
+ "test:all": "node test-all-tools.cjs",
22
+ "test:routes": "node test-route-fix.cjs",
23
+ "test:endpoints": "node test-api-endpoints.cjs",
24
+ "test:ci": "npm run test:endpoints && npm run test:routes",
25
+ "test:inspector": "npx @modelcontextprotocol/inspector node dist/index.js"
26
+ },
27
+ "keywords": [
28
+ "mcp",
29
+ "model-context-protocol",
30
+ "qa",
31
+ "testing",
32
+ "human-in-the-loop",
33
+ "ai-agent",
34
+ "claude",
35
+ "anthropic",
36
+ "qa-testing",
37
+ "manual-testing"
38
+ ],
39
+ "author": "RunHuman <hey@runhuman.com>",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "git+https://github.com/yueranyuan/qa-experiment.git",
43
+ "directory": "packages/mcp-server"
44
+ },
45
+ "homepage": "https://runhuman.com",
46
+ "bugs": {
47
+ "url": "https://github.com/yueranyuan/qa-experiment/issues"
48
+ },
49
+ "license": "ISC",
50
+ "engines": {
51
+ "node": ">=18.0.0"
52
+ },
53
+ "dependencies": {
54
+ "@modelcontextprotocol/sdk": "latest",
55
+ "dotenv": "^17.2.3"
56
+ },
57
+ "devDependencies": {
58
+ "@types/node": "^20.11.17",
59
+ "tsx": "^4.7.1",
60
+ "typescript": "^5.3.3"
61
+ }
62
+ }