JProfiler
JProfiler 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-mcpCodex
codex mcp add jprofiler -- npx -y @ej-technologies/jprofiler-mcpCursor
Listed on cursor.directory.
Other MCP clients
Use the following npx invocation as the MCP server command in your client's configuration:
npx -y @ej-technologies/jprofiler-mcp@latestFor clients that use a JSON configuration file (Claude Desktop, Antigravity, Windsurf, VS Code, etc.):
{
"mcpServers": {
"jprofiler": {
"command": "npx",
"args": ["-y", "@ej-technologies/jprofiler-mcp"]
}
}
}Optional arguments
--filter <patterns>— Comma-separated list of tool name patterns to include--subsystems <list>— Comma-separated list of subsystems to enable--max-depth <n>— Maximum call tree expansion depth
Related MCP server: Github MCP Server Java
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
Tool Definition Quality
Average 4.3/5 across 3 of 3 tools scored.
Each tool targets a distinct task: discovering JVMs, creating heap dumps, and preparing profiling sessions. No overlap in purpose.
All three tools follow a consistent verb_noun pattern: list_jvms, create_heap_dump, prepare_profiling.
Three tools is minimalist but covers the core tasks of discovery, heap dumping, and profiling. Could benefit from an attach tool, but still reasonable.
Critical missing tools: check_status and get_heap_data are referenced in descriptions but not provided, creating dead ends in the workflow.
Available Tools
3 toolscreate_heap_dumpA
Dump the heap of a locally running JVM or of a JVM inside a Docker container to an HPROF file and load it for analysis. You must call check_status to check the loading progress and - after this returns 'data_ready' - retrieve data with get_heap_data. You can use list_jvms to discover JVMs.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | No | The PID of a local JVM process, or the container PID (NSpid) of a JVM inside the specified container. If a container is specified and this is omitted, the topmost JVM in the container is used. | |
| containerNameOrId | No | The name or ID of a Docker container. When specified, profiling attaches to a JVM inside this container. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool performs both dumping and loading, and references a multi-step process. However, it does not mention potential side effects (e.g., disk usage, file creation) or prerequisites (e.g., permissions).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences, no fluff, front-loaded with the main action, and logically structured around the workflow. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains the tool's role in a larger workflow and references sibling tools. It could be more complete by describing return values or error conditions, but the provided context is sufficient for an agent to understand its usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already well-documented. The description adds context by mentioning list_jvms for discovery and the default behavior when containerNameOrId is specified but pid is omitted, but this information is already in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'dumps the heap' to an HPROF file and loads it for analysis. It specifies the resource (JVM heap) and action (dump and load), and distinguishes from siblings by outlining the specific workflow involving check_status and get_heap_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear workflow: call create_heap_dump, then check_status, then get_heap_data. It also suggests using list_jvms to discover JVMs. However, it does not explicitly state when not to use this tool or mention alternatives beyond the given workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jvmsA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| containerNameOrId | No | Optionally specify the name or ID of a Docker container. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains what is returned and where it looks, but does not disclose side effects, permissions, or whether the operation is safe to repeat. It vaguely describes query behavior without explicit reassurance of non-destructiveness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The first sentence states the core purpose; the second gives usage guidance. It is efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers return contents (command line and PID). It could be improved by specifying the output format (e.g., array of objects). Still, it's complete enough for a simple list tool that feeds into other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the one optional parameter. The description adds value by explaining the parameter's role in filtering to Docker containers, and implicitly that absence means local JVMs. This goes beyond the schema's terse description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists locally running JVMs or those in Docker containers, providing command line and PID. It uses specific verbs and resources, and distinguishes from sibling tools like attach and create_heap_dump which are actions to take after listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use the information to call attach or create_heap_dump,' providing clear context for when to use this tool. However, it does not mention when not to use it or other alternatives, which would be helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_profilingA
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, http_server, http_client, mongo_db. 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. Run the Java process; the recording is saved automatically when the JVM terminates (or after the optional maximum duration). Then call check_status to access the data - do not load the saved snapshot file yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| delay | No | An optional recording delay in seconds measured from the jvm start. | |
| maximumDuration | No | An optional maximum recording duration in seconds. If not specified, data will be saved at JVM termination or when check_status is called with 'stopRecording: true'. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains that the tool returns a 'jvmParameter' and mentions automatic recording saving. Does not mention destructive actions or auth, but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Multiple sentences but each adds essential information. Front-loaded with purpose. Could be slightly tighter but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description clearly states the return value (JSON with 'jvmParameter'). Covers prerequisite actions and subsequent steps. Complete for a tool with 2 optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds value by explaining the optional delay and maximumDuration parameters with clear behavior (delay from JVM start, max duration vs termination/stopRecording).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it prepares a profiling session by retrieving a JVM parameter for specific subsystems (cpu, jdbc, etc.). Distinguishes from sibling tools like create_heap_dump and list_jvms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides step-by-step instructions: retrieve parameter, add to Java process, run, then call check_status. Explicitly tells what not to do (do not create/modify files, do not load snapshot file).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Ship better Java with your coding agent.
The Polar Signals MCP server enables AI assistants to connect directly with performance profiling data, allowing users to analyze application performance through natural language queries. Key capabilities include querying CPU performance and memory usage, exploring profiling metadata like profile types and labels, and providing AI-driven code optimization suggestions directly within development environments like Claude Code or Cursor.
AI-powered codebase analysis — call graphs, security, dead code, complexity. 150+ tools.
AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAutomates Java Maven testing workflows with decision table-based test generation, security vulnerability scanning, JaCoCo coverage analysis, and Git automation.
- AlicenseNot gradedqualityDmaintenanceA Java implementation of the GitHub MCP (Model Context Protocol) Server using Spring AI. This server provides MCP-compatible tools for interacting with the GitHub API.MIT
- AlicenseBqualityCmaintenanceСonnects to live JVMs via JDWP protocol, enabling LLM agents to autonomously debug Java applications — attach to a running process, pause threads, set breakpoints (including conditional), inspect stacks with auto-resolved object fields, evaluate methods, set variable values, and diagnose issues like deadlocks and hung queries.281MIT
- AlicenseAqualityDmaintenanceMCP 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.266410MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ej-technologies/jprofiler-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server