ssh_list_files
List files in a directory on a remote server via SSH connection. Specify connection ID and remote path to view directory contents.
Instructions
List files in a directory on the remote server
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| connectionId | Yes | ID of an active SSH connection | |
| remotePath | Yes | Path to the directory on the remote server |
Implementation Reference
- src/index.ts:565-619 (handler)The main handler function that executes the ssh_list_files tool logic: validates the SSH connection, initializes SFTP client, lists directory contents using readdir, formats file information (name, type, size, modified time), and returns the result.private async handleSSHListFiles(params: any) { const { connectionId, remotePath } = params; // Check if the connection exists if (!this.connections.has(connectionId)) { return { content: [{ type: "text", text: `No active SSH connection with ID: ${connectionId}` }], isError: true }; } const { conn } = this.connections.get(connectionId)!; try { // Get SFTP client const sftp: any = await new Promise((resolve, reject) => { conn.sftp((err: Error | undefined, sftp: any) => { if (err) { reject(new Error(`Failed to initialize SFTP: ${err.message}`)); } else { resolve(sftp); } }); }); // List files const files: any = await new Promise((resolve, reject) => { sftp.readdir(remotePath, (err: Error | undefined, list: any[]) => { if (err) { reject(new Error(`Failed to list files: ${err.message}`)); } else { resolve(list); } }); }); const fileList = files.map((file: any) => ({ filename: file.filename, isDirectory: (file.attrs.mode & 16384) === 16384, size: file.attrs.size, lastModified: new Date(file.attrs.mtime * 1000).toISOString() })); return { content: [{ type: "text", text: `Files in ${remotePath}:\n\n${JSON.stringify(fileList, null, 2)}` }] }; } catch (error: any) { return { content: [{ type: "text", text: `Failed to list files: ${error.message}` }], isError: true }; }
- src/index.ts:141-157 (schema)Input schema definition for the ssh_list_files tool in the server's capabilities declaration.ssh_list_files: { description: "List files in a directory on the remote server", inputSchema: { type: "object", properties: { connectionId: { type: "string", description: "ID of an active SSH connection" }, remotePath: { type: "string", description: "Path to the directory on the remote server" } }, required: ["connectionId", "remotePath"] } },
- src/index.ts:284-285 (registration)Registration of the tool handler in the switch statement within the CallToolRequestSchema request handler, dispatching calls to handleSSHListFiles.case 'ssh_list_files': return this.handleSSHListFiles(request.params.arguments);