Skip to main content
Glama

list_java_processes

List all running Java processes with their IDs, names, and arguments for monitoring and analysis.

Instructions

列出所有Java进程

        Returns:
            List[Dict[str, str]]: 包含Java进程信息的列表,每个进程包含以下字段:
                - pid (str): 进程ID
                - name (str): 进程名称
                - args (str): 进程参数
        

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The handler function for the 'list_java_processes' MCP tool. It is registered via the @self.mcp.tool() decorator and executes JpsCommand to retrieve and return a list of Java processes.
    @self.mcp.tool()
    def list_java_processes() -> List[Dict[str, str]]:
        """列出所有Java进程
    
        Returns:
            List[Dict[str, str]]: 包含Java进程信息的列表,每个进程包含以下字段:
                - pid (str): 进程ID
                - name (str): 进程名称
                - args (str): 进程参数
        """
        cmd = JpsCommand(self.executor, JpsFormatter())
        result = cmd.execute()
        processes = []
        if result.get('success'):
            for proc in result['processes']:
                processes.append(proc)
        return processes
  • Helper classes JpsCommand (executes 'jps -l -v') and JpsFormatter (parses output into structured list of processes with pid, name, args) used by the list_java_processes tool.
    class JpsCommand(BaseCommand):
        """JPS命令实现"""
    
        def get_command(self, *args, **kwargs) -> str:
            """获取jps命令
    
            Returns:
                str: jps命令字符串
            """
            # 使用 -l 显示完整的包名,-v 显示JVM参数
            return 'jps -l -v'
    
    class JpsFormatter(OutputFormatter):
        """JPS输出格式化器"""
    
        def format(self, result: CommandResult) -> Dict[str, Any]:
            """格式化jps命令输出
    
            Args:
                result: 命令执行结果
    
            Returns:
                Dict[str, Any]: 格式化后的结果,包含进程列表
            """
            processes: List[Dict[str, str]] = []
    
            for line in result.output.splitlines():
                if line.strip():
                    # jps输出格式:<pid> <class> <jvm args>
                    parts = line.split(None, 2)
                    # 确保至少有 pid 和 class 两个部分
                    if len(parts) >= 2 and parts[0].isdigit():
                        process = {
                            "pid": parts[0],
                            "name": parts[1],
                            "args": parts[2] if len(parts) > 2 else ""
                            }
                        processes.append(process)
    
            return {
                "success": result.success,
                "processes": processes,
                "execution_time": result.execution_time,
                "timestamp": result.timestamp.isoformat()
                }
  • Output schema defined in the tool's docstring and type annotation: List of dicts with 'pid', 'name', 'args' fields.
        List[Dict[str, str]]: 包含Java进程信息的列表,每个进程包含以下字段:
            - pid (str): 进程ID
            - name (str): 进程名称
            - args (str): 进程参数
    """
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the return format (List[Dict[str, str]]) and the specific fields included (pid, name, args), which is valuable behavioral information. However, it doesn't mention potential limitations like permission requirements, refresh rates, or whether the list is real-time versus cached.

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 perfectly structured and concise. The first sentence states the core purpose, followed by a clear Returns section with specific field documentation. Every sentence earns its place with no wasted words or redundant information.

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?

For a zero-parameter read-only tool with no output schema, the description provides excellent contextual completeness. It explains what the tool does, what it returns, and the structure of the returned data. The only minor gap is the lack of behavioral context about permissions or refresh behavior, but overall it's highly complete for this tool type.

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?

The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of parameters. The description doesn't need to add parameter information, and it appropriately focuses on the return value instead. A baseline of 4 is appropriate for zero-parameter tools.

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's purpose with a specific verb ('列出所有Java进程' - list all Java processes) and resource (Java processes). It distinguishes from sibling tools like get_jvm_info or get_jvm_status by focusing specifically on process listing rather than JVM metrics or status information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (when you need to see all Java processes) but doesn't provide explicit guidance on when to use this tool versus alternatives like get_jcmd_output or get_jvm_status. No exclusions or prerequisites are mentioned, leaving usage decisions to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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/xzq-xu/jvm-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server