Labsco
MCP SERVER

FTP Access

by alxspiker

List, read, write and edit files on an FTP, FTPS or SFTP server without leaving the conversation.

Editors, Terminals & Local Dev EnvironmentVerified
Summary
One client for all three protocols, with an edit that does not re-upload the file.

edit-file is what separates this from a plain FTP wrapper: an exact string is replaced in place, so fixing a line in a config on a remote host stops meaning download, edit, push the whole thing back. The credential handling is the other half — SSH keys can come from 1Password by reference rather than from disk, and username, password and passphrase can sit in the config as encrypted enc: values with the key in the OS keychain, which is what stops a client config being a plaintext credential store.

What it is

A file-management client for FTP, FTPS and SFTP: directory listings, binary-safe uploads and downloads, exact-text edits in place, appends, renames and moves, directory creation and deletion — over whichever of the three protocols the server speaks.

What you get
  • A remote directory listed
  • A file downloaded — text as it is, binary base64-encoded — and uploaded the same way
  • An exact string replaced inside a remote text file, without re-uploading the whole file
  • Content appended to a file, which is created if it does not exist
  • Files and directories renamed or moved, directories created, and files and directories deleted
  • FTP on port 21, FTPS by turning TLS on over the FTP path, or SFTP on port 22, already encrypted by SSH
  • SFTP authentication by SSH private key or password, with the key taken from FTP_PRIVATE_KEY_PATH or the usual ~/.ssh candidates in order
  • The private key read from 1Password by reference instead of from disk, resolved lazily and held only in memory
  • Credentials stored as AES-256-GCM encrypted enc: values, with the key kept in the OS keychain
Requirements

Node.js 18.14 or newer, run with npx -y mcp-server-ftp over stdio. FTP_HOST, FTP_PORT, FTP_USER and FTP_PASSWORD identify the server; FTP_PROTOCOL picks ftp or sftp, and FTP_SECURE=true enables TLS — which only means anything on the ftp path, since SFTP is encrypted already. For SFTP, FTP_PRIVATE_KEY_PATH takes either a key path or an op:// 1Password reference, which needs the 1Password CLI installed and already authenticated, and FTP_PASSPHRASE unlocks the key. To keep plaintext credentials out of a client config, store them in the enc: format under a 64-character hex FTP_ENCRYPTION_KEY, and hold that key in the OS keychain rather than beside the values it protects. Uploads, downloads and appends may use short-lived local temporary files, removed after each operation.

Setup effort

One command plus a key — npx -y @smithery/cli install alxspikers-team/mcp-server-ftp --client claude, then supply credentials