mcp-jvm-diagnostics 0.1.13 → 0.1.14

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/build/index.js CHANGED
@@ -13,7 +13,7 @@ import { parseJfrSummary } from "./parsers/jfr-summary.js";
13
13
  import { generateReportFromThreadDump, analyzeThreadDumpMarkdown, } from "./reporting.js";
14
14
  // Handle --help
15
15
  if (process.argv.includes("--help") || process.argv.includes("-h")) {
16
- console.log(`mcp-jvm-diagnostics v0.1.12 — MCP server for JVM diagnostics
16
+ console.log(`mcp-jvm-diagnostics v0.1.14 — MCP server for JVM diagnostics
17
17
 
18
18
  Usage:
19
19
  mcp-jvm-diagnostics [options]
@@ -33,7 +33,7 @@ Tools provided:
33
33
  }
34
34
  const server = new McpServer({
35
35
  name: "mcp-jvm-diagnostics",
36
- version: "0.1.12",
36
+ version: "0.1.14",
37
37
  });
38
38
  // --- Tool: analyze_thread_dump ---
39
39
  server.tool("analyze_thread_dump", "Parse a JVM thread dump (jstack output) and analyze thread states, detect deadlocks, identify lock contention hotspots, and find thread starvation patterns. Handles both platform threads and virtual threads (Java 21+). Note: deadlock detection covers synchronized monitor locks only — java.util.concurrent.locks.ReentrantLock and other j.u.c lock types do not expose their waiters in thread dump lock info and will not be detected.", {
@@ -99,10 +99,20 @@ function analyzeJfrEvents(events, totalEvents, totalSize) {
99
99
  // Check for excessive allocation events
100
100
  const allocTLAB = byName.get("jdk.ObjectAllocationInNewTLAB");
101
101
  const allocOutside = byName.get("jdk.ObjectAllocationOutsideTLAB");
102
- if (allocOutside && allocOutside.count > 100) {
102
+ if (allocOutside && allocOutside.count >= 100) {
103
103
  issues.push(`${allocOutside.count.toLocaleString()} allocations outside TLAB — objects too large for thread-local allocation buffers.`);
104
104
  recommendations.push("Review large object allocations. Consider increasing TLAB size with -XX:TLABSize or reducing object sizes.");
105
105
  }
106
+ else if (allocOutside && allocTLAB && allocOutside.count > 0) {
107
+ // Even if the absolute count is low, a high ratio of outside-TLAB to total sampled
108
+ // allocations indicates pervasive large-object pressure in a low-event recording.
109
+ const totalSampled = allocTLAB.count + allocOutside.count;
110
+ const outsidePct = allocOutside.count / totalSampled;
111
+ if (outsidePct > 0.2) {
112
+ issues.push(`${allocOutside.count.toLocaleString()} allocations outside TLAB (${(outsidePct * 100).toFixed(0)}% of sampled allocations) — large object pressure detected.`);
113
+ recommendations.push("Review large object allocations. Consider increasing TLAB size with -XX:TLABSize or reducing object sizes.");
114
+ }
115
+ }
106
116
  // Check for thread contention
107
117
  const monitorEnter = byName.get("jdk.JavaMonitorEnter");
108
118
  const monitorWait = byName.get("jdk.JavaMonitorWait");
@@ -6,7 +6,7 @@ import { analyzeContention } from "./analyzers/contention.js";
6
6
  import { detectDeadlocks } from "./analyzers/deadlock.js";
7
7
  import { parseThreadDump } from "./parsers/thread-dump.js";
8
8
  const PRODUCT_NAME = "jvm-diagnostics";
9
- const TOOL_VERSION = "0.1.12";
9
+ const TOOL_VERSION = "0.1.14";
10
10
  export const MISSING_LICENSE_INPUT_ERROR = "Missing required input: license_key";
11
11
  export const MISSING_THREAD_DUMP_ERROR = "Missing required input: thread_dump";
12
12
  export const MISSING_ENV_LICENSE_ERROR = "MCP_LICENSE_KEY environment variable is not set. generate_report requires a valid Pro license key. Free-tier analysis tools remain available without it.";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-jvm-diagnostics",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "description": "MCP server for JVM diagnostics — analyze thread dumps, detect deadlocks, parse GC logs, and get JVM tuning recommendations",
5
5
  "mcpName": "io.github.dmitriusan/mcp-jvm-diagnostics",
6
6
  "author": "Dmytro Lisnichenko",