Skip to main content
Glama

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
NameRequiredDescriptionDefault
connectionIdYesSSH connection ID
workingDirectoryYesWorking directory path to set as current

Implementation Reference

  • 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)}`
        );
      }
    }
  • 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);

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/mahathirmuh/mcp-ssh-server'

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