ssh_execute
Execute commands on remote SSH servers to perform administrative tasks, run scripts, or manage systems remotely using established SSH connections.
Instructions
Execute a command on a remote SSH server
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Command to execute on remote server | |
| connectionId | Yes | SSH connection ID | |
| cwd | No | Working directory for command execution |
Implementation Reference
- src/index.ts:626-656 (handler)The handler function that parses input using ExecuteCommandSchema, retrieves the SSH connection from the pool, executes the command using ssh.execCommand, and returns stdout, stderr, and exit code.private async handleSSHExecute(args: unknown) { const params = ExecuteCommandSchema.parse(args); const ssh = connectionPool.get(params.connectionId); if (!ssh) { throw new McpError( ErrorCode.InvalidParams, `Connection ID '${params.connectionId}' not found` ); } try { const result = await ssh.execCommand(params.command, { cwd: params.cwd, }); return { content: [ { type: 'text', text: `Command: ${params.command}\nExit Code: ${result.code}\n\nSTDOUT:\n${result.stdout}\n\nSTDERR:\n${result.stderr}`, }, ], }; } catch (error) { throw new McpError( ErrorCode.InternalError, `Command execution failed: ${error instanceof Error ? error.message : String(error)}` ); } }
- src/index.ts:74-78 (schema)Zod schema defining the input parameters for the ssh_execute tool: connectionId (required), command (required), cwd (optional).const ExecuteCommandSchema = z.object({ connectionId: z.string().describe('SSH connection ID'), command: z.string().describe('Command to execute on remote server'), cwd: z.string().optional().describe('Working directory for command execution') });
- src/index.ts:267-277 (registration)Tool registration in the ListTools response, defining name, description, and inputSchema matching the ExecuteCommandSchema.name: 'ssh_execute', description: 'Execute a command on a remote SSH server', inputSchema: { type: 'object', properties: { connectionId: { type: 'string', description: 'SSH connection ID' }, command: { type: 'string', description: 'Command to execute on remote server' }, cwd: { type: 'string', description: 'Working directory for command execution' } }, required: ['connectionId', 'command'] },
- src/index.ts:489-490 (registration)Dispatch case in the CallToolRequest handler that routes ssh_execute calls to the handleSSHExecute method.case 'ssh_execute': return await this.handleSSHExecute(args);