Skip to main content
Glama

ssh_set_working_directory

Change the current working directory for an SSH connection to navigate remote server file systems and execute commands from specific locations.

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

  • The handler function for 'ssh_set_working_directory' that parses input using SetWorkingDirectorySchema, retrieves the connection context, verifies the directory exists on the remote server via SSH command, updates the currentWorkingDirectory in the context if valid, and returns a 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 the input parameters for the ssh_set_working_directory tool: connectionId (string) and workingDirectory (string). Used for input 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:421-431 (registration)
    Tool registration in the ListTools response, defining name, description, and inputSchema for ssh_set_working_directory.
    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 case in the CallToolRequestSchema handler that routes calls to ssh_set_working_directory to the handleSetWorkingDirectory method.
    case 'ssh_set_working_directory': return await this.handleSetWorkingDirectory(args);
  • Interface defining ConnectionContext which stores the currentWorkingDirectory used by the ssh_set_working_directory tool.
    interface ConnectionContext { ssh: NodeSSH; currentWorkingDirectory?: string; defaultWorkingDirectory?: string; }

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