@mcp-consultant-tools/log-analytics 28.0.0 → 29.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.
Files changed (73) hide show
  1. package/build/cli/commands/function-commands.d.ts +7 -0
  2. package/build/cli/commands/function-commands.d.ts.map +1 -0
  3. package/build/cli/commands/function-commands.js +120 -0
  4. package/build/cli/commands/function-commands.js.map +1 -0
  5. package/build/cli/commands/index.d.ts +10 -0
  6. package/build/cli/commands/index.d.ts.map +1 -0
  7. package/build/cli/commands/index.js +15 -0
  8. package/build/cli/commands/index.js.map +1 -0
  9. package/build/cli/commands/query-commands.d.ts +7 -0
  10. package/build/cli/commands/query-commands.d.ts.map +1 -0
  11. package/build/cli/commands/query-commands.js +486 -0
  12. package/build/cli/commands/query-commands.js.map +1 -0
  13. package/build/cli/commands/workspace-commands.d.ts +7 -0
  14. package/build/cli/commands/workspace-commands.d.ts.map +1 -0
  15. package/build/cli/commands/workspace-commands.js +47 -0
  16. package/build/cli/commands/workspace-commands.js.map +1 -0
  17. package/build/cli/output.d.ts +11 -0
  18. package/build/cli/output.d.ts.map +1 -0
  19. package/build/cli/output.js +10 -0
  20. package/build/cli/output.js.map +1 -0
  21. package/build/cli.d.ts +9 -0
  22. package/build/cli.d.ts.map +1 -0
  23. package/build/cli.js +27 -0
  24. package/build/cli.js.map +1 -0
  25. package/build/context-factory.d.ts +4 -0
  26. package/build/context-factory.d.ts.map +1 -0
  27. package/build/context-factory.js +45 -0
  28. package/build/context-factory.js.map +1 -0
  29. package/build/index.d.ts +14 -2
  30. package/build/index.d.ts.map +1 -1
  31. package/build/index.js +35 -1121
  32. package/build/index.js.map +1 -1
  33. package/build/prompts/index.d.ts +7 -0
  34. package/build/prompts/index.d.ts.map +1 -0
  35. package/build/prompts/index.js +6 -0
  36. package/build/prompts/index.js.map +1 -0
  37. package/build/prompts/templates.d.ts +3 -0
  38. package/build/prompts/templates.d.ts.map +1 -0
  39. package/build/prompts/templates.js +195 -0
  40. package/build/prompts/templates.js.map +1 -0
  41. package/build/services/index.d.ts +3 -0
  42. package/build/services/index.d.ts.map +1 -0
  43. package/build/services/index.js +2 -0
  44. package/build/services/index.js.map +1 -0
  45. package/build/services/log-analytics-service.d.ts +117 -0
  46. package/build/services/log-analytics-service.d.ts.map +1 -0
  47. package/build/services/log-analytics-service.js +419 -0
  48. package/build/services/log-analytics-service.js.map +1 -0
  49. package/build/tool-examples.d.ts +1 -8
  50. package/build/tool-examples.d.ts.map +1 -1
  51. package/build/tool-examples.js +1 -12
  52. package/build/tool-examples.js.map +1 -1
  53. package/build/tools/function-tools.d.ts +3 -0
  54. package/build/tools/function-tools.d.ts.map +1 -0
  55. package/build/tools/function-tools.js +536 -0
  56. package/build/tools/function-tools.js.map +1 -0
  57. package/build/tools/index.d.ts +9 -0
  58. package/build/tools/index.d.ts.map +1 -0
  59. package/build/tools/index.js +12 -0
  60. package/build/tools/index.js.map +1 -0
  61. package/build/tools/query-tools.d.ts +3 -0
  62. package/build/tools/query-tools.d.ts.map +1 -0
  63. package/build/tools/query-tools.js +105 -0
  64. package/build/tools/query-tools.js.map +1 -0
  65. package/build/tools/workspace-tools.d.ts +3 -0
  66. package/build/tools/workspace-tools.d.ts.map +1 -0
  67. package/build/tools/workspace-tools.js +53 -0
  68. package/build/tools/workspace-tools.js.map +1 -0
  69. package/build/types.d.ts +9 -0
  70. package/build/types.d.ts.map +1 -0
  71. package/build/types.js +2 -0
  72. package/build/types.js.map +1 -0
  73. package/package.json +5 -3
@@ -0,0 +1,105 @@
1
+ import { z } from 'zod';
2
+ import { formatTableAsMarkdown, filterColumns, resolveColumnPreset, } from '../utils/loganalytics-formatters.js';
3
+ import { descWithExamples, KQL_EXAMPLES, TIMESPAN_EXAMPLES, COLUMN_PRESET_EXAMPLES, TABLE_NAME_EXAMPLES, OUTPUT_FORMAT_EXAMPLES, } from '../tool-examples.js';
4
+ export function registerQueryTools(server, ctx) {
5
+ server.tool("la-execute-query", "Execute a custom KQL query against Log Analytics workspace", {
6
+ resourceId: z.string().describe("Resource ID"),
7
+ query: z.string().describe(descWithExamples("KQL query string", KQL_EXAMPLES)),
8
+ timespan: z.string().optional().describe(descWithExamples("Time range (default: PT1H)", TIMESPAN_EXAMPLES)),
9
+ columnPreset: z.enum(["minimal", "investigation", "full"]).optional()
10
+ .describe(descWithExamples("Column preset for filtering results. 'minimal' reduces token count significantly", COLUMN_PRESET_EXAMPLES)),
11
+ columns: z.array(z.string()).optional()
12
+ .describe("Custom columns to include (overrides columnPreset). E.g., ['TimeGenerated', 'Message']"),
13
+ outputFormat: z.enum(["json", "markdown"]).optional()
14
+ .describe(descWithExamples("Output format (default: json)", OUTPUT_FORMAT_EXAMPLES)),
15
+ }, async ({ resourceId, query, timespan, columnPreset, columns, outputFormat }) => {
16
+ try {
17
+ const result = await ctx.logAnalytics.executeQuery(resourceId, query, timespan);
18
+ const columnsToInclude = resolveColumnPreset(columnPreset, columns);
19
+ const filteredTables = result.tables.map((t) => filterColumns(t, columnsToInclude));
20
+ const filteredResult = { ...result, tables: filteredTables };
21
+ if (outputFormat === 'markdown' && filteredTables.length > 0) {
22
+ const markdown = filteredTables.map((t) => formatTableAsMarkdown(t)).join('\n\n');
23
+ return { content: [{ type: "text", text: markdown }] };
24
+ }
25
+ return {
26
+ content: [{ type: "text", text: JSON.stringify(filteredResult, null, 2) }],
27
+ };
28
+ }
29
+ catch (error) {
30
+ console.error("Error executing Log Analytics query:", error);
31
+ return {
32
+ content: [{ type: "text", text: `Failed to execute query: ${error.message}` }],
33
+ isError: true,
34
+ };
35
+ }
36
+ });
37
+ server.tool("la-get-recent-events", "Get recent events from a specific Log Analytics table", {
38
+ resourceId: z.string().describe("Resource ID"),
39
+ tableName: z.string().describe(descWithExamples("Table name to query", TABLE_NAME_EXAMPLES)),
40
+ timespan: z.string().optional().describe(descWithExamples("Time range (default: PT1H)", TIMESPAN_EXAMPLES)),
41
+ limit: z.number().optional().describe("Maximum number of results (default: 100)"),
42
+ columnPreset: z.enum(["minimal", "investigation", "full"]).optional()
43
+ .describe(descWithExamples("Column preset for filtering results", COLUMN_PRESET_EXAMPLES)),
44
+ columns: z.array(z.string()).optional()
45
+ .describe("Custom columns to include (overrides columnPreset)"),
46
+ outputFormat: z.enum(["json", "markdown"]).optional()
47
+ .describe(descWithExamples("Output format (default: json)", OUTPUT_FORMAT_EXAMPLES)),
48
+ }, async ({ resourceId, tableName, timespan, limit, columnPreset, columns, outputFormat }) => {
49
+ try {
50
+ const result = await ctx.logAnalytics.getRecentEvents(resourceId, tableName, timespan || 'PT1H', limit || 100);
51
+ const columnsToInclude = resolveColumnPreset(columnPreset, columns);
52
+ const filteredTables = result.tables.map((t) => filterColumns(t, columnsToInclude));
53
+ const filteredResult = { ...result, tables: filteredTables };
54
+ if (outputFormat === 'markdown' && filteredTables.length > 0) {
55
+ const markdown = filteredTables.map((t) => formatTableAsMarkdown(t)).join('\n\n');
56
+ return { content: [{ type: "text", text: markdown }] };
57
+ }
58
+ return {
59
+ content: [{ type: "text", text: JSON.stringify(filteredResult, null, 2) }],
60
+ };
61
+ }
62
+ catch (error) {
63
+ console.error("Error getting recent events:", error);
64
+ return {
65
+ content: [{ type: "text", text: `Failed to get recent events: ${error.message}` }],
66
+ isError: true,
67
+ };
68
+ }
69
+ });
70
+ server.tool("la-search-logs", "Search logs by text content across tables or a specific table", {
71
+ resourceId: z.string().describe("Resource ID"),
72
+ searchText: z.string().describe("Text to search for (case-insensitive)"),
73
+ tableName: z.string().optional().describe(descWithExamples("Table name to search in (optional, searches all if not specified)", TABLE_NAME_EXAMPLES)),
74
+ timespan: z.string().optional().describe(descWithExamples("Time range (default: PT1H)", TIMESPAN_EXAMPLES)),
75
+ limit: z.number().optional().describe("Maximum number of results (default: 100)"),
76
+ columnPreset: z.enum(["minimal", "investigation", "full"]).optional()
77
+ .describe(descWithExamples("Column preset for filtering results", COLUMN_PRESET_EXAMPLES)),
78
+ columns: z.array(z.string()).optional()
79
+ .describe("Custom columns to include (overrides columnPreset)"),
80
+ outputFormat: z.enum(["json", "markdown"]).optional()
81
+ .describe(descWithExamples("Output format (default: json)", OUTPUT_FORMAT_EXAMPLES)),
82
+ }, async ({ resourceId, searchText, tableName, timespan, limit, columnPreset, columns, outputFormat }) => {
83
+ try {
84
+ const result = await ctx.logAnalytics.searchLogs(resourceId, searchText, tableName, timespan || 'PT1H', limit || 100);
85
+ const columnsToInclude = resolveColumnPreset(columnPreset, columns);
86
+ const filteredTables = result.tables.map((t) => filterColumns(t, columnsToInclude));
87
+ const filteredResult = { ...result, tables: filteredTables };
88
+ if (outputFormat === 'markdown' && filteredTables.length > 0) {
89
+ const markdown = filteredTables.map((t) => formatTableAsMarkdown(t)).join('\n\n');
90
+ return { content: [{ type: "text", text: markdown }] };
91
+ }
92
+ return {
93
+ content: [{ type: "text", text: JSON.stringify(filteredResult, null, 2) }],
94
+ };
95
+ }
96
+ catch (error) {
97
+ console.error("Error searching logs:", error);
98
+ return {
99
+ content: [{ type: "text", text: `Failed to search logs: ${error.message}` }],
100
+ isError: true,
101
+ };
102
+ }
103
+ });
104
+ }
105
+ //# sourceMappingURL=query-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-tools.js","sourceRoot":"","sources":["../../src/tools/query-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ServiceContext } from '../types.js';
2
+ export declare function registerWorkspaceTools(server: any, ctx: ServiceContext): void;
3
+ //# sourceMappingURL=workspace-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-tools.d.ts","sourceRoot":"","sources":["../../src/tools/workspace-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAiE7E"}
@@ -0,0 +1,53 @@
1
+ import { z } from 'zod';
2
+ export function registerWorkspaceTools(server, ctx) {
3
+ server.tool("la-list-workspaces", "List all configured Log Analytics workspaces (active and inactive)", {}, async () => {
4
+ try {
5
+ const resources = ctx.logAnalytics.getAllResources();
6
+ return {
7
+ content: [{ type: "text", text: JSON.stringify(resources, null, 2) }],
8
+ };
9
+ }
10
+ catch (error) {
11
+ console.error("Error listing Log Analytics workspaces:", error);
12
+ return {
13
+ content: [{ type: "text", text: `Failed to list workspaces: ${error.message}` }],
14
+ isError: true,
15
+ };
16
+ }
17
+ });
18
+ server.tool("la-get-metadata", "Get schema metadata (tables and columns) for a Log Analytics workspace", {
19
+ resourceId: z.string().describe("Resource ID (use la-list-workspaces to find IDs)"),
20
+ }, async ({ resourceId }) => {
21
+ try {
22
+ const metadata = await ctx.logAnalytics.getMetadata(resourceId);
23
+ return {
24
+ content: [{ type: "text", text: JSON.stringify(metadata, null, 2) }],
25
+ };
26
+ }
27
+ catch (error) {
28
+ console.error("Error getting Log Analytics metadata:", error);
29
+ return {
30
+ content: [{ type: "text", text: `Failed to get metadata: ${error.message}` }],
31
+ isError: true,
32
+ };
33
+ }
34
+ });
35
+ server.tool("la-test-access", "Test access to a Log Analytics workspace by executing a simple query", {
36
+ resourceId: z.string().describe("Resource ID"),
37
+ }, async ({ resourceId }) => {
38
+ try {
39
+ const result = await ctx.logAnalytics.testWorkspaceAccess(resourceId);
40
+ return {
41
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
42
+ };
43
+ }
44
+ catch (error) {
45
+ console.error("Error testing workspace access:", error);
46
+ return {
47
+ content: [{ type: "text", text: `Failed to test workspace access: ${error.message}` }],
48
+ isError: true,
49
+ };
50
+ }
51
+ });
52
+ }
53
+ //# sourceMappingURL=workspace-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-tools.js","sourceRoot":"","sources":["../../src/tools/workspace-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,sBAAsB,CAAC,MAAW,EAAE,GAAmB;IAErE,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,oEAAoE,EACpE,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;YACrD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACtE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;YAChE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAChF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,wEAAwE,EACxE;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;KACpF,EACD,KAAK,EAAE,EAAE,UAAU,EAAO,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAChE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACrE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,sEAAsE,EACtE;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;KAC/C,EACD,KAAK,EAAE,EAAE,UAAU,EAAO,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACtE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACtF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Service context shared between MCP server entry points.
3
+ * Uses lazy getters to initialize services on-demand.
4
+ */
5
+ import type { LogAnalyticsService } from './services/log-analytics-service.js';
6
+ export interface ServiceContext {
7
+ readonly logAnalytics: LogAnalyticsService;
8
+ }
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;CAC5C"}
package/build/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-consultant-tools/log-analytics",
3
- "version": "28.0.0",
3
+ "version": "29.0.0",
4
4
  "description": "MCP server for Azure Log Analytics - workspace queries and Azure Functions monitoring",
5
5
  "type": "module",
6
6
  "main": "./build/index.js",
@@ -40,9 +40,10 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@azure/msal-node": "^3.3.0",
43
- "@mcp-consultant-tools/core": "^1.0.0",
43
+ "@mcp-consultant-tools/core": "29.0.0",
44
44
  "@modelcontextprotocol/sdk": "^1.0.4",
45
45
  "axios": "^1.8.3",
46
+ "commander": "^14.0.3",
46
47
  "zod": "^3.24.1"
47
48
  },
48
49
  "devDependencies": {
@@ -50,6 +51,7 @@
50
51
  "typescript": "^5.8.2"
51
52
  },
52
53
  "bin": {
53
- "mcp-loganalytics": "build/index.js"
54
+ "mcp-loganalytics": "build/index.js",
55
+ "mcp-loganalytics-cli": "build/cli.js"
54
56
  }
55
57
  }