ssh_set_working_directory
Change the current working directory for an SSH connection to navigate remote file systems efficiently during operations.
Instructions
Set the current working directory for a connection
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| connectionId | Yes | SSH connection ID | |
| workingDirectory | Yes | Working directory path to set as current |
Implementation Reference
- src/index.ts:1250-1291 (handler)Implements the core logic for the ssh_set_working_directory tool: parses input using schema, retrieves connection context, verifies directory existence via SSH command, updates currentWorkingDirectory in context, and returns success message.private async handleSetWorkingDirectory(args: unknown) { const params = SetWorkingDirectorySchema.parse(args); const context = connectionContexts.get(params.connectionId); if (!context) { throw new McpError( ErrorCode.InvalidParams, `Connection ID '${params.connectionId}' not found` ); } try { // Verify the directory exists const result = await context.ssh.execCommand(`test -d "${params.workingDirectory}" && echo "exists"`); if (result.code !== 0) { throw new McpError( ErrorCode.InvalidParams, `Directory '${params.workingDirectory}' does not exist or is not accessible` ); } // Set the working directory context.currentWorkingDirectory = params.workingDirectory; return { content: [ { type: 'text', text: `Working directory set to: ${params.workingDirectory}`, }, ], }; } catch (error) { if (error instanceof McpError) { throw error; } throw new McpError( ErrorCode.InternalError, `Failed to set working directory: ${error instanceof Error ? error.message : String(error)}` ); } }
- src/index.ts:148-151 (schema)Zod schema defining input parameters for ssh_set_working_directory: connectionId (string) and workingDirectory (string). Used for validation in the handler.const SetWorkingDirectorySchema = z.object({ connectionId: z.string().describe('SSH connection ID'), workingDirectory: z.string().describe('Working directory path to set as current') });
- src/index.ts:420-431 (registration)Tool metadata registration in ListToolsRequestSchema handler, specifying name, description, and inputSchema advertised to clients.{ name: 'ssh_set_working_directory', description: 'Set the current working directory for a connection', inputSchema: { type: 'object', properties: { connectionId: { type: 'string', description: 'SSH connection ID' }, workingDirectory: { type: 'string', description: 'Working directory path to set as current' } }, required: ['connectionId', 'workingDirectory'] }, },
- src/index.ts:513-514 (registration)Dispatch registration in CallToolRequestSchema switch statement, routing calls to the handler function.case 'ssh_set_working_directory': return await this.handleSetWorkingDirectory(args);