get_jcmd_output
Execute jcmd subcommands to monitor and diagnose Java processes by providing process ID and optional subcommand parameters.
Instructions
执行 jcmd 子命令
Args:
pid (str): 进程ID,使用字符串形式(如:"12345")
subcommand (Optional[str]): jcmd子命令,如果不指定则执行help命令
Returns:
Dict: 包含jcmd执行结果的字典,包含以下字段:
- raw_output (str): 原始输出
- timestamp (float): 时间戳
- success (bool): 是否成功
- error (Optional[str]): 错误信息
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pid | No | ||
| subcommand | No |
Implementation Reference
- src/jvm_mcp_server/server.py:593-633 (handler)The handler function for the 'get_jcmd_output' MCP tool. Includes registration via @self.mcp.tool() decorator, input validation, and execution logic delegating to JcmdCommand.@self.mcp.tool() def get_jcmd_output(pid: str = "", subcommand: Optional[str] = None) -> Dict: """执行 jcmd 子命令 Args: pid (str): 进程ID,使用字符串形式(如:"12345") subcommand (Optional[str]): jcmd子命令,如果不指定则执行help命令 Returns: Dict: 包含jcmd执行结果的字典,包含以下字段: - raw_output (str): 原始输出 - timestamp (float): 时间戳 - success (bool): 是否成功 - error (Optional[str]): 错误信息 """ try: validated_pid = self._validate_and_convert_id(pid if pid else None, "process ID") if validated_pid is None: return { "raw_output": "", "timestamp": time.time(), "success": False, "error": "Invalid process ID" } except ValueError as e: return { "raw_output": "", "timestamp": time.time(), "success": False, "error": str(e) } cmd = JcmdCommand(self.executor, JcmdFormatter()) result = cmd.execute(str(validated_pid), subcommand=subcommand) return { "raw_output": result.get('output', ''), "timestamp": time.time(), "success": result.get('success', False), "error": result.get('error') }
- Helper class JcmdCommand that constructs the jcmd shell command for a given PID and subcommand.class JcmdCommand(BaseCommand): """Jcmd命令实现""" def __init__(self, executor, formatter): super().__init__(executor, formatter) self.timeout = 30 def get_command(self, pid: str, subcommand: Optional[str] = None, *args, **kwargs) -> str: if subcommand: return f'jcmd {pid} {subcommand}' else: return f'jcmd {pid}'
- Helper class JcmdFormatter that formats the output of jcmd command execution into a dictionary.class JcmdFormatter(OutputFormatter): """Jcmd输出格式化器(仅文本输出)""" def format(self, result: CommandResult) -> Dict[str, Any]: if not result.success: return { "success": False, "error": result.error, "timestamp": result.timestamp.isoformat() } return { "success": True, "output": result.output, "execution_time": result.execution_time, "timestamp": result.timestamp.isoformat() }