@testrelic/mcp 2.1.0 → 3.1.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.
Files changed (44) hide show
  1. package/LICENSE +661 -201
  2. package/README.md +58 -2
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/clients/cloud.d.ts +288 -3
  5. package/dist/clients/cloud.d.ts.map +1 -1
  6. package/dist/clients/cloud.js +223 -32
  7. package/dist/clients/cloud.js.map +1 -1
  8. package/dist/clients/http.d.ts +2 -0
  9. package/dist/clients/http.d.ts.map +1 -1
  10. package/dist/clients/http.js +6 -0
  11. package/dist/clients/http.js.map +1 -1
  12. package/dist/config.d.ts +4 -4
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +7 -0
  15. package/dist/config.js.map +1 -1
  16. package/dist/prompts/index.d.ts.map +1 -1
  17. package/dist/prompts/index.js +108 -0
  18. package/dist/prompts/index.js.map +1 -1
  19. package/dist/resources/index.d.ts +9 -1
  20. package/dist/resources/index.d.ts.map +1 -1
  21. package/dist/resources/index.js +118 -1
  22. package/dist/resources/index.js.map +1 -1
  23. package/dist/tools/ai/index.d.ts +3 -0
  24. package/dist/tools/ai/index.d.ts.map +1 -0
  25. package/dist/tools/ai/index.js +265 -0
  26. package/dist/tools/ai/index.js.map +1 -0
  27. package/dist/tools/apps/index.d.ts +3 -0
  28. package/dist/tools/apps/index.d.ts.map +1 -0
  29. package/dist/tools/apps/index.js +138 -0
  30. package/dist/tools/apps/index.js.map +1 -0
  31. package/dist/tools/artifacts/index.d.ts +3 -0
  32. package/dist/tools/artifacts/index.d.ts.map +1 -0
  33. package/dist/tools/artifacts/index.js +124 -0
  34. package/dist/tools/artifacts/index.js.map +1 -0
  35. package/dist/tools/index.d.ts.map +1 -1
  36. package/dist/tools/index.js +8 -0
  37. package/dist/tools/index.js.map +1 -1
  38. package/dist/tools/marketplace/index.d.ts +3 -0
  39. package/dist/tools/marketplace/index.d.ts.map +1 -0
  40. package/dist/tools/marketplace/index.js +194 -0
  41. package/dist/tools/marketplace/index.js.map +1 -0
  42. package/dist/version.d.ts +1 -1
  43. package/dist/version.js +1 -1
  44. package/package.json +5 -4
@@ -0,0 +1,194 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Marketplace capability — first-class testing-related integrations with
4
+ * bespoke proxies: GitHub Actions, Jira, BrowserStack, LambdaTest, Grafana
5
+ * Loki, Sentry, Amplitude. Unlike the dynamic-Apps gateway, each of these
6
+ * has typed operations and per-repo configuration on the platform.
7
+ */
8
+ const AppEntry = z.object({
9
+ slug: z.string(),
10
+ name: z.string(),
11
+ category: z.string(),
12
+ description: z.string(),
13
+ authMethod: z.string(),
14
+ requiresOAuth: z.boolean(),
15
+ capabilities: z.array(z.string()),
16
+ connected: z.boolean(),
17
+ comingSoon: z.boolean(),
18
+ docsUrl: z.string(),
19
+ });
20
+ const ConfigField = z.object({
21
+ key: z.string(),
22
+ label: z.string(),
23
+ placeholder: z.string(),
24
+ helperText: z.string().optional(),
25
+ secret: z.boolean().optional(),
26
+ });
27
+ export const marketplaceTools = [
28
+ {
29
+ name: "tr_marketplace_list_apps",
30
+ capability: "marketplace",
31
+ title: "List Marketplace apps",
32
+ description: "Full Marketplace catalog with connection status. Each entry includes auth method, MCP capabilities unlocked when connected, and a coming-soon flag. Returns roughly 7 first-class testing integrations.",
33
+ inputSchema: {},
34
+ outputSchema: {
35
+ apps: z.array(AppEntry),
36
+ },
37
+ handler: async (_input, ctx) => {
38
+ const { apps } = await ctx.clients.cloud.listMarketplaceApps();
39
+ const lines = ["## Marketplace Apps", ""];
40
+ for (const a of apps) {
41
+ const dot = a.connected ? "●" : a.comingSoon ? "…" : "○";
42
+ const caps = a.capabilities.length ? ` [${a.capabilities.join(", ")}]` : "";
43
+ lines.push(`- ${dot} **${a.slug}** — ${a.name} (${a.category}, ${a.authMethod})${caps}`);
44
+ }
45
+ return { text: lines.join("\n"), structured: { apps } };
46
+ },
47
+ },
48
+ {
49
+ name: "tr_marketplace_get_app",
50
+ capability: "marketplace",
51
+ title: "Get one Marketplace app",
52
+ description: "Returns full detail for one app, including configFields needed by `tr_marketplace_connect`.",
53
+ inputSchema: {
54
+ slug: z.string(),
55
+ },
56
+ outputSchema: {
57
+ slug: z.string(),
58
+ name: z.string(),
59
+ category: z.string(),
60
+ description: z.string(),
61
+ authMethod: z.string(),
62
+ requiresOAuth: z.boolean(),
63
+ capabilities: z.array(z.string()),
64
+ connected: z.boolean(),
65
+ configFields: z.array(ConfigField),
66
+ docsUrl: z.string(),
67
+ },
68
+ handler: async (input, ctx) => {
69
+ const slug = String(input.slug);
70
+ const detail = await ctx.clients.cloud.getMarketplaceApp(slug);
71
+ const lines = [
72
+ `## ${detail.name} (${detail.slug})`,
73
+ "",
74
+ detail.description,
75
+ "",
76
+ `- **Category:** ${detail.category}`,
77
+ `- **Auth method:** ${detail.authMethod}${detail.requiresOAuth ? " (OAuth)" : ""}`,
78
+ `- **Connected:** ${detail.connected ? "yes" : "no"}`,
79
+ `- **Capabilities:** ${detail.capabilities.join(", ")}`,
80
+ `- **Docs:** ${detail.docsUrl}`,
81
+ ];
82
+ if (detail.configFields.length) {
83
+ lines.push("", "### Config fields");
84
+ for (const f of detail.configFields) {
85
+ lines.push(`- \`${f.key}\` — ${f.label}${f.secret ? " (secret)" : ""}`);
86
+ }
87
+ }
88
+ return { text: lines.join("\n"), structured: detail };
89
+ },
90
+ },
91
+ {
92
+ name: "tr_marketplace_list_connections",
93
+ capability: "marketplace",
94
+ title: "List active Marketplace connections",
95
+ description: "Returns just the connected apps for the org, with status and connectedAt.",
96
+ inputSchema: {},
97
+ outputSchema: {
98
+ connections: z.array(z.object({ slug: z.string(), status: z.string(), connectedAt: z.string() })),
99
+ },
100
+ handler: async (_input, ctx) => {
101
+ const { connections } = await ctx.clients.cloud.listMarketplaceConnections();
102
+ const lines = ["## Active connections", ""];
103
+ for (const c of connections)
104
+ lines.push(`- **${c.slug}** — ${c.status} (since ${c.connectedAt})`);
105
+ if (!connections.length)
106
+ lines.push("_No active Marketplace connections._");
107
+ return { text: lines.join("\n"), structured: { connections } };
108
+ },
109
+ },
110
+ {
111
+ name: "tr_marketplace_validate",
112
+ capability: "marketplace",
113
+ title: "Validate Marketplace credentials",
114
+ description: "Validates credentials for an apikey / basic / pat app without writing them. Returns { ok, error? }. Use this before `tr_marketplace_connect` to surface auth issues without side effects.",
115
+ inputSchema: {
116
+ slug: z.string(),
117
+ credentials: z.record(z.string()),
118
+ },
119
+ outputSchema: { ok: z.boolean(), error: z.string().optional() },
120
+ handler: async (input, ctx) => {
121
+ const result = await ctx.clients.cloud.validateMarketplaceApp(String(input.slug), input.credentials);
122
+ return {
123
+ text: result.ok ? `✓ ${input.slug} credentials valid.` : `✗ ${input.slug}: ${result.error ?? "validation failed"}`,
124
+ structured: result,
125
+ };
126
+ },
127
+ },
128
+ {
129
+ name: "tr_marketplace_connect",
130
+ capability: "marketplace",
131
+ title: "Connect a Marketplace app",
132
+ description: "Installs an apikey / basic / pat app. For OAuth apps, use `tr_marketplace_start_oauth` instead. Body: { slug, credentials } — keys must match the app's configFields. Returns { ok, id }.",
133
+ inputSchema: {
134
+ slug: z.string(),
135
+ credentials: z.record(z.string()),
136
+ },
137
+ outputSchema: { ok: z.boolean(), id: z.string() },
138
+ handler: async (input, ctx) => {
139
+ const slug = String(input.slug);
140
+ const result = await ctx.clients.cloud.connectMarketplaceApp(slug, input.credentials);
141
+ return { text: `✓ ${slug} connected (id: ${result.id}).`, structured: result };
142
+ },
143
+ },
144
+ {
145
+ name: "tr_marketplace_start_oauth",
146
+ capability: "marketplace",
147
+ title: "Start OAuth for a Marketplace app",
148
+ description: "Returns { redirectUrl, state } for OAuth-only Marketplace apps. The user must open redirectUrl in a browser; the MCP cannot automate this. Poll `tr_marketplace_get_app` until `connected: true`.",
149
+ inputSchema: { slug: z.string() },
150
+ outputSchema: { redirectUrl: z.string(), state: z.string() },
151
+ handler: async (input, ctx) => {
152
+ const slug = String(input.slug);
153
+ const r = await ctx.clients.cloud.startMarketplaceOAuth(slug);
154
+ const text = `Open this URL to complete OAuth for ${slug}:\n\n${r.redirectUrl}`;
155
+ return { text, structured: r };
156
+ },
157
+ },
158
+ {
159
+ name: "tr_marketplace_disconnect",
160
+ capability: "marketplace",
161
+ title: "Disconnect a Marketplace app",
162
+ description: "Removes the app's credentials from the org. Existing test runs are unaffected.",
163
+ inputSchema: { slug: z.string() },
164
+ outputSchema: { ok: z.boolean() },
165
+ handler: async (input, ctx) => {
166
+ const slug = String(input.slug);
167
+ const r = await ctx.clients.cloud.disconnectMarketplaceApp(slug);
168
+ return { text: `Disconnected ${slug}.`, structured: r };
169
+ },
170
+ },
171
+ {
172
+ name: "tr_marketplace_invoke",
173
+ capability: "marketplace",
174
+ title: "Invoke a Marketplace operation",
175
+ description: "Unified operation runner. Body: { slug, operation, args }. Each app exposes typed operations — e.g. jira.search, jira.create, github.runs, github.trigger, amplitude.events, browserstack.video, sentry.search, loki.query. The platform proxies using stored credentials; never pass tokens or secrets in args.",
176
+ inputSchema: {
177
+ slug: z.string(),
178
+ operation: z.string(),
179
+ args: z.record(z.unknown()),
180
+ },
181
+ outputSchema: {
182
+ ok: z.boolean(),
183
+ operation: z.string(),
184
+ result: z.record(z.unknown()),
185
+ },
186
+ handler: async (input, ctx) => {
187
+ const slug = String(input.slug);
188
+ const op = String(input.operation);
189
+ const r = await ctx.clients.cloud.invokeMarketplaceApp(slug, op, (input.args ?? {}));
190
+ return { text: r.ok ? `✓ ${slug}.${op} succeeded.` : `✗ ${slug}.${op} failed.`, structured: r };
191
+ },
192
+ },
193
+ ];
194
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/marketplace/index.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -2,6 +2,6 @@
2
2
  * Single source of truth for the server version. Imported by CLI --version,
3
3
  * tr_get_config, tr_health, and server registration.
4
4
  */
5
- export declare const version = "2.1.0";
5
+ export declare const version = "3.0.0";
6
6
  export declare const name = "@testrelic/mcp";
7
7
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -2,6 +2,6 @@
2
2
  * Single source of truth for the server version. Imported by CLI --version,
3
3
  * tr_get_config, tr_health, and server registration.
4
4
  */
5
- export const version = "2.1.0";
5
+ export const version = "3.0.0";
6
6
  export const name = "@testrelic/mcp";
7
7
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@testrelic/mcp",
3
- "version": "2.1.0",
4
- "description": "TestRelic MCP Server — cloud-wired intelligent testing context (test creation, auto-healing, coverage gaps, test impact). One token; everything else is resolved from your cloud-platform-app org.",
3
+ "version": "3.1.0",
4
+ "description": "TestRelic MCP Server — cloud-wired intelligent testing context (test creation, auto-healing, coverage gaps, test impact). One token; everything else is resolved.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -20,7 +20,8 @@
20
20
  "files": [
21
21
  "dist/**/*",
22
22
  "README.md",
23
- "LICENSE"
23
+ "LICENSE",
24
+ ".cursor/skills/**/*"
24
25
  ],
25
26
  "scripts": {
26
27
  "build": "tsc -b",
@@ -73,7 +74,7 @@
73
74
  "coverage",
74
75
  "ai"
75
76
  ],
76
- "license": "Apache-2.0",
77
+ "license": "AGPL-3.0-only",
77
78
  "repository": {
78
79
  "type": "git",
79
80
  "url": "git+https://github.com/testrelic-ai/testrelic-mcp-server.git"