Server data from the Official MCP Registry
Java profiling MCP via jcmd/jfr/jps. Diagnose performance, analyze threads, inspect JFR recordings.
Java profiling MCP via jcmd/jfr/jps. Diagnose performance, analyze threads, inspect JFR recordings.
Valid MCP server (2 strong, 3 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.
12 files analyzed ยท 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-thesharque-javaperf": {
"args": [
"-y",
"javaperf"
],
"command": "npx"
}
}
}From the project's GitHub README.
MCP (Model Context Protocol) server for profiling Java applications via JDK utilities (jcmd, jfr, jps)
Enables AI assistants to diagnose performance, analyze threads, and inspect JFR recordings without manual CLI usage.
๐ฆ Install: npm install -g javaperf or use via npx
๐ npm: https://www.npmjs.com/package/javaperf
Add the server to your MCP config. Example for claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"javaperf": {
"command": "npx",
"args": ["-y", "javaperf"]
}
}
}
For Cursor IDE: Settings โ Features โ Model Context Protocol โ Edit Config, then add the same block inside mcpServers. See the Integration section for more options (local dev, custom JAVA_HOME, etc.).
JDK tools (jps, jcmd, jfr) are auto-detected via JAVA_HOME or which java. If not found, set JAVA_HOME to your JDK root.
# No installation needed - use directly in Cursor/Claude Desktop
# Just configure it as described in Integration section below
git clone https://github.com/theSharque/mcp-jperf.git
cd mcp-jperf
npm install
npm run build
npm run dev
npm start
Debug and test with MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.js
Installs from npm registry automatically:
{
"mcpServers": {
"javaperf": {
"command": "npx",
"args": ["-y", "javaperf"]
}
}
}
For local development with live changes:
{
"mcpServers": {
"javaperf": {
"command": "javaperf"
}
}
}
Requires: cd /path/to/mcp-jperf && npm link -g
{
"mcpServers": {
"javaperf": {
"command": "node",
"args": ["dist/index.js"],
"cwd": "${workspaceFolder}",
"env": {
"JAVA_HOME": "/path/to/your/jdk"
}
}
}
}
If list_java_processes fails with "jps not found", the MCP server may not inherit your shell's JAVA_HOME. Add the env block above with your JDK root path (e.g. /usr/lib/jvm/java-17 or ~/.sdkman/candidates/java/current).
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"javaperf": {
"command": "npx",
"args": ["-y", "javaperf"]
}
}
}
Edit .continue/config.json:
{
"mcpServers": {
"javaperf": {
"command": "npx",
"args": ["-y", "javaperf"]
}
}
}
| Tool | Description |
|---|---|
list_java_processes | List running Java processes (pid, mainClass, args). Use topN (default 10) to limit. |
start_profiling | Start JFR recording with settings=profile. Pass pid, duration (seconds). Optional: memorysize (e.g. "20M"), stackdepth (default 128). |
list_jfr_recordings | List active JFR recordings for a process. Use before stop_profiling to get recordingId. |
stop_profiling | Stop recording and save to recordings/new_profile.jfr. Requires pid and recordingId. |
check_deadlock | Check for Java-level deadlocks. Returns structured JSON with threads, locks, and cycle. |
analyze_threads | Thread dump (jstack) with deadlock summary. Pass pid, optional topN (default 10). |
heap_histogram | Class histogram (GC.class_histogram). Pass pid, optional topN (20), all (triggers full GC โ may pause app). |
heap_dump | Create .hprof heap dump for MAT/VisualVM. Pass pid. Saved to recordings/heap_dump.hprof. |
heap_info | Brief heap summary. Pass pid. |
vm_info | JVM info: uptime, version, flags. Pass pid. |
trace_method | Build call tree for a method from .jfr. Pass className, methodName. Optional: filepath (default new_profile), topN. |
parse_jfr_summary | Parse .jfr into summary: top methods, GC stats, anomalies. Optional: filepath (default new_profile), events, topN. |
profile_memory | Memory profile: top allocators, GC, potential leaks. Optional: filepath (default new_profile), topN. |
profile_time | CPU bottleneck profile (bottom-up). Optional: filepath (default new_profile), topN. |
profile_frequency | Call frequency profile (leaf frames). Optional: filepath (default new_profile), topN. |
list_java_processesstart_profiling with pid and duration (e.g. 60)duration seconds (or let it run)list_jfr_recordings to get recordingIdstop_profiling with pid and recordingIdparse_jfr_summary, profile_memory, profile_time, profile_frequency, or trace_method (filepath defaults to new_profile)Be the first to review this server!
by Modelcontextprotocol ยท Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno ยท Developer Tools
Toleno Network MCP Server โ Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace ยท Developer Tools
Create, build, and publish Python MCP servers to PyPI โ conversationally.