Skip to content

Method Invocation Skill ​

The Method Invocation Skill lets an AI agent connect to a running Java application and invoke a specified method. It handles JVM discovery, DebugTools connections, method arguments, overloads, and ClassLoaders, so you do not need to choose each MCP tool manually.

When the user asks to use a saved before/after script, call list_method_around_scripts, optionally inspect it with get_method_around_script, then pass the exact returned name without .java as invoke_java_method.methodAroundName or run_and_invoke.methodAroundName. Do not pass a project file path to MCP.

The skill name is debug-tools-method-invocation.

What It Can Do ​

  • Reuse an existing DebugTools connection in the current IDEA project.
  • Find attachable local JVMs and attach the DebugTools agent when needed.
  • Invoke instance or static methods.
  • Generate correctly structured templates for complex arguments.
  • Distinguish overloaded methods and invoke an explicit parameter signature.
  • Help select the correct ClassLoader when a class or Spring Bean cannot be found.
  • View invocation results as ToString, JSON, or Debug output.

For the MCP tool parameters and return values, see Method Invocation MCP.

How to Use It ​

Tell the AI the class name, method name, and arguments:

text
Invoke com.demo.UserController.getUser with id=10001.
text
Invoke com.demo.UserService.createUser with name Alice and age 18.
text
Invoke com.demo.HealthService.check, then show the result as JSON.

You do not need to say "use DebugTools" in every request. Intent such as "invoke a Java method," "attach to this JVM," or "show the JSON fields in the invocation result" can trigger the skill.

To reduce follow-up questions, provide as much of the following information as possible:

InformationWhen It Is Needed
Fully qualified class nameRecommended in every request, for example com.demo.UserController.
Method nameRequired, for example getUser.
Argument valuesRequired when the method has arguments.
Parameter typesRequired when overloads cannot be distinguished from values alone.
Project, module, or application nameUseful when IDEA has multiple projects open or several similar applications running.
PIDUseful when the target JVM is already known and should be attached directly.

What the Agent Does ​

The agent normally checks existing connections first. If no suitable connection exists, it lists attachable JVMs and establishes a connection. For methods with arguments, it either builds the arguments directly or generates an argument template first, depending on their complexity, and then invokes the method.

The skill chooses these steps. You only need to select among ambiguous candidates; you do not need to chain MCP tools manually.

Special Considerations ​

Newly Attached Spring Applications Need Time ​

Immediately after attaching to a JVM or starting an application through Hotswap, the Spring container may still be initializing. Before invoking a Controller, Service, Repository, or another Bean, the agent waits for Spring to become ready.

Regular static utility methods do not depend on Spring and normally skip this wait.

Complex Arguments and Overloads May Need More Information ​

Simple arguments can be used directly. For objects, collections, nested structures, or unclear parameter names, the agent generates an argument template before filling values.

If same-name overloads are still ambiguous, the agent asks you to confirm the parameter types instead of guessing.

Multiple JVMs or Connections Are Not Chosen Arbitrarily ​

When the project has one clear target, the agent can reuse it directly. When multiple connections, JVMs, or similar applications are available, the agent filters them by project, main class, and connection metadata. If the target remains ambiguous, it asks you to choose.

ClassLoaders Are Checked Only When Needed ​

Normal invocations do not enumerate ClassLoaders in advance. The agent checks which ClassLoaders can load the target class only after errors such as a missing class, missing Bean, mismatched framework context, or incorrect class version.

If multiple ClassLoaders can load the class, you must confirm the target. The agent does not guess from names alone.

If No JVM Can Be Attached, the Agent May Suggest Starting One ​

When there is neither an active connection nor an attachable JVM, the agent can inspect IDEA run configurations and suggest starting the application through Hotswap. Unless the original request already authorized startup, it asks before running the project.

ToString Is the Default Result View ​

The default invocation result is suitable for a quick inspection. For structured content, continue with a request such as:

text
Show the previous result as JSON.
text
Use the Debug view to expand result.user.

JSON and Debug views depend on the HTTP information returned by the connection. If the connection does not provide it, the agent explains that the view is unavailable.

If the Skill Does Not Trigger ​

If the AI client reports that no DebugTools MCP tools are available, do not ask it to simulate invocation with jps, port scanning, or a temporary Java program. Check the IDEA MCP configuration and confirm that the DebugTools plugin exposes its tools correctly.

Status and observability ​

For a complete target snapshot, the agent should prefer get_debug_tools_status. It automatically selects exactly one active connection, but multiple active connections require an explicit connectionId. The skill can also use read_target_application_logs and get_last_sql_statements with bounded filters after an invocation. LOGS_UNAVAILABLE and SQL_HISTORY_UNAVAILABLE are capability errors, not empty streams.

Current plugins support resultView=TO_STRING|JSON|DEBUG|NONE on invoke_java_method, plus resultJson, resultFetchStatus, and resultFetchError. A result fetch error is reported separately from method invocation failure. Structured error fields such as code, availableOptions, retryable, and nextAction drive recovery.