@sfdxy/anypoint-connect 0.14.0 → 0.16.2
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 +39 -16
- package/dist/analysis/LogAnalyzer.d.ts +10 -4
- package/dist/analysis/LogAnalyzer.d.ts.map +1 -1
- package/dist/analysis/LogAnalyzer.js +29 -18
- package/dist/analysis/LogAnalyzer.js.map +1 -1
- package/dist/analysis/error-context.d.ts +2 -0
- package/dist/analysis/error-context.d.ts.map +1 -1
- package/dist/analysis/error-context.js +2 -1
- package/dist/analysis/error-context.js.map +1 -1
- package/dist/analysis/error-grouper.js +1 -1
- package/dist/analysis/error-grouper.js.map +1 -1
- package/dist/analysis/filter.d.ts +54 -0
- package/dist/analysis/filter.d.ts.map +1 -0
- package/dist/analysis/filter.js +100 -0
- package/dist/analysis/filter.js.map +1 -0
- package/dist/analysis/{utils.d.ts → normalize.d.ts} +1 -1
- package/dist/analysis/normalize.d.ts.map +1 -0
- package/dist/analysis/{utils.js → normalize.js} +2 -2
- package/dist/analysis/normalize.js.map +1 -0
- package/dist/analysis/parser.d.ts.map +1 -1
- package/dist/analysis/parser.js +45 -17
- package/dist/analysis/parser.js.map +1 -1
- package/dist/analysis/pattern-detector.js +1 -1
- package/dist/analysis/pattern-detector.js.map +1 -1
- package/dist/analysis/stats.d.ts +25 -0
- package/dist/analysis/stats.d.ts.map +1 -1
- package/dist/analysis/stats.js +35 -1
- package/dist/analysis/stats.js.map +1 -1
- package/dist/analysis/summary.d.ts +51 -0
- package/dist/analysis/summary.d.ts.map +1 -0
- package/dist/analysis/summary.js +47 -0
- package/dist/analysis/summary.js.map +1 -0
- package/dist/analysis/types.d.ts +14 -0
- package/dist/analysis/types.d.ts.map +1 -1
- package/dist/api/ApiManagerApi.d.ts +53 -0
- package/dist/api/ApiManagerApi.d.ts.map +1 -1
- package/dist/api/ApiManagerApi.js +53 -2
- package/dist/api/ApiManagerApi.js.map +1 -1
- package/dist/api/CloudHub2Api.d.ts +24 -4
- package/dist/api/CloudHub2Api.d.ts.map +1 -1
- package/dist/api/CloudHub2Api.js +10 -22
- package/dist/api/CloudHub2Api.js.map +1 -1
- package/dist/api/DesignCenterApi.d.ts +0 -20
- package/dist/api/DesignCenterApi.d.ts.map +1 -1
- package/dist/api/DesignCenterApi.js +0 -22
- package/dist/api/DesignCenterApi.js.map +1 -1
- package/dist/api/ExchangeApi.d.ts +15 -0
- package/dist/api/ExchangeApi.d.ts.map +1 -1
- package/dist/api/ExchangeApi.js +51 -0
- package/dist/api/ExchangeApi.js.map +1 -1
- package/dist/api/LogsApi.d.ts +50 -18
- package/dist/api/LogsApi.d.ts.map +1 -1
- package/dist/api/LogsApi.js +69 -98
- package/dist/api/LogsApi.js.map +1 -1
- package/dist/api/MonitoringApi.d.ts +137 -93
- package/dist/api/MonitoringApi.d.ts.map +1 -1
- package/dist/api/MonitoringApi.js +471 -204
- package/dist/api/MonitoringApi.js.map +1 -1
- package/dist/api/RuntimesApi.d.ts +56 -0
- package/dist/api/RuntimesApi.d.ts.map +1 -0
- package/dist/api/RuntimesApi.js +58 -0
- package/dist/api/RuntimesApi.js.map +1 -0
- package/dist/auth/FileStore.js +1 -1
- package/dist/auth/FileStore.js.map +1 -1
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/client/AnypointClient.d.ts +3 -1
- package/dist/client/AnypointClient.d.ts.map +1 -1
- package/dist/client/AnypointClient.js +5 -2
- package/dist/client/AnypointClient.js.map +1 -1
- package/dist/client/smoke-test.d.ts +111 -0
- package/dist/client/smoke-test.d.ts.map +1 -0
- package/dist/client/smoke-test.js +275 -0
- package/dist/client/smoke-test.js.map +1 -0
- package/dist/commands/api.d.ts +1 -1
- package/dist/commands/api.d.ts.map +1 -1
- package/dist/commands/api.js +175 -30
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/app-change-cli.d.ts +52 -0
- package/dist/commands/app-change-cli.d.ts.map +1 -0
- package/dist/commands/app-change-cli.js +149 -0
- package/dist/commands/app-change-cli.js.map +1 -0
- package/dist/commands/apps.d.ts +1 -1
- package/dist/commands/apps.d.ts.map +1 -1
- package/dist/commands/apps.js +199 -18
- package/dist/commands/apps.js.map +1 -1
- package/dist/commands/auth.js +1 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/compare.d.ts +8 -0
- package/dist/commands/compare.d.ts.map +1 -0
- package/dist/commands/compare.js +104 -0
- package/dist/commands/compare.js.map +1 -0
- package/dist/commands/config.js +1 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/deploy.d.ts +6 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +89 -91
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/design-center.d.ts +1 -1
- package/dist/commands/design-center.d.ts.map +1 -1
- package/dist/commands/design-center.js +36 -25
- package/dist/commands/design-center.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/logs.d.ts +3 -2
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +142 -17
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/monitor.d.ts +5 -6
- package/dist/commands/monitor.d.ts.map +1 -1
- package/dist/commands/monitor.js +210 -230
- package/dist/commands/monitor.js.map +1 -1
- package/dist/commands/runtimes.d.ts +7 -0
- package/dist/commands/runtimes.d.ts.map +1 -0
- package/dist/commands/runtimes.js +66 -0
- package/dist/commands/runtimes.js.map +1 -0
- package/dist/commands/shared.d.ts +2 -0
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +16 -1
- package/dist/commands/shared.js.map +1 -1
- package/dist/{utils/config.d.ts → config/profiles.d.ts} +9 -1
- package/dist/config/profiles.d.ts.map +1 -0
- package/dist/{utils/config.js → config/profiles.js} +1 -1
- package/dist/config/profiles.js.map +1 -0
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp/prompts.js +7 -7
- package/dist/mcp/prompts.js.map +1 -1
- package/dist/mcp/server.d.ts +14 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +61 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/analysis.d.ts.map +1 -1
- package/dist/mcp/tools/analysis.js +74 -46
- package/dist/mcp/tools/analysis.js.map +1 -1
- package/dist/mcp/tools/anypoint-mq.d.ts.map +1 -1
- package/dist/mcp/tools/anypoint-mq.js +25 -54
- package/dist/mcp/tools/anypoint-mq.js.map +1 -1
- package/dist/mcp/tools/api-manager.d.ts +2 -1
- package/dist/mcp/tools/api-manager.d.ts.map +1 -1
- package/dist/mcp/tools/api-manager.js +154 -89
- package/dist/mcp/tools/api-manager.js.map +1 -1
- package/dist/mcp/tools/app-inputs.d.ts +92 -0
- package/dist/mcp/tools/app-inputs.d.ts.map +1 -0
- package/dist/mcp/tools/app-inputs.js +142 -0
- package/dist/mcp/tools/app-inputs.js.map +1 -0
- package/dist/mcp/tools/apps-deploy.d.ts +13 -0
- package/dist/mcp/tools/apps-deploy.d.ts.map +1 -0
- package/dist/mcp/tools/apps-deploy.js +358 -0
- package/dist/mcp/tools/apps-deploy.js.map +1 -0
- package/dist/mcp/tools/apps-lifecycle.d.ts +11 -0
- package/dist/mcp/tools/apps-lifecycle.d.ts.map +1 -0
- package/dist/mcp/tools/apps-lifecycle.js +244 -0
- package/dist/mcp/tools/apps-lifecycle.js.map +1 -0
- package/dist/mcp/tools/apps-read.d.ts +9 -0
- package/dist/mcp/tools/apps-read.d.ts.map +1 -0
- package/dist/mcp/tools/apps-read.js +414 -0
- package/dist/mcp/tools/apps-read.js.map +1 -0
- package/dist/mcp/tools/artifacts.d.ts +8 -0
- package/dist/mcp/tools/artifacts.d.ts.map +1 -0
- package/dist/mcp/tools/artifacts.js +81 -0
- package/dist/mcp/tools/artifacts.js.map +1 -0
- package/dist/mcp/tools/audit.d.ts.map +1 -1
- package/dist/mcp/tools/audit.js +9 -17
- package/dist/mcp/tools/audit.js.map +1 -1
- package/dist/mcp/tools/design-center.d.ts +2 -3
- package/dist/mcp/tools/design-center.d.ts.map +1 -1
- package/dist/mcp/tools/design-center.js +41 -185
- package/dist/mcp/tools/design-center.js.map +1 -1
- package/dist/mcp/tools/exchange.d.ts +1 -2
- package/dist/mcp/tools/exchange.d.ts.map +1 -1
- package/dist/mcp/tools/exchange.js +51 -312
- package/dist/mcp/tools/exchange.js.map +1 -1
- package/dist/mcp/tools/governance.d.ts +8 -0
- package/dist/mcp/tools/governance.d.ts.map +1 -0
- package/dist/mcp/tools/governance.js +59 -0
- package/dist/mcp/tools/governance.js.map +1 -0
- package/dist/mcp/tools/identity.d.ts.map +1 -1
- package/dist/mcp/tools/identity.js +15 -36
- package/dist/mcp/tools/identity.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +5 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +5 -1
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/logs.d.ts +48 -2
- package/dist/mcp/tools/logs.d.ts.map +1 -1
- package/dist/mcp/tools/logs.js +204 -54
- package/dist/mcp/tools/logs.js.map +1 -1
- package/dist/mcp/tools/monitoring.d.ts +1 -2
- package/dist/mcp/tools/monitoring.d.ts.map +1 -1
- package/dist/mcp/tools/monitoring.js +78 -285
- package/dist/mcp/tools/monitoring.js.map +1 -1
- package/dist/mcp/tools/object-store.d.ts +1 -1
- package/dist/mcp/tools/object-store.d.ts.map +1 -1
- package/dist/mcp/tools/object-store.js +19 -59
- package/dist/mcp/tools/object-store.js.map +1 -1
- package/dist/mcp/tools/profile.d.ts.map +1 -1
- package/dist/mcp/tools/profile.js +15 -35
- package/dist/mcp/tools/profile.js.map +1 -1
- package/dist/mcp/tools/shared.d.ts +43 -0
- package/dist/mcp/tools/shared.d.ts.map +1 -1
- package/dist/mcp/tools/shared.js +54 -0
- package/dist/mcp/tools/shared.js.map +1 -1
- package/dist/mcp.d.ts +3 -11
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +4 -56
- package/dist/mcp.js.map +1 -1
- package/dist/safety/deployment.d.ts +47 -2
- package/dist/safety/deployment.d.ts.map +1 -1
- package/dist/safety/deployment.js +139 -6
- package/dist/safety/deployment.js.map +1 -1
- package/dist/safety/guards.d.ts +2 -2
- package/dist/safety/guards.d.ts.map +1 -1
- package/dist/safety/guards.js +4 -4
- package/dist/safety/guards.js.map +1 -1
- package/dist/safety/paths.d.ts +29 -0
- package/dist/safety/paths.d.ts.map +1 -0
- package/dist/safety/paths.js +76 -0
- package/dist/safety/paths.js.map +1 -0
- package/dist/safety/runtime.d.ts +24 -0
- package/dist/safety/runtime.d.ts.map +1 -0
- package/dist/safety/runtime.js +59 -0
- package/dist/safety/runtime.js.map +1 -0
- package/dist/safety/secret-sources.d.ts +51 -0
- package/dist/safety/secret-sources.d.ts.map +1 -0
- package/dist/safety/secret-sources.js +124 -0
- package/dist/safety/secret-sources.js.map +1 -0
- package/dist/safety/secrets.d.ts +32 -0
- package/dist/safety/secrets.d.ts.map +1 -0
- package/dist/safety/secrets.js +91 -0
- package/dist/safety/secrets.js.map +1 -0
- package/dist/utils/errors.d.ts +14 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +31 -3
- package/dist/utils/errors.js.map +1 -1
- package/dist/workflows/app-change.d.ts +124 -0
- package/dist/workflows/app-change.d.ts.map +1 -0
- package/dist/workflows/app-change.js +305 -0
- package/dist/workflows/app-change.js.map +1 -0
- package/dist/workflows/app-state.d.ts +60 -0
- package/dist/workflows/app-state.d.ts.map +1 -0
- package/dist/workflows/app-state.js +95 -0
- package/dist/workflows/app-state.js.map +1 -0
- package/dist/workflows/artifact-compare.d.ts +134 -0
- package/dist/workflows/artifact-compare.d.ts.map +1 -0
- package/dist/workflows/artifact-compare.js +419 -0
- package/dist/workflows/artifact-compare.js.map +1 -0
- package/dist/workflows/asset-naming.d.ts +72 -0
- package/dist/workflows/asset-naming.d.ts.map +1 -0
- package/dist/workflows/asset-naming.js +116 -0
- package/dist/workflows/asset-naming.js.map +1 -0
- package/dist/{api/DesignCenterWorkflow.d.ts → workflows/design-center.d.ts} +4 -4
- package/dist/workflows/design-center.d.ts.map +1 -0
- package/dist/{api/DesignCenterWorkflow.js → workflows/design-center.js} +1 -1
- package/dist/workflows/design-center.js.map +1 -0
- package/dist/workflows/jar-deployment.d.ts +156 -0
- package/dist/workflows/jar-deployment.d.ts.map +1 -0
- package/dist/workflows/jar-deployment.js +178 -0
- package/dist/workflows/jar-deployment.js.map +1 -0
- package/package.json +12 -4
- package/dist/analysis/utils.d.ts.map +0 -1
- package/dist/analysis/utils.js.map +0 -1
- package/dist/api/DesignCenterWorkflow.d.ts.map +0 -1
- package/dist/api/DesignCenterWorkflow.js.map +0 -1
- package/dist/api/index.d.ts +0 -13
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -13
- package/dist/api/index.js.map +0 -1
- package/dist/mcp/tools/applications.d.ts +0 -4
- package/dist/mcp/tools/applications.d.ts.map +0 -1
- package/dist/mcp/tools/applications.js +0 -815
- package/dist/mcp/tools/applications.js.map +0 -1
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js.map +0 -1
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* analyze_errors, get_log_patterns, get_log_stats
|
|
4
4
|
*/
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
-
import { analyzeLogs } from '../../analysis/LogAnalyzer.js';
|
|
7
|
-
import { mcpError } from './shared.js';
|
|
6
|
+
import { analyzeLogs, topCounts } from '../../analysis/LogAnalyzer.js';
|
|
7
|
+
import { mcpError, mcpText } from './shared.js';
|
|
8
|
+
import { fetchLogText, logFilterInputs, sourceNotice } from './logs.js';
|
|
8
9
|
/**
|
|
9
10
|
* Format an ErrorWithContext into a readable string for the LLM.
|
|
10
11
|
*/
|
|
@@ -41,39 +42,63 @@ function formatEntry(e) {
|
|
|
41
42
|
const elapsed = e.elapsed !== undefined ? ` (${e.elapsed}ms)` : '';
|
|
42
43
|
return ` ${ts} ${e.priority.padEnd(5)} ${e.message || ''}${flow}${elapsed}`;
|
|
43
44
|
}
|
|
45
|
+
const hoursBackInput = z
|
|
46
|
+
.number()
|
|
47
|
+
.positive()
|
|
48
|
+
.optional()
|
|
49
|
+
.describe('How many hours of logs to analyze (default: all available)');
|
|
50
|
+
/** Describe the active filters for a heading, e.g. ` (last 2h, logger "TokenCache")`. */
|
|
51
|
+
function filterLabel(input) {
|
|
52
|
+
const parts = [];
|
|
53
|
+
if (input.hoursBack)
|
|
54
|
+
parts.push(`last ${input.hoursBack}h`);
|
|
55
|
+
if (input.level)
|
|
56
|
+
parts.push(`level >= ${input.level.toUpperCase()}`);
|
|
57
|
+
if (input.logger)
|
|
58
|
+
parts.push(`logger "${input.logger}"`);
|
|
59
|
+
if (input.search)
|
|
60
|
+
parts.push(`matching "${input.search}"`);
|
|
61
|
+
return parts.length > 0 ? ` (${parts.join(', ')})` : '';
|
|
62
|
+
}
|
|
63
|
+
/** Prepend the fallback-spec notice, when there is one. */
|
|
64
|
+
function withNotice(text, notice) {
|
|
65
|
+
return notice ? `> ${notice}\n\n${text}` : text;
|
|
66
|
+
}
|
|
44
67
|
export function registerAnalysisTools(server, client) {
|
|
45
68
|
// ── analyze_errors ───────────────────────────────────
|
|
46
69
|
server.registerTool('analyze_errors', {
|
|
47
70
|
title: 'Analyze Application Errors',
|
|
48
|
-
description: "Analyzes error patterns in a Mule application's logs. Groups similar errors, shows occurrence counts, affected flows, and provides full context (what happened before and after each error). Use this to diagnose why an app is failing
|
|
71
|
+
description: "Analyzes error patterns in a Mule application's logs. Groups similar errors, shows occurrence counts, affected flows, and provides full context (what happened before and after each error). Use this to diagnose why an app is failing: it shows the causal chain leading to each error type. Narrow the errors analyzed with level, logger and search; the context lines around each error are not filtered.",
|
|
49
72
|
inputSchema: {
|
|
50
73
|
appName: z.string().describe('Application name exactly as deployed'),
|
|
51
74
|
environment: z.string().describe('Environment name or ID'),
|
|
52
|
-
hoursBack:
|
|
75
|
+
hoursBack: hoursBackInput,
|
|
53
76
|
limit: z.number().optional().describe('Maximum number of error groups to return (default: 10)'),
|
|
77
|
+
...logFilterInputs,
|
|
78
|
+
level: z
|
|
79
|
+
.string()
|
|
80
|
+
.optional()
|
|
81
|
+
.describe('Minimum level analyzed as an error (default ERROR). WARN also groups warnings.'),
|
|
54
82
|
},
|
|
55
83
|
annotations: { readOnlyHint: true },
|
|
56
|
-
}, async ({ appName, environment, hoursBack, limit }) => {
|
|
84
|
+
}, async ({ appName, environment, hoursBack, limit, level, search, regex, logger }) => {
|
|
57
85
|
try {
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
const rawText = await client.logs.getRawText(orgId, env.id, appName);
|
|
61
|
-
const result = analyzeLogs(rawText, {
|
|
86
|
+
const { env, text, source } = await fetchLogText(client, appName, environment);
|
|
87
|
+
const result = analyzeLogs(text, {
|
|
62
88
|
hoursBack,
|
|
89
|
+
errorLevel: level,
|
|
90
|
+
search,
|
|
91
|
+
regex,
|
|
92
|
+
logger,
|
|
63
93
|
maxErrorGroups: limit || 10,
|
|
64
94
|
});
|
|
95
|
+
const label = filterLabel({ hoursBack, logger, search });
|
|
96
|
+
const notice = sourceNotice(source);
|
|
65
97
|
if (result.errorGroups.length === 0) {
|
|
66
|
-
return {
|
|
67
|
-
content: [
|
|
68
|
-
{
|
|
69
|
-
type: 'text',
|
|
70
|
-
text: `No errors found in ${appName} logs${hoursBack ? ` for the last ${hoursBack} hours` : ''}.`,
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
};
|
|
98
|
+
return mcpText(withNotice(`No errors found in ${appName} logs${label}.`, notice));
|
|
74
99
|
}
|
|
75
100
|
const sections = [];
|
|
76
|
-
sections.push(`## Error Analysis for ${appName} in ${env.name}`, `Total: ${result.
|
|
101
|
+
sections.push(`## Error Analysis for ${appName} in ${env.name}${label}`, `Total: ${result.errorContexts.length} errors (${result.stats.errorRate}% error rate)`, `Time range: ${result.stats.timeRange.start} → ${result.stats.timeRange.end}`, '');
|
|
77
102
|
for (const group of result.errorGroups) {
|
|
78
103
|
sections.push(`### ${group.errorType} — ${group.count} occurrences`, `Pattern: ${group.template}`, `First: ${group.firstSeen} | Last: ${group.lastSeen}`, `Affected flows: ${group.affectedFlows.join(', ') || 'unknown'}`, '');
|
|
79
104
|
for (let i = 0; i < group.samples.length; i++) {
|
|
@@ -82,9 +107,7 @@ export function registerAnalysisTools(server, client) {
|
|
|
82
107
|
sections.push('');
|
|
83
108
|
}
|
|
84
109
|
}
|
|
85
|
-
return
|
|
86
|
-
content: [{ type: 'text', text: sections.join('\n') }],
|
|
87
|
-
};
|
|
110
|
+
return mcpText(withNotice(sections.join('\n'), notice));
|
|
88
111
|
}
|
|
89
112
|
catch (error) {
|
|
90
113
|
return mcpError(error);
|
|
@@ -93,36 +116,37 @@ export function registerAnalysisTools(server, client) {
|
|
|
93
116
|
// ── get_log_patterns ─────────────────────────────────
|
|
94
117
|
server.registerTool('get_log_patterns', {
|
|
95
118
|
title: 'Get Log Message Patterns',
|
|
96
|
-
description: 'Identifies the most common recurring log message patterns in an application. Shows what the app is doing at a glance
|
|
119
|
+
description: 'Identifies the most common recurring log message patterns in an application. Shows what the app is doing at a glance: which flows are active, how often certain operations run, and what percentage of log volume each pattern accounts for. HTTP listener noise is filtered out. Narrow with level, logger and search.',
|
|
97
120
|
inputSchema: {
|
|
98
121
|
appName: z.string().describe('Application name exactly as deployed'),
|
|
99
122
|
environment: z.string().describe('Environment name or ID'),
|
|
100
|
-
hoursBack:
|
|
123
|
+
hoursBack: hoursBackInput,
|
|
101
124
|
topN: z.number().optional().describe('Number of top patterns to return (default: 15)'),
|
|
125
|
+
...logFilterInputs,
|
|
102
126
|
},
|
|
103
127
|
annotations: { readOnlyHint: true },
|
|
104
|
-
}, async ({ appName, environment, hoursBack, topN }) => {
|
|
128
|
+
}, async ({ appName, environment, hoursBack, topN, level, search, regex, logger }) => {
|
|
105
129
|
try {
|
|
106
|
-
const
|
|
107
|
-
const
|
|
108
|
-
const rawText = await client.logs.getRawText(orgId, env.id, appName);
|
|
109
|
-
const result = analyzeLogs(rawText, {
|
|
130
|
+
const { env, text, source } = await fetchLogText(client, appName, environment);
|
|
131
|
+
const result = analyzeLogs(text, {
|
|
110
132
|
hoursBack,
|
|
133
|
+
level,
|
|
134
|
+
search,
|
|
135
|
+
regex,
|
|
136
|
+
logger,
|
|
111
137
|
maxPatterns: topN || 15,
|
|
112
138
|
});
|
|
113
139
|
const lines = [
|
|
114
|
-
`## Log Patterns for ${appName} in ${env.name}`,
|
|
140
|
+
`## Log Patterns for ${appName} in ${env.name}${filterLabel({ hoursBack, level, logger, search })}`,
|
|
115
141
|
`${result.stats.totalEntries} entries analyzed (${result.stats.noisePercentage}% HTTP noise filtered)`,
|
|
116
142
|
'',
|
|
117
|
-
'| # | Level | Count | % | Pattern |',
|
|
118
|
-
'
|
|
143
|
+
'| # | Level | Count | % | Logger | Pattern |',
|
|
144
|
+
'|---|-------|-------|---|--------|---------|',
|
|
119
145
|
];
|
|
120
146
|
result.patterns.forEach((p, i) => {
|
|
121
|
-
lines.push(`| ${i + 1} | ${p.level} | ${p.count} | ${p.percentage}% | ${p.template} |`);
|
|
147
|
+
lines.push(`| ${i + 1} | ${p.level} | ${p.count} | ${p.percentage}% | ${p.loggerName ?? ''} | ${p.template} |`);
|
|
122
148
|
});
|
|
123
|
-
return
|
|
124
|
-
content: [{ type: 'text', text: lines.join('\n') }],
|
|
125
|
-
};
|
|
149
|
+
return mcpText(withNotice(lines.join('\n'), sourceNotice(source)));
|
|
126
150
|
}
|
|
127
151
|
catch (error) {
|
|
128
152
|
return mcpError(error);
|
|
@@ -131,22 +155,21 @@ export function registerAnalysisTools(server, client) {
|
|
|
131
155
|
// ── get_log_stats ────────────────────────────────────
|
|
132
156
|
server.registerTool('get_log_stats', {
|
|
133
157
|
title: 'Get Log Statistics',
|
|
134
|
-
description: "Returns a statistical health summary of an application's logs: level distribution, error rate, error spikes (time windows with elevated errors), noise percentage, and unique transaction count. Use this for quick health checks without reading individual log lines.",
|
|
158
|
+
description: "Returns a statistical health summary of an application's logs: level distribution, top loggers, error rate, error spikes (time windows with elevated errors), noise percentage, and unique transaction count. Use this for quick health checks without reading individual log lines. Narrow with level, logger and search.",
|
|
135
159
|
inputSchema: {
|
|
136
160
|
appName: z.string().describe('Application name exactly as deployed'),
|
|
137
161
|
environment: z.string().describe('Environment name or ID'),
|
|
138
|
-
hoursBack:
|
|
162
|
+
hoursBack: hoursBackInput,
|
|
163
|
+
...logFilterInputs,
|
|
139
164
|
},
|
|
140
165
|
annotations: { readOnlyHint: true },
|
|
141
|
-
}, async ({ appName, environment, hoursBack }) => {
|
|
166
|
+
}, async ({ appName, environment, hoursBack, level, search, regex, logger }) => {
|
|
142
167
|
try {
|
|
143
|
-
const
|
|
144
|
-
const
|
|
145
|
-
const rawText = await client.logs.getRawText(orgId, env.id, appName);
|
|
146
|
-
const result = analyzeLogs(rawText, { hoursBack });
|
|
168
|
+
const { env, text, source } = await fetchLogText(client, appName, environment);
|
|
169
|
+
const result = analyzeLogs(text, { hoursBack, level, search, regex, logger });
|
|
147
170
|
const s = result.stats;
|
|
148
171
|
const lines = [
|
|
149
|
-
`## Log Stats for ${appName} in ${env.name}`,
|
|
172
|
+
`## Log Stats for ${appName} in ${env.name}${filterLabel({ hoursBack, level, logger, search })}`,
|
|
150
173
|
'',
|
|
151
174
|
`**Volume:** ${s.totalEntries} entries from ${s.totalLines} raw lines`,
|
|
152
175
|
`**Time range:** ${s.timeRange.start} → ${s.timeRange.end}`,
|
|
@@ -160,6 +183,13 @@ export function registerAnalysisTools(server, client) {
|
|
|
160
183
|
'',
|
|
161
184
|
`**Error rate:** ${s.errorRate}%`,
|
|
162
185
|
];
|
|
186
|
+
const loggers = topCounts(s.byLogger, 10);
|
|
187
|
+
if (loggers.length > 0) {
|
|
188
|
+
lines.push('', '### Top Loggers');
|
|
189
|
+
for (const { name, count } of loggers) {
|
|
190
|
+
lines.push(`- ${name}: ${count}`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
163
193
|
if (s.errorSpikes.length > 0) {
|
|
164
194
|
lines.push('', '### Error Spikes (above-average windows)');
|
|
165
195
|
for (const spike of s.errorSpikes) {
|
|
@@ -172,9 +202,7 @@ export function registerAnalysisTools(server, client) {
|
|
|
172
202
|
lines.push(`- **${eg.errorType}**: ${eg.count}× — ${eg.template}`);
|
|
173
203
|
}
|
|
174
204
|
}
|
|
175
|
-
return
|
|
176
|
-
content: [{ type: 'text', text: lines.join('\n') }],
|
|
177
|
-
};
|
|
205
|
+
return mcpText(withNotice(lines.join('\n'), sourceNotice(source)));
|
|
178
206
|
}
|
|
179
207
|
catch (error) {
|
|
180
208
|
return mcpError(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/mcp/tools/analysis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/mcp/tools/analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anypoint-mq.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/anypoint-mq.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"anypoint-mq.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/anypoint-mq.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,QA0IhF"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* list_queues, get_queue_stats, get_dlq_messages
|
|
4
4
|
*/
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
-
import { mcpError } from './shared.js';
|
|
6
|
+
import { mcpError, mcpText, resolveEnvironment } from './shared.js';
|
|
7
7
|
export function registerAnypointMQTools(server, client) {
|
|
8
8
|
server.registerTool('list_queues', {
|
|
9
9
|
title: 'List Anypoint MQ Destinations',
|
|
@@ -17,17 +17,9 @@ export function registerAnypointMQTools(server, client) {
|
|
|
17
17
|
annotations: { readOnlyHint: true },
|
|
18
18
|
}, async ({ environment, region }) => {
|
|
19
19
|
try {
|
|
20
|
-
const orgId = await client
|
|
21
|
-
const env = await client.accessManagement.resolveEnvironment(orgId, environment);
|
|
20
|
+
const { orgId, env } = await resolveEnvironment(client, environment);
|
|
22
21
|
const destinations = await client.anypointMQ.listDestinations(orgId, env.id, region);
|
|
23
|
-
return {
|
|
24
|
-
content: [
|
|
25
|
-
{
|
|
26
|
-
type: 'text',
|
|
27
|
-
text: JSON.stringify({ environment: env.name, region, destinations }, null, 2),
|
|
28
|
-
},
|
|
29
|
-
],
|
|
30
|
-
};
|
|
22
|
+
return mcpText({ environment: env.name, region, destinations });
|
|
31
23
|
}
|
|
32
24
|
catch (error) {
|
|
33
25
|
return mcpError(error);
|
|
@@ -44,17 +36,9 @@ export function registerAnypointMQTools(server, client) {
|
|
|
44
36
|
annotations: { readOnlyHint: true },
|
|
45
37
|
}, async ({ environment, region, queueId }) => {
|
|
46
38
|
try {
|
|
47
|
-
const orgId = await client
|
|
48
|
-
const env = await client.accessManagement.resolveEnvironment(orgId, environment);
|
|
39
|
+
const { orgId, env } = await resolveEnvironment(client, environment);
|
|
49
40
|
const stats = await client.anypointMQ.getQueueStats(orgId, env.id, region, queueId);
|
|
50
|
-
return {
|
|
51
|
-
content: [
|
|
52
|
-
{
|
|
53
|
-
type: 'text',
|
|
54
|
-
text: JSON.stringify({ environment: env.name, region, queue: queueId, stats }, null, 2),
|
|
55
|
-
},
|
|
56
|
-
],
|
|
57
|
-
};
|
|
41
|
+
return mcpText({ environment: env.name, region, queue: queueId, stats });
|
|
58
42
|
}
|
|
59
43
|
catch (error) {
|
|
60
44
|
return mcpError(error);
|
|
@@ -72,23 +56,15 @@ export function registerAnypointMQTools(server, client) {
|
|
|
72
56
|
annotations: { readOnlyHint: true },
|
|
73
57
|
}, async ({ environment, region, queueId, batchSize }) => {
|
|
74
58
|
try {
|
|
75
|
-
const orgId = await client
|
|
76
|
-
const env = await client.accessManagement.resolveEnvironment(orgId, environment);
|
|
59
|
+
const { orgId, env } = await resolveEnvironment(client, environment);
|
|
77
60
|
const messages = await client.anypointMQ.browseMessages(orgId, env.id, region, queueId, batchSize || 10);
|
|
78
|
-
return {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
queue: queueId,
|
|
86
|
-
messageCount: messages.length,
|
|
87
|
-
messages,
|
|
88
|
-
}, null, 2),
|
|
89
|
-
},
|
|
90
|
-
],
|
|
91
|
-
};
|
|
61
|
+
return mcpText({
|
|
62
|
+
environment: env.name,
|
|
63
|
+
region,
|
|
64
|
+
queue: queueId,
|
|
65
|
+
messageCount: messages.length,
|
|
66
|
+
messages,
|
|
67
|
+
});
|
|
92
68
|
}
|
|
93
69
|
catch (error) {
|
|
94
70
|
return mcpError(error);
|
|
@@ -102,31 +78,26 @@ export function registerAnypointMQTools(server, client) {
|
|
|
102
78
|
region: z.string().describe('MQ region ID (e.g. "us-east-1")'),
|
|
103
79
|
queueId: z.string().describe('Queue ID (destination ID) as returned by list_queues'),
|
|
104
80
|
body: z.string().describe('Message body content (typically JSON-stringified payload)'),
|
|
105
|
-
headers: z
|
|
81
|
+
headers: z
|
|
82
|
+
.record(z.string(), z.string())
|
|
83
|
+
.optional()
|
|
84
|
+
.describe('Optional message headers as key-value pairs'),
|
|
106
85
|
properties: z
|
|
107
|
-
.record(z.string())
|
|
86
|
+
.record(z.string(), z.string())
|
|
108
87
|
.optional()
|
|
109
88
|
.describe('Optional message properties as key-value pairs (used for routing or metadata)'),
|
|
110
89
|
},
|
|
111
90
|
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
|
|
112
91
|
}, async ({ environment, region, queueId, body, headers, properties }) => {
|
|
113
92
|
try {
|
|
114
|
-
const orgId = await client
|
|
115
|
-
const env = await client.accessManagement.resolveEnvironment(orgId, environment);
|
|
93
|
+
const { orgId, env } = await resolveEnvironment(client, environment);
|
|
116
94
|
const result = await client.anypointMQ.publishMessage(orgId, env.id, region, queueId, body, headers, properties);
|
|
117
|
-
return {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
messageId: result.messageId,
|
|
124
|
-
region,
|
|
125
|
-
bodyLength: body.length,
|
|
126
|
-
}, null, 2),
|
|
127
|
-
},
|
|
128
|
-
],
|
|
129
|
-
};
|
|
95
|
+
return mcpText({
|
|
96
|
+
message: `✅ Message published to queue "${queueId}" in ${env.name}`,
|
|
97
|
+
messageId: result.messageId,
|
|
98
|
+
region,
|
|
99
|
+
bodyLength: body.length,
|
|
100
|
+
});
|
|
130
101
|
}
|
|
131
102
|
catch (error) {
|
|
132
103
|
return mcpError(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anypoint-mq.js","sourceRoot":"","sources":["../../../src/mcp/tools/anypoint-mq.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"anypoint-mq.js","sourceRoot":"","sources":["../../../src/mcp/tools/anypoint-mq.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP Tool Registrar — API Manager tools
|
|
3
|
-
* list_api_instances, get_api_policies
|
|
3
|
+
* list_api_instances, get_api_policies, get_api_alerts, list_api_contracts,
|
|
4
|
+
* get_client_application, smoke_test_api
|
|
4
5
|
*/
|
|
5
6
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
7
|
import type { AnypointClient } from '../../client/AnypointClient.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-manager.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/api-manager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"api-manager.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/api-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAerE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,QA0PhF"}
|