newrelic-mcp 1.1.2 → 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/dist/client/rest-client.d.ts +38 -0
- package/dist/client/rest-client.d.ts.map +1 -0
- package/dist/client/rest-client.js +116 -0
- package/dist/client/rest-client.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +28 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/rest/alerts.d.ts +24 -0
- package/dist/tools/rest/alerts.d.ts.map +1 -0
- package/dist/tools/rest/alerts.js +94 -0
- package/dist/tools/rest/alerts.js.map +1 -0
- package/dist/tools/rest/apm.d.ts +18 -0
- package/dist/tools/rest/apm.d.ts.map +1 -0
- package/dist/tools/rest/apm.js +63 -0
- package/dist/tools/rest/apm.js.map +1 -0
- package/dist/tools/rest/deployments.d.ts +33 -0
- package/dist/tools/rest/deployments.d.ts.map +1 -0
- package/dist/tools/rest/deployments.js +111 -0
- package/dist/tools/rest/deployments.js.map +1 -0
- package/dist/tools/rest/metrics.d.ts +42 -0
- package/dist/tools/rest/metrics.d.ts.map +1 -0
- package/dist/tools/rest/metrics.js +144 -0
- package/dist/tools/rest/metrics.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const RestClientOptions: z.ZodObject<{
|
|
3
|
+
apiKey: z.ZodString;
|
|
4
|
+
region: z.ZodDefault<z.ZodEnum<["US", "EU"]>>;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
region: "US" | "EU";
|
|
7
|
+
apiKey: string;
|
|
8
|
+
}, {
|
|
9
|
+
apiKey: string;
|
|
10
|
+
region?: "US" | "EU" | undefined;
|
|
11
|
+
}>;
|
|
12
|
+
export type RestClientOptions = z.infer<typeof RestClientOptions>;
|
|
13
|
+
export type Region = 'US' | 'EU';
|
|
14
|
+
declare function baseUrlForRegion(region: Region): string;
|
|
15
|
+
declare function serializeQuery(params: Record<string, unknown> | undefined): string;
|
|
16
|
+
declare function parseLinkHeader(linkHeader: string | null): Record<string, string>;
|
|
17
|
+
export interface RestResponse<T> {
|
|
18
|
+
status: number;
|
|
19
|
+
data: T;
|
|
20
|
+
links?: Record<string, string>;
|
|
21
|
+
url: string;
|
|
22
|
+
}
|
|
23
|
+
export declare class NewRelicRestClient {
|
|
24
|
+
private readonly apiKey;
|
|
25
|
+
private readonly region;
|
|
26
|
+
constructor(options: RestClientOptions);
|
|
27
|
+
private buildUrl;
|
|
28
|
+
get<T>(path: string, query?: Record<string, unknown>): Promise<RestResponse<T>>;
|
|
29
|
+
post<T>(path: string, body: unknown): Promise<RestResponse<T>>;
|
|
30
|
+
delete<T>(path: string): Promise<RestResponse<T>>;
|
|
31
|
+
}
|
|
32
|
+
export declare const __test__: {
|
|
33
|
+
serializeQuery: typeof serializeQuery;
|
|
34
|
+
parseLinkHeader: typeof parseLinkHeader;
|
|
35
|
+
baseUrlForRegion: typeof baseUrlForRegion;
|
|
36
|
+
};
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=rest-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest-client.d.ts","sourceRoot":"","sources":["../../src/client/rest-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjC,iBAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,iBAAS,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAc3E;AAED,iBAAS,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAe1E;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,EAAE,iBAAiB;IAMtC,OAAO,CAAC,QAAQ;IAQV,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAiB/E,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAkB9D,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAgBxD;AAED,eAAO,MAAM,QAAQ;;;;CAAwD,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.__test__ = exports.NewRelicRestClient = exports.RestClientOptions = void 0;
|
|
4
|
+
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
exports.RestClientOptions = zod_1.z.object({
|
|
7
|
+
apiKey: zod_1.z.string().min(1),
|
|
8
|
+
region: zod_1.z.enum(['US', 'EU']).default('US'),
|
|
9
|
+
});
|
|
10
|
+
function baseUrlForRegion(region) {
|
|
11
|
+
return region === 'EU' ? 'https://api.eu.newrelic.com/v2' : 'https://api.newrelic.com/v2';
|
|
12
|
+
}
|
|
13
|
+
function serializeQuery(params) {
|
|
14
|
+
if (!params)
|
|
15
|
+
return '';
|
|
16
|
+
const query = new URLSearchParams();
|
|
17
|
+
for (const [key, value] of Object.entries(params)) {
|
|
18
|
+
if (value === undefined || value === null)
|
|
19
|
+
continue;
|
|
20
|
+
if (Array.isArray(value)) {
|
|
21
|
+
// arrays as repeated params: names[]=a&names[]=b
|
|
22
|
+
value.forEach((v) => query.append(`${key}[]`, String(v)));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
query.set(key, String(value));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const qs = query.toString();
|
|
29
|
+
return qs ? `?${qs}` : '';
|
|
30
|
+
}
|
|
31
|
+
function parseLinkHeader(linkHeader) {
|
|
32
|
+
if (!linkHeader)
|
|
33
|
+
return {};
|
|
34
|
+
const parts = linkHeader.split(',');
|
|
35
|
+
const links = {};
|
|
36
|
+
for (const part of parts) {
|
|
37
|
+
const section = part.split(';');
|
|
38
|
+
if (section.length < 2)
|
|
39
|
+
continue;
|
|
40
|
+
const url = section[0].trim().replace(/^<|>$/g, '');
|
|
41
|
+
const relMatch = section[1].match(/rel="(.*)"/);
|
|
42
|
+
const rel = relMatch?.[1];
|
|
43
|
+
if (rel) {
|
|
44
|
+
links[rel] = url;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return links;
|
|
48
|
+
}
|
|
49
|
+
class NewRelicRestClient {
|
|
50
|
+
apiKey;
|
|
51
|
+
region;
|
|
52
|
+
constructor(options) {
|
|
53
|
+
const parsed = exports.RestClientOptions.parse(options);
|
|
54
|
+
this.apiKey = parsed.apiKey;
|
|
55
|
+
this.region = parsed.region;
|
|
56
|
+
}
|
|
57
|
+
buildUrl(path, query) {
|
|
58
|
+
const base = baseUrlForRegion(this.region);
|
|
59
|
+
const normalizedPath = path.startsWith('/') ? path : `/${path}`;
|
|
60
|
+
const hasJson = normalizedPath.endsWith('.json');
|
|
61
|
+
const qs = serializeQuery(query);
|
|
62
|
+
return `${base}${hasJson ? normalizedPath : `${normalizedPath}.json`}${qs}`;
|
|
63
|
+
}
|
|
64
|
+
async get(path, query) {
|
|
65
|
+
const url = this.buildUrl(path, query);
|
|
66
|
+
const response = await fetch(url, {
|
|
67
|
+
method: 'GET',
|
|
68
|
+
headers: {
|
|
69
|
+
'Content-Type': 'application/json',
|
|
70
|
+
'Api-Key': this.apiKey,
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
const links = parseLinkHeader(response.headers.get('link'));
|
|
74
|
+
const data = (await response.json());
|
|
75
|
+
if (!response.ok) {
|
|
76
|
+
throw new Error(`REST API error: ${response.status} ${response.statusText}`);
|
|
77
|
+
}
|
|
78
|
+
return { status: response.status, data, links, url };
|
|
79
|
+
}
|
|
80
|
+
async post(path, body) {
|
|
81
|
+
const url = this.buildUrl(path);
|
|
82
|
+
const response = await fetch(url, {
|
|
83
|
+
method: 'POST',
|
|
84
|
+
headers: {
|
|
85
|
+
'Content-Type': 'application/json',
|
|
86
|
+
'Api-Key': this.apiKey,
|
|
87
|
+
},
|
|
88
|
+
body: JSON.stringify(body),
|
|
89
|
+
});
|
|
90
|
+
const links = parseLinkHeader(response.headers.get('link'));
|
|
91
|
+
const data = (await response.json());
|
|
92
|
+
if (!response.ok) {
|
|
93
|
+
throw new Error(`REST API error: ${response.status} ${response.statusText}`);
|
|
94
|
+
}
|
|
95
|
+
return { status: response.status, data, links, url };
|
|
96
|
+
}
|
|
97
|
+
async delete(path) {
|
|
98
|
+
const url = this.buildUrl(path);
|
|
99
|
+
const response = await fetch(url, {
|
|
100
|
+
method: 'DELETE',
|
|
101
|
+
headers: {
|
|
102
|
+
'Content-Type': 'application/json',
|
|
103
|
+
'Api-Key': this.apiKey,
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
const links = parseLinkHeader(response.headers.get('link'));
|
|
107
|
+
const data = (await response.json());
|
|
108
|
+
if (!response.ok) {
|
|
109
|
+
throw new Error(`REST API error: ${response.status} ${response.statusText}`);
|
|
110
|
+
}
|
|
111
|
+
return { status: response.status, data, links, url };
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.NewRelicRestClient = NewRelicRestClient;
|
|
115
|
+
exports.__test__ = { serializeQuery, parseLinkHeader, baseUrlForRegion };
|
|
116
|
+
//# sourceMappingURL=rest-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest-client.js","sourceRoot":"","sources":["../../src/client/rest-client.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAIA,OAAO,EAKL,KAAK,IAAI,EACV,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAIA,OAAO,EAKL,KAAK,IAAI,EACV,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAW1D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,gBAAgB,CAAC,CAAS;gBAEtB,MAAM,CAAC,EAAE,cAAc;IA4BnC,OAAO,CAAC,aAAa;IAmDrB,OAAO,CAAC,aAAa;IA8Bf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAChF,OAAO,CAAC,OAAO,CAAC;IA2InB,OAAO,CAAC,iBAAiB;IAczB,WAAW;;;;;IAQX,kBAAkB,IAAI,MAAM,EAAE;IAI9B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIvC,mBAAmB,IAAI,MAAM,GAAG,SAAS;CAG1C"}
|
package/dist/server.js
CHANGED
|
@@ -11,6 +11,9 @@ const apm_1 = require("./tools/apm");
|
|
|
11
11
|
const entity_1 = require("./tools/entity");
|
|
12
12
|
const nerdgraph_1 = require("./tools/nerdgraph");
|
|
13
13
|
const nrql_1 = require("./tools/nrql");
|
|
14
|
+
const apm_2 = require("./tools/rest/apm");
|
|
15
|
+
const deployments_1 = require("./tools/rest/deployments");
|
|
16
|
+
const metrics_1 = require("./tools/rest/metrics");
|
|
14
17
|
const synthetics_1 = require("./tools/synthetics");
|
|
15
18
|
class NewRelicMCPServer {
|
|
16
19
|
server;
|
|
@@ -47,6 +50,9 @@ class NewRelicMCPServer {
|
|
|
47
50
|
const alertTool = new alert_1.AlertTool(this.client);
|
|
48
51
|
const syntheticsTool = new synthetics_1.SyntheticsTool(this.client);
|
|
49
52
|
const nerdGraphTool = new nerdgraph_1.NerdGraphTool(this.client);
|
|
53
|
+
const restDeployments = new deployments_1.RestDeploymentsTool();
|
|
54
|
+
const restApm = new apm_2.RestApmTool();
|
|
55
|
+
const restMetrics = new metrics_1.RestMetricsTool();
|
|
50
56
|
// Register all tools
|
|
51
57
|
const tools = [
|
|
52
58
|
nrqlTool.getToolDefinition(),
|
|
@@ -59,6 +65,14 @@ class NewRelicMCPServer {
|
|
|
59
65
|
syntheticsTool.getListMonitorsTool(),
|
|
60
66
|
syntheticsTool.getCreateMonitorTool(),
|
|
61
67
|
nerdGraphTool.getQueryTool(),
|
|
68
|
+
// REST v2 tools
|
|
69
|
+
restDeployments.getCreateTool(),
|
|
70
|
+
restDeployments.getListTool(),
|
|
71
|
+
restDeployments.getDeleteTool(),
|
|
72
|
+
restApm.getListApplicationsTool(),
|
|
73
|
+
restMetrics.getListMetricNamesTool(),
|
|
74
|
+
restMetrics.getMetricDataTool(),
|
|
75
|
+
restMetrics.getListApplicationHostsTool(),
|
|
62
76
|
{
|
|
63
77
|
name: 'get_account_details',
|
|
64
78
|
description: 'Get New Relic account details',
|
|
@@ -128,6 +142,20 @@ class NewRelicMCPServer {
|
|
|
128
142
|
...args,
|
|
129
143
|
target_account_id: accountId,
|
|
130
144
|
});
|
|
145
|
+
case 'create_deployment':
|
|
146
|
+
return await new deployments_1.RestDeploymentsTool().create(args);
|
|
147
|
+
case 'list_deployments_rest':
|
|
148
|
+
return await new deployments_1.RestDeploymentsTool().list(args);
|
|
149
|
+
case 'delete_deployment':
|
|
150
|
+
return await new deployments_1.RestDeploymentsTool().delete(args);
|
|
151
|
+
case 'list_apm_applications_rest':
|
|
152
|
+
return await new apm_2.RestApmTool().listApplications(args);
|
|
153
|
+
case 'list_metric_names_for_host':
|
|
154
|
+
return await new metrics_1.RestMetricsTool().listMetricNames(args);
|
|
155
|
+
case 'get_metric_data_for_host':
|
|
156
|
+
return await new metrics_1.RestMetricsTool().getMetricData(args);
|
|
157
|
+
case 'list_application_hosts':
|
|
158
|
+
return await new metrics_1.RestMetricsTool().listApplicationHosts(args);
|
|
131
159
|
case 'get_account_details':
|
|
132
160
|
return await this.client.getAccountDetails(accountId);
|
|
133
161
|
case 'list_alert_policies':
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;AAEA,wEAAmE;AACnE,wEAAiF;AACjF,iEAM4C;AAC5C,8DAA0D;AAC1D,yCAA0C;AAC1C,qCAAsC;AACtC,2CAA4C;AAC5C,iDAAkD;AAClD,uCAAwC;AACxC,mDAAoD;AAEpD,MAAa,iBAAiB;IACpB,MAAM,CAAS;IACf,MAAM,CAAiB;IACvB,KAAK,CAAoB;IACzB,gBAAgB,CAAU;IAElC,YAAY,MAAuB;QACjC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACzD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,gCAAc,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAM,CACtB;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,OAAO;SACjB,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV;SACF,CACF,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,MAAM,QAAQ,GAAG,IAAI,eAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,aAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,mBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,iBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,IAAI,2BAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,IAAI,yBAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { type Region } from '../../client/rest-client';
|
|
3
|
+
type ListPoliciesArgs = {
|
|
4
|
+
filter_name?: string;
|
|
5
|
+
page?: number;
|
|
6
|
+
auto_paginate?: boolean;
|
|
7
|
+
region?: Region;
|
|
8
|
+
};
|
|
9
|
+
type ListIncidentsArgs = {
|
|
10
|
+
page?: number;
|
|
11
|
+
auto_paginate?: boolean;
|
|
12
|
+
only_open?: boolean;
|
|
13
|
+
priority?: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
|
|
14
|
+
region?: Region;
|
|
15
|
+
};
|
|
16
|
+
export declare class RestAlertsTool {
|
|
17
|
+
private restFor;
|
|
18
|
+
getListPoliciesTool(): Tool;
|
|
19
|
+
listPolicies(args: ListPoliciesArgs): Promise<unknown>;
|
|
20
|
+
getListIncidentsTool(): Tool;
|
|
21
|
+
listIncidents(args: ListIncidentsArgs): Promise<unknown>;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=alerts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alerts.d.ts","sourceRoot":"","sources":["../../../src/tools/rest/alerts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAsB,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAE3E,KAAK,gBAAgB,GAAG;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO;IAKf,mBAAmB,IAAI,IAAI;IAgBrB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5D,oBAAoB,IAAI,IAAI;IAiBtB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAwC/D"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RestAlertsTool = void 0;
|
|
4
|
+
const rest_client_1 = require("../../client/rest-client");
|
|
5
|
+
class RestAlertsTool {
|
|
6
|
+
restFor(region) {
|
|
7
|
+
const apiKey = process.env.NEW_RELIC_API_KEY;
|
|
8
|
+
return new rest_client_1.NewRelicRestClient({ apiKey, region: region ?? 'US' });
|
|
9
|
+
}
|
|
10
|
+
getListPoliciesTool() {
|
|
11
|
+
return {
|
|
12
|
+
name: 'list_alert_policies_rest',
|
|
13
|
+
description: 'List alert policies via REST v2.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
filter_name: { type: 'string' },
|
|
18
|
+
page: { type: 'number' },
|
|
19
|
+
auto_paginate: { type: 'boolean' },
|
|
20
|
+
region: { type: 'string', enum: ['US', 'EU'] },
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async listPolicies(args) {
|
|
26
|
+
const client = this.restFor(args.region);
|
|
27
|
+
const path = '/alerts_policies';
|
|
28
|
+
const query = {};
|
|
29
|
+
if (args.filter_name)
|
|
30
|
+
query['filter[name]'] = args.filter_name;
|
|
31
|
+
if (args.page)
|
|
32
|
+
query.page = args.page;
|
|
33
|
+
const res = await client.get(path, query);
|
|
34
|
+
return res;
|
|
35
|
+
}
|
|
36
|
+
getListIncidentsTool() {
|
|
37
|
+
return {
|
|
38
|
+
name: 'list_open_incidents_rest',
|
|
39
|
+
description: 'List alert incidents via REST v2 (client-side filtering of open/priority).',
|
|
40
|
+
inputSchema: {
|
|
41
|
+
type: 'object',
|
|
42
|
+
properties: {
|
|
43
|
+
only_open: { type: 'boolean' },
|
|
44
|
+
priority: { type: 'string', enum: ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW'] },
|
|
45
|
+
page: { type: 'number' },
|
|
46
|
+
auto_paginate: { type: 'boolean' },
|
|
47
|
+
region: { type: 'string', enum: ['US', 'EU'] },
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
async listIncidents(args) {
|
|
53
|
+
const client = this.restFor(args.region);
|
|
54
|
+
const path = '/alerts_incidents';
|
|
55
|
+
const query = {};
|
|
56
|
+
if (args.page)
|
|
57
|
+
query.page = args.page;
|
|
58
|
+
const results = [];
|
|
59
|
+
let nextUrl;
|
|
60
|
+
let page = args.page;
|
|
61
|
+
do {
|
|
62
|
+
const res = await client.get(path, page ? { ...query, page } : query);
|
|
63
|
+
results.push(res.data);
|
|
64
|
+
const next = res.links?.next;
|
|
65
|
+
if (args.auto_paginate && next) {
|
|
66
|
+
const u = new URL(next);
|
|
67
|
+
const p = u.searchParams.get('page');
|
|
68
|
+
page = p ? Number(p) : undefined;
|
|
69
|
+
nextUrl = next;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
nextUrl = undefined;
|
|
73
|
+
}
|
|
74
|
+
} while (args.auto_paginate && nextUrl);
|
|
75
|
+
const combined = args.auto_paginate ? results.flat() : results[0];
|
|
76
|
+
// Apply client-side filters if requested
|
|
77
|
+
let items = combined;
|
|
78
|
+
if (Array.isArray(combined)) {
|
|
79
|
+
items = combined.filter((inc) => {
|
|
80
|
+
let ok = true;
|
|
81
|
+
if (args.only_open === true) {
|
|
82
|
+
ok = ok && (!inc.closed_at || inc.closed_at === 0);
|
|
83
|
+
}
|
|
84
|
+
if (args.priority) {
|
|
85
|
+
ok = ok && inc.priority === args.priority;
|
|
86
|
+
}
|
|
87
|
+
return ok;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return { items, page };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.RestAlertsTool = RestAlertsTool;
|
|
94
|
+
//# sourceMappingURL=alerts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alerts.js","sourceRoot":"","sources":["../../../src/tools/rest/alerts.ts"],"names":[],"mappings":";;;AACA,0DAA2E;AAiB3E,MAAa,cAAc;IACjB,OAAO,CAAC,MAAe;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAA2B,CAAC;QACvD,OAAO,IAAI,gCAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,mBAAmB;QACjB,OAAO;YACL,IAAI,EAAE,0BAA0B;YAChC,WAAW,EAAE,kCAAkC;YAC/C,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAClC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;iBAC/C;aACF;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAsB;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,kBAAkB,CAAC;QAChC,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,WAAW;YAAE,KAAK,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/D,IAAI,IAAI,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAU,IAAI,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,oBAAoB;QAClB,OAAO;YACL,IAAI,EAAE,0BAA0B;YAChC,WAAW,EAAE,4EAA4E;YACzF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;oBACzE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAClC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;iBAC/C;aACF;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAuB;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,mBAAmB,CAAC;QACjC,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEtC,MAAM,OAAO,GAAU,EAAE,CAAC;QAC1B,IAAI,OAA2B,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,GAAG,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAM,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;YAC7B,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACrC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACjC,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,SAAS,CAAC;YACtB,CAAC;QACH,CAAC,QAAQ,IAAI,CAAC,aAAa,IAAI,OAAO,EAAE;QAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClE,yCAAyC;QACzC,IAAI,KAAK,GAAG,QAAQ,CAAC;QACrB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,IAAI,EAAE,GAAG,IAAI,CAAC;gBACd,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;oBAC5B,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;gBACrD,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC;gBAC5C,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;CACF;AAzFD,wCAyFC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { type Region } from '../../client/rest-client';
|
|
3
|
+
type ListApplicationsArgs = {
|
|
4
|
+
filter_name?: string;
|
|
5
|
+
filter_host?: string;
|
|
6
|
+
filter_ids?: number[];
|
|
7
|
+
filter_language?: string;
|
|
8
|
+
page?: number;
|
|
9
|
+
auto_paginate?: boolean;
|
|
10
|
+
region?: Region;
|
|
11
|
+
};
|
|
12
|
+
export declare class RestApmTool {
|
|
13
|
+
private restFor;
|
|
14
|
+
getListApplicationsTool(): Tool;
|
|
15
|
+
listApplications(args: ListApplicationsArgs): Promise<unknown>;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=apm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apm.d.ts","sourceRoot":"","sources":["../../../src/tools/rest/apm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAsB,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAE3E,KAAK,oBAAoB,GAAG;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO;IAKf,uBAAuB,IAAI,IAAI;IAmBzB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;CA8BrE"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RestApmTool = void 0;
|
|
4
|
+
const rest_client_1 = require("../../client/rest-client");
|
|
5
|
+
class RestApmTool {
|
|
6
|
+
restFor(region) {
|
|
7
|
+
const apiKey = process.env.NEW_RELIC_API_KEY;
|
|
8
|
+
return new rest_client_1.NewRelicRestClient({ apiKey, region: region ?? 'US' });
|
|
9
|
+
}
|
|
10
|
+
getListApplicationsTool() {
|
|
11
|
+
return {
|
|
12
|
+
name: 'list_apm_applications_rest',
|
|
13
|
+
description: 'List APM applications via REST v2.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
filter_name: { type: 'string' },
|
|
18
|
+
filter_host: { type: 'string' },
|
|
19
|
+
filter_ids: { type: 'array', items: { type: 'number' } },
|
|
20
|
+
filter_language: { type: 'string' },
|
|
21
|
+
page: { type: 'number' },
|
|
22
|
+
auto_paginate: { type: 'boolean' },
|
|
23
|
+
region: { type: 'string', enum: ['US', 'EU'] },
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async listApplications(args) {
|
|
29
|
+
const client = this.restFor(args.region);
|
|
30
|
+
const path = '/applications';
|
|
31
|
+
const query = {};
|
|
32
|
+
if (args.filter_name)
|
|
33
|
+
query['filter[name]'] = args.filter_name;
|
|
34
|
+
if (args.filter_host)
|
|
35
|
+
query['filter[host]'] = args.filter_host;
|
|
36
|
+
if (args.filter_language)
|
|
37
|
+
query['filter[language]'] = args.filter_language;
|
|
38
|
+
if (args.filter_ids && args.filter_ids.length > 0)
|
|
39
|
+
query['filter[ids]'] = args.filter_ids.join(',');
|
|
40
|
+
if (args.page)
|
|
41
|
+
query.page = args.page;
|
|
42
|
+
const results = [];
|
|
43
|
+
let nextUrl;
|
|
44
|
+
let page = args.page;
|
|
45
|
+
do {
|
|
46
|
+
const res = await client.get(path, page ? { ...query, page } : query);
|
|
47
|
+
results.push(res.data);
|
|
48
|
+
const next = res.links?.next;
|
|
49
|
+
if (args.auto_paginate && next) {
|
|
50
|
+
const u = new URL(next);
|
|
51
|
+
const p = u.searchParams.get('page');
|
|
52
|
+
page = p ? Number(p) : undefined;
|
|
53
|
+
nextUrl = next;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
nextUrl = undefined;
|
|
57
|
+
}
|
|
58
|
+
} while (args.auto_paginate && nextUrl);
|
|
59
|
+
return { items: args.auto_paginate ? results : results[0], page };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.RestApmTool = RestApmTool;
|
|
63
|
+
//# sourceMappingURL=apm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apm.js","sourceRoot":"","sources":["../../../src/tools/rest/apm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { type Region } from '../../client/rest-client';
|
|
3
|
+
type CreateDeploymentArgs = {
|
|
4
|
+
application_id: number;
|
|
5
|
+
revision: string;
|
|
6
|
+
changelog?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
user?: string;
|
|
9
|
+
region?: Region;
|
|
10
|
+
};
|
|
11
|
+
type ListDeploymentsArgs = {
|
|
12
|
+
application_id: number;
|
|
13
|
+
page?: number;
|
|
14
|
+
auto_paginate?: boolean;
|
|
15
|
+
region?: Region;
|
|
16
|
+
};
|
|
17
|
+
type DeleteDeploymentArgs = {
|
|
18
|
+
application_id: number;
|
|
19
|
+
id: number;
|
|
20
|
+
confirm: true;
|
|
21
|
+
region?: Region;
|
|
22
|
+
};
|
|
23
|
+
export declare class RestDeploymentsTool {
|
|
24
|
+
private restFor;
|
|
25
|
+
getCreateTool(): Tool;
|
|
26
|
+
create(args: CreateDeploymentArgs): Promise<unknown>;
|
|
27
|
+
getListTool(): Tool;
|
|
28
|
+
list(args: ListDeploymentsArgs): Promise<unknown>;
|
|
29
|
+
getDeleteTool(): Tool;
|
|
30
|
+
delete(args: DeleteDeploymentArgs): Promise<unknown>;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=deployments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../../src/tools/rest/deployments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAsB,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAE3E,KAAK,oBAAoB,GAAG;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO;IAKf,aAAa,IAAI,IAAI;IAmBf,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAe1D,WAAW,IAAI,IAAI;IAiBb,IAAI,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BvD,aAAa,IAAI,IAAI;IAiBf,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;CAS3D"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RestDeploymentsTool = void 0;
|
|
4
|
+
const rest_client_1 = require("../../client/rest-client");
|
|
5
|
+
class RestDeploymentsTool {
|
|
6
|
+
restFor(region) {
|
|
7
|
+
const apiKey = process.env.NEW_RELIC_API_KEY;
|
|
8
|
+
return new rest_client_1.NewRelicRestClient({ apiKey, region: region ?? 'US' });
|
|
9
|
+
}
|
|
10
|
+
getCreateTool() {
|
|
11
|
+
return {
|
|
12
|
+
name: 'create_deployment',
|
|
13
|
+
description: 'Create a deployment marker for an APM application (REST v2).',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
application_id: { type: 'number' },
|
|
18
|
+
revision: { type: 'string' },
|
|
19
|
+
changelog: { type: 'string' },
|
|
20
|
+
description: { type: 'string' },
|
|
21
|
+
user: { type: 'string' },
|
|
22
|
+
region: { type: 'string', enum: ['US', 'EU'] },
|
|
23
|
+
},
|
|
24
|
+
required: ['application_id', 'revision'],
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async create(args) {
|
|
29
|
+
const client = this.restFor(args.region);
|
|
30
|
+
const path = `/applications/${args.application_id}/deployments`;
|
|
31
|
+
const payload = {
|
|
32
|
+
deployment: {
|
|
33
|
+
revision: args.revision,
|
|
34
|
+
changelog: args.changelog,
|
|
35
|
+
description: args.description,
|
|
36
|
+
user: args.user,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
const res = await client.post(path, payload);
|
|
40
|
+
return { ...res };
|
|
41
|
+
}
|
|
42
|
+
getListTool() {
|
|
43
|
+
return {
|
|
44
|
+
name: 'list_deployments_rest',
|
|
45
|
+
description: 'List deployments for an APM application (REST v2).',
|
|
46
|
+
inputSchema: {
|
|
47
|
+
type: 'object',
|
|
48
|
+
properties: {
|
|
49
|
+
application_id: { type: 'number' },
|
|
50
|
+
page: { type: 'number' },
|
|
51
|
+
auto_paginate: { type: 'boolean' },
|
|
52
|
+
region: { type: 'string', enum: ['US', 'EU'] },
|
|
53
|
+
},
|
|
54
|
+
required: ['application_id'],
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async list(args) {
|
|
59
|
+
const client = this.restFor(args.region);
|
|
60
|
+
const path = `/applications/${args.application_id}/deployments`;
|
|
61
|
+
const results = [];
|
|
62
|
+
let page = args.page;
|
|
63
|
+
let nextUrl;
|
|
64
|
+
do {
|
|
65
|
+
const res = await client.get(path, page ? { page } : undefined);
|
|
66
|
+
results.push(res.data);
|
|
67
|
+
const next = res.links?.next;
|
|
68
|
+
if (args.auto_paginate && next) {
|
|
69
|
+
// Extract page from next URL if present
|
|
70
|
+
const u = new URL(next);
|
|
71
|
+
const p = u.searchParams.get('page');
|
|
72
|
+
page = p ? Number(p) : undefined;
|
|
73
|
+
nextUrl = next;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
nextUrl = undefined;
|
|
77
|
+
}
|
|
78
|
+
} while (args.auto_paginate && nextUrl);
|
|
79
|
+
return {
|
|
80
|
+
items: args.auto_paginate ? results : results[0],
|
|
81
|
+
page: page,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
getDeleteTool() {
|
|
85
|
+
return {
|
|
86
|
+
name: 'delete_deployment',
|
|
87
|
+
description: 'Delete a deployment record (REST v2). Requires admin role permissions.',
|
|
88
|
+
inputSchema: {
|
|
89
|
+
type: 'object',
|
|
90
|
+
properties: {
|
|
91
|
+
application_id: { type: 'number' },
|
|
92
|
+
id: { type: 'number' },
|
|
93
|
+
confirm: { type: 'boolean' },
|
|
94
|
+
region: { type: 'string', enum: ['US', 'EU'] },
|
|
95
|
+
},
|
|
96
|
+
required: ['application_id', 'id', 'confirm'],
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
async delete(args) {
|
|
101
|
+
if (args.confirm !== true) {
|
|
102
|
+
throw new Error('delete_deployment: confirm must be true');
|
|
103
|
+
}
|
|
104
|
+
const client = this.restFor(args.region);
|
|
105
|
+
const path = `/applications/${args.application_id}/deployments/${args.id}`;
|
|
106
|
+
const res = await client.delete(path);
|
|
107
|
+
return { ...res };
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.RestDeploymentsTool = RestDeploymentsTool;
|
|
111
|
+
//# sourceMappingURL=deployments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../../src/tools/rest/deployments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { type Region } from '../../client/rest-client';
|
|
3
|
+
type ListMetricNamesArgs = {
|
|
4
|
+
application_id: number;
|
|
5
|
+
host_id: number;
|
|
6
|
+
name?: string;
|
|
7
|
+
page?: number;
|
|
8
|
+
auto_paginate?: boolean;
|
|
9
|
+
region?: Region;
|
|
10
|
+
};
|
|
11
|
+
type GetMetricDataArgs = {
|
|
12
|
+
application_id: number;
|
|
13
|
+
host_id: number;
|
|
14
|
+
names: string[];
|
|
15
|
+
values?: string[];
|
|
16
|
+
from?: string;
|
|
17
|
+
to?: string;
|
|
18
|
+
period?: number;
|
|
19
|
+
summarize?: boolean;
|
|
20
|
+
page?: number;
|
|
21
|
+
auto_paginate?: boolean;
|
|
22
|
+
region?: Region;
|
|
23
|
+
};
|
|
24
|
+
type ListHostsArgs = {
|
|
25
|
+
application_id: number;
|
|
26
|
+
filter_hostname?: string;
|
|
27
|
+
filter_ids?: string;
|
|
28
|
+
page?: number;
|
|
29
|
+
auto_paginate?: boolean;
|
|
30
|
+
region?: Region;
|
|
31
|
+
};
|
|
32
|
+
export declare class RestMetricsTool {
|
|
33
|
+
private restFor;
|
|
34
|
+
getListMetricNamesTool(): Tool;
|
|
35
|
+
listMetricNames(args: ListMetricNamesArgs): Promise<unknown>;
|
|
36
|
+
getMetricDataTool(): Tool;
|
|
37
|
+
getMetricData(args: GetMetricDataArgs): Promise<unknown>;
|
|
38
|
+
getListApplicationHostsTool(): Tool;
|
|
39
|
+
listApplicationHosts(args: ListHostsArgs): Promise<unknown>;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/tools/rest/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAsB,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAE3E,KAAK,mBAAmB,GAAG;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO;IAKf,sBAAsB,IAAI,IAAI;IAmBxB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBlE,iBAAiB,IAAI,IAAI;IAwBnB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B9D,2BAA2B,IAAI,IAAI;IAmB7B,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;CAUlE"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RestMetricsTool = void 0;
|
|
4
|
+
const rest_client_1 = require("../../client/rest-client");
|
|
5
|
+
class RestMetricsTool {
|
|
6
|
+
restFor(region) {
|
|
7
|
+
const apiKey = process.env.NEW_RELIC_API_KEY;
|
|
8
|
+
return new rest_client_1.NewRelicRestClient({ apiKey, region: region ?? 'US' });
|
|
9
|
+
}
|
|
10
|
+
getListMetricNamesTool() {
|
|
11
|
+
return {
|
|
12
|
+
name: 'list_metric_names_for_host',
|
|
13
|
+
description: 'List metric names and values for a specific application host (REST v2).',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
application_id: { type: 'number' },
|
|
18
|
+
host_id: { type: 'number' },
|
|
19
|
+
name: { type: 'string' },
|
|
20
|
+
page: { type: 'number' },
|
|
21
|
+
auto_paginate: { type: 'boolean' },
|
|
22
|
+
region: { type: 'string', enum: ['US', 'EU'] },
|
|
23
|
+
},
|
|
24
|
+
required: ['application_id', 'host_id'],
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async listMetricNames(args) {
|
|
29
|
+
const client = this.restFor(args.region);
|
|
30
|
+
const path = `/applications/${args.application_id}/hosts/${args.host_id}/metrics`;
|
|
31
|
+
const query = {};
|
|
32
|
+
if (args.name)
|
|
33
|
+
query.name = args.name;
|
|
34
|
+
if (args.page)
|
|
35
|
+
query.page = args.page;
|
|
36
|
+
const results = [];
|
|
37
|
+
let nextUrl;
|
|
38
|
+
let page = args.page;
|
|
39
|
+
do {
|
|
40
|
+
const res = await client.get(path, page ? { ...query, page } : query);
|
|
41
|
+
results.push(res.data);
|
|
42
|
+
const next = res.links?.next;
|
|
43
|
+
if (args.auto_paginate && next) {
|
|
44
|
+
const u = new URL(next);
|
|
45
|
+
const p = u.searchParams.get('page');
|
|
46
|
+
page = p ? Number(p) : undefined;
|
|
47
|
+
nextUrl = next;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
nextUrl = undefined;
|
|
51
|
+
}
|
|
52
|
+
} while (args.auto_paginate && nextUrl);
|
|
53
|
+
return { items: args.auto_paginate ? results : results[0], page };
|
|
54
|
+
}
|
|
55
|
+
getMetricDataTool() {
|
|
56
|
+
return {
|
|
57
|
+
name: 'get_metric_data_for_host',
|
|
58
|
+
description: 'Get metric timeslices for metrics on a host (REST v2).',
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {
|
|
62
|
+
application_id: { type: 'number' },
|
|
63
|
+
host_id: { type: 'number' },
|
|
64
|
+
names: { type: 'array', items: { type: 'string' } },
|
|
65
|
+
values: { type: 'array', items: { type: 'string' } },
|
|
66
|
+
from: { type: 'string' },
|
|
67
|
+
to: { type: 'string' },
|
|
68
|
+
period: { type: 'number' },
|
|
69
|
+
summarize: { type: 'boolean' },
|
|
70
|
+
page: { type: 'number' },
|
|
71
|
+
auto_paginate: { type: 'boolean' },
|
|
72
|
+
region: { type: 'string', enum: ['US', 'EU'] },
|
|
73
|
+
},
|
|
74
|
+
required: ['application_id', 'host_id', 'names'],
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
async getMetricData(args) {
|
|
79
|
+
const client = this.restFor(args.region);
|
|
80
|
+
const path = `/applications/${args.application_id}/hosts/${args.host_id}/metrics/data`;
|
|
81
|
+
const query = { names: args.names, values: args.values };
|
|
82
|
+
if (args.from)
|
|
83
|
+
query.from = args.from;
|
|
84
|
+
if (args.to)
|
|
85
|
+
query.to = args.to;
|
|
86
|
+
if (args.period)
|
|
87
|
+
query.period = args.period;
|
|
88
|
+
if (args.summarize !== undefined)
|
|
89
|
+
query.summarize = args.summarize;
|
|
90
|
+
if (args.page)
|
|
91
|
+
query.page = args.page;
|
|
92
|
+
const results = [];
|
|
93
|
+
let nextUrl;
|
|
94
|
+
let page = args.page;
|
|
95
|
+
do {
|
|
96
|
+
const res = await client.get(path, page ? { ...query, page } : query);
|
|
97
|
+
results.push(res.data);
|
|
98
|
+
const next = res.links?.next;
|
|
99
|
+
if (args.auto_paginate && next) {
|
|
100
|
+
const u = new URL(next);
|
|
101
|
+
const p = u.searchParams.get('page');
|
|
102
|
+
page = p ? Number(p) : undefined;
|
|
103
|
+
nextUrl = next;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
nextUrl = undefined;
|
|
107
|
+
}
|
|
108
|
+
} while (args.auto_paginate && nextUrl);
|
|
109
|
+
return { items: args.auto_paginate ? results : results[0], page };
|
|
110
|
+
}
|
|
111
|
+
getListApplicationHostsTool() {
|
|
112
|
+
return {
|
|
113
|
+
name: 'list_application_hosts',
|
|
114
|
+
description: 'List hosts for an APM application (REST v2).',
|
|
115
|
+
inputSchema: {
|
|
116
|
+
type: 'object',
|
|
117
|
+
properties: {
|
|
118
|
+
application_id: { type: 'number' },
|
|
119
|
+
filter_hostname: { type: 'string' },
|
|
120
|
+
filter_ids: { type: 'string' },
|
|
121
|
+
page: { type: 'number' },
|
|
122
|
+
auto_paginate: { type: 'boolean' },
|
|
123
|
+
region: { type: 'string', enum: ['US', 'EU'] },
|
|
124
|
+
},
|
|
125
|
+
required: ['application_id'],
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
async listApplicationHosts(args) {
|
|
130
|
+
const client = this.restFor(args.region);
|
|
131
|
+
const path = `/applications/${args.application_id}/hosts`;
|
|
132
|
+
const query = {};
|
|
133
|
+
if (args.filter_hostname)
|
|
134
|
+
query['filter[hostname]'] = args.filter_hostname;
|
|
135
|
+
if (args.filter_ids)
|
|
136
|
+
query['filter[ids]'] = args.filter_ids;
|
|
137
|
+
if (args.page)
|
|
138
|
+
query.page = args.page;
|
|
139
|
+
const res = await client.get(path, query);
|
|
140
|
+
return res;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.RestMetricsTool = RestMetricsTool;
|
|
144
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/tools/rest/metrics.ts"],"names":[],"mappings":"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"}
|