Skip to main content
Glama

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.):

{
  "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 DescriptionsA

Average 4.3/5 across 3 of 3 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct task: discovering JVMs, creating heap dumps, and preparing profiling sessions. No overlap in purpose.

Naming Consistency5/5

All three tools follow a consistent verb_noun pattern: list_jvms, create_heap_dump, prepare_profiling.

Tool Count4/5

Three tools is minimalist but covers the core tasks of discovery, heap dumping, and profiling. Could benefit from an attach tool, but still reasonable.

Completeness2/5

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 tools
create_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidNoThe 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.
containerNameOrIdNoThe name or ID of a Docker container. When specified, profiling attaches to a JVM inside this container.
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
containerNameOrIdNoOptionally specify the name or ID of a Docker container.
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
delayNoAn optional recording delay in seconds measured from the jvm start.
maximumDurationNoAn 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'.
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

A
license - permissive license
A
quality
B
maintenance

Maintenance

3wRelease cycle
5Releases (12mo)
Commit activity
Issues opened vs closed

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

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    С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.
    28
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP 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.
    26
    64
    10
    MIT

View all related MCP servers

Latest Blog Posts

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