JProfiler

io.github.ej-technologiesPublished by GitHub account ej-technologiesv16.3.0Updated Oct 29, 2026

Java profiling with AI agent integration. Profile CPU, memory, JDBC, HTTP and more.

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

JProfiler MCP lets an AI assistant profile Java applications: record CPU, memory, JDBC and HTTP data, then query snapshots and heap dumps.

What you can do
  • Discover and attach to JVMs: list local or Docker JVMs, attach by PID, or get a JVM startup parameter to profile a new process.
  • Control recordings: check session status, stop recording, and run point-in-time actions such as thread dumps, MBean snapshots and heap dumps.
  • Load and compare snapshots: open existing .jps, .hprof or .jfr files, including baseline-versus-run comparisons.
  • Analyze data: query performance and heap datasets with jq expressions, following object graphs and expanding call trees.
  • Capture heap dumps from a running JVM and inspect class histograms, biggest objects and instances.
When to use it
Useful when you are debugging Java performance in an AI coding assistant: finding CPU hotspots, slow JDBC or HTTP calls, lock contention, memory leaks or allocation problems, and want the assistant to read the profiling data directly instead of you exporting reports by hand.
Requirements
Runs as a local stdio process, typically launched with npx from the npm package, so Node.js and network access for the package download are needed. It targets JVMs on the same machine or in Docker containers; no API keys or environment variables are declared. A JProfiler installation is implied for manual .jps recording workflows.
Before you install
Attaching to a JVM starts live recording sessions that collect performance data until stopped, and heap dumps can be large and pause or slow the target application. Recording configuration and heap scripts are supplied by the assistant, so review what is being recorded on production or shared systems. Snapshots and heap dumps contain application internals such as class names, SQL and object contents.

Installation

In SourceWeft

  1. Open JProfiler in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

JProfiler MCP Server

[ej-technologies/jprofiler-mcp MCP server]

JProfiler is a Java profiler with AI agent integration via the Model Context Protocol. Profile CPU hotspots, memory allocations, JDBC queries, HTTP calls and more directly from your AI coding assistant.

Installation

Claude Code

claude mcp add jprofiler -- npx -y @ej-technologies/jprofiler-mcp

Codex

codex mcp add jprofiler -- npx -y @ej-technologies/jprofiler-mcp

Cursor

Listed on cursor.directory.

[Install MCP Server]

Other MCP clients

Use the following npx invocation as the MCP server command in your client's configuration:

npx -y @ej-technologies/jprofiler-mcp@latest

For clients that use a JSON configuration file (Claude Desktop, Antigravity, Windsurf, VS Code, etc.):

json
{  "mcpServers": {    "jprofiler": {      "command": "npx",      "args": ["-y", "@ej-technologies/jprofiler-mcp"]    }  }}

License

JProfiler requires a license. On first use, you can start a free 10-day evaluation or enter an existing license key. Purchase at https://www.ej-technologies.com/store/jprofiler.

License terms: https://www.ej-technologies.com/jprofiler/license

Source: README.md at commit 3da0cb8

Tools

8

prepare_profiling

Prepare a profiling session by retrieving a JVM parameter to be added to a Java process call to record performance data with stack traces for the following subsystems: cpu, jdbc, jpa, mongo_db, cassandra, http_server, http_client, ws, jndi, jms, kafka_consumer, rmi, grpc, ai, process. The result is a JSON object containing a 'jvmParameter' to be added (quoted) to the Java process at startup. Add it verbatim and do not create or modify any files; the configuration is already set up for you. If the result contains 'additionalJvmParameters' (discovery of injected custom probes), add each element as a separate VM argument as well. Keep this MCP server running and run the Java process. It waits for the server to connect before application startup. During recording, attached_action can perform live actions. The recording is saved automatically when the JVM terminates, after the optional maximum duration, or when check_status is called with 'stopRecording: true'. Then call check_status to access the data - do not load the saved snapshot file yourself. Saving disconnects from the JVM. Use attach with its PID for another recording if it is still running.

ParametersdelaymaximumDurationrecordingConfig

load_snapshot

Load an existing .jps, .hprof, or .jfr file for analysis. You must call check_status to check the loading progress and - after this returns 'data_ready' - retrieve data with the query tool. To compare two performance snapshots, load both in a single call: set filePath to the run to analyze and baselineFilePath to the baseline; the differences are then reported in the hotspots and call trees of that run.

ParametersfilePathrequiredbaselineFilePath

attach

Attach to a running JVM by PID or to a JVM inside a Docker container. Records performance data for the following subsystems: cpu, jdbc, jpa, mongo_db, cassandra, http_server, http_client, ws, jndi, jms, kafka_consumer, rmi, grpc, ai, process until check_status is called with 'stopRecording: true', or allocation data when "recordingConfig": {"recordAllocations": true} is passed. Pass "recordingConfig": {"recordMonitors": true} to additionally record monitor and lock events. You can use list_jvms to discover JVMs.

ParameterspidrecordingConfigcontainerNameOrId

check_status

Check the status of a profiling session and discover which subsystems were recorded. Can be used to stop recording. When the data is ready provides information about the recorded subsystems (e.g. cpu, jdbc, http_client).

ParametersstopRecording

query

Query a performance or heap dataset with a jq expression and return the result. The dataset is materialized lazily and cached per session. Each query is independent, there is no current object: builtins take explicit ids bound from earlier results, e.g. .instances[0].id as $id | {value: preview($id), keptAliveBy: pathToRoot($id).paths[0].path | map(.class)}

Parametersidoptosetargsfromlinenamesorttextclassfield+40 more

create_heap_dump

Dump the heap of a locally running JVM or of a JVM inside a Docker container and load it for analysis. If allocation data is recorded for the JVM, the heap dump includes per-object allocation data. A recording session delivers a single heap dump, for a later dump attach again. You must call check_status to check the loading progress and - after this returns 'data_ready' - retrieve data with the query tool. You can use list_jvms to discover JVMs.

ParameterspidcontainerNameOrId

attached_action

Perform a point-in-time action on the connected JVM: thread and monitor dumps, heap marking and heap dumps, MBean snapshots, and starting or stopping subsystem recording. Requires a recording session started with attach or prepare_profiling. The action names and parameters are the same as for the actions of recordingConfig.triggers.

ParameterscpulabelactionrequiredfilterfullGcprobesmonitorscomplexityallocationsincludeVirtualThreads

list_jvms

List locally running JVMs or JVMs running in a Docker container with their command line and PID. Use the information to call attach or create_heap_dump.

ParameterscontainerNameOrId

Version history

2
  1. v16.3.0LatestOct 26, 2026
  2. v16.2.1Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts