ssh_docker_status
Monitor Docker container status in a specified working directory via SSH connection. Ideal for remote server management and ensuring container health.
Instructions
Check Docker container status in working directory
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| connectionId | Yes | SSH connection ID | |
| workingDirectory | No | Working directory to check (defaults to current) |
Input Schema (JSON Schema)
{
"properties": {
"connectionId": {
"description": "SSH connection ID",
"type": "string"
},
"workingDirectory": {
"description": "Working directory to check (defaults to current)",
"type": "string"
}
},
"required": [
"connectionId"
],
"type": "object"
}
Implementation Reference
- src/index.ts:1440-1483 (handler)The handler function that executes the ssh_docker_status tool. It parses input using DockerStatusSchema, retrieves the SSH connection context, executes 'docker ps -a' and optionally 'docker-compose ps' in the working directory, and returns the status output.private async handleDockerStatus(args: unknown) { const params = DockerStatusSchema.parse(args); const context = connectionContexts.get(params.connectionId); if (!context) { throw new McpError( ErrorCode.InvalidParams, `Connection ID '${params.connectionId}' not found` ); } try { const workingDir = params.workingDirectory || context.currentWorkingDirectory; // Get Docker container status const psResult = await context.ssh.execCommand('docker ps -a', { cwd: workingDir, }); // Get Docker Compose status if compose file exists let composeStatus = ''; if (workingDir) { const composeResult = await context.ssh.execCommand('docker-compose ps', { cwd: workingDir, }); if (composeResult.code === 0) { composeStatus = `\n\nDocker Compose Status:\n${composeResult.stdout}`; } } return { content: [ { type: 'text', text: `Docker Status (${workingDir || 'current directory'}):\n\nContainer Status:\n${psResult.stdout}${composeStatus}`, }, ], }; } catch (error) { throw new McpError( ErrorCode.InternalError, `Failed to get Docker status: ${error instanceof Error ? error.message : String(error)}` ); }
- src/index.ts:171-174 (schema)Zod schema for input validation of the ssh_docker_status tool parameters.const DockerStatusSchema = z.object({ connectionId: z.string().describe('SSH connection ID'), workingDirectory: z.string().optional().describe('Working directory to check (defaults to current)') });
- src/index.ts:464-475 (registration)Tool registration in the ListToolsRequestSchema handler, defining name, description, and input schema for ssh_docker_status.{ name: 'ssh_docker_status', description: 'Check Docker container status in working directory', inputSchema: { type: 'object', properties: { connectionId: { type: 'string', description: 'SSH connection ID' }, workingDirectory: { type: 'string', description: 'Working directory to check (defaults to current)' } }, required: ['connectionId'] }, },
- src/index.ts:519-520 (registration)Dispatch in the CallToolRequestSchema switch statement that routes calls to the handleDockerStatus handler.case 'ssh_docker_status': return await this.handleDockerStatus(args);