FTP Server Manager

by alxspiker

3 stars
Not rated
GitHub

About

Enables direct FTP and FTPS server management through natural language commands for remote file operations including directory listing, file transfers, and folder creation.

Details

Author
alxspiker
Repository
alxspiker/mcp-server-ftp
GitHub stars
3
License
MIT License
Categories
File Management, Other, AI, Design, Developer Tools, Infrastructure, Frontend

- List files and directories
- Download and upload text or binary files
- Edit exact text in remote files
- Append to files
- Rename or move files/directories
- Create and delete directories
- FTP, FTPS, and SFTP support
- SFTP password or SSH private-key authentication
- Optional 1Password CLI private-key resolution
- AES-256-GCM encrypted credential values
- OS-keychain support for the encryption key

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name FTP Server Manager
    Command (node, npx, python, etc.) node
    Arguments
    • Argument 1 /absolute/path/to/mcp-server-ftp/build/index.js
    Environment
    • FTP_HOST ftp.example.com
    • FTP_PORT 21
    • FTP_USER your-username
    • FTP_PASSWORD your-password
    • FTP_PROTOCOL ftp

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

npx -y @smithery/cli install alxspikers-team/mcp-server-ftp --client claude

The server is published as mcp-server-ftp:

{
  "mcpServers": {
    "ftp-server": {
      "command": "npx",
      "args": ["-y", "mcp-server-ftp"],
      "env": {
        "FTP_HOST": "ftp.example.com"
      }
    }
  }
}

| Environment variable | Applies to | Description | Default |
|---|---|---|---|
| FTP_HOST | all | Server hostname or IP address | localhost |
| FTP_PORT | all | Server port | 21 for FTP/FTPS, 22 for SFTP |
| FTP_PROTOCOL | all | ftp or sftp | ftp |
| FTP_USER | all | Username; supports encrypted enc: values | anonymous |
| FTP_PASSWORD | all | Password; supports encrypted enc: values | empty |
| FTP_SECURE | FTP/FTPS only | Enables TLS/FTPS for the FTP client | false |
| FTP_PRIVATE_KEY_PATH | SFTP only | SSH private-key path or op:// 1Password secret reference | auto-detect |
| FTP_PASSPHRASE | SFTP only | SSH private-key passphrase; supports encrypted enc: values | empty |
| FTP_ENCRYPTION_KEY | encrypted credentials | 64-character hex AES-256 key. Prefer the OS keychain or a global environment variable for local installs. | disabled |

SFTP supports private-key and password authentication.

The server looks for a private key in this order:

1. FTP_PRIVATE_KEY_PATH, if set
2. ~/.ssh/id_ed25519
3. ~/.ssh/id_rsa
4. ~/.ssh/id_ecdsa

If no key is found, FTP_PASSWORD is used.

list-directory

List contents of a remote directory

download-file

Download a file; binary content is returned as base64

upload-file

Upload text or base64-encoded binary content

create-directory

Create a directory

delete-file

Delete a file

delete-directory

Delete a directory

rename-file

Rename or move a file or directory

edit-file

Replace exact text in a remote text file

append-file

Append content to a file, creating it if needed

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "ftp server manager": {
            "env": {
                "FTP_HOST": "ftp.example.com",
                "FTP_PORT": "21",
                "FTP_USER": "your-username",
                "FTP_PASSWORD": "your-password",
                "FTP_PROTOCOL": "ftp"
            },
            "args": [
                "/absolute/path/to/mcp-server-ftp/build/index.js"
            ],
            "command": "node"
        }
    }
}

Linux

{
    "env": {
        "FTP_HOST": "ftp.example.com",
        "FTP_PORT": "21",
        "FTP_USER": "your-username",
        "FTP_PASSWORD": "your-password",
        "FTP_PROTOCOL": "ftp"
    },
    "args": [
        "/absolute/path/to/mcp-server-ftp/build/index.js"
    ],
    "command": "node"
}

Macos

{
    "env": {
        "FTP_HOST": "ftp.example.com",
        "FTP_PORT": "21",
        "FTP_USER": "your-username",
        "FTP_PASSWORD": "your-password",
        "FTP_PROTOCOL": "ftp"
    },
    "args": [
        "/absolute/path/to/mcp-server-ftp/build/index.js"
    ],
    "command": "node"
}

Windows

{
    "env": {
        "FTP_HOST": "ftp.example.com",
        "FTP_PORT": "21",
        "FTP_USER": "your-username",
        "FTP_PASSWORD": "your-password",
        "FTP_PROTOCOL": "ftp"
    },
    "args": [
        "/absolute/path/to/mcp-server-ftp/build/index.js"
    ],
    "command": "node"
}

MCP Server for FTP, FTPS, and SFTP Access

This Model Context Protocol (MCP) server provides file-management tools for FTP, FTPS, and SFTP servers. It supports directory listing, binary-safe downloads/uploads, text edits, appends, renames/moves, directory creation, and deletion.

- FTP— traditional FTP, normally on port 21.
- FTPS— FTP secured with TLS. UseFTP_PROTOCOL=ftpandFTP_SECURE=true.
- SFTP— SSH File Transfer Protocol, normally on port 22. SFTP is a different protocol from FTPS and is already encrypted by SSH, soFTP_SECUREdoes not apply to it.

- List files and directories
- Download and upload text or binary files
- Edit exact text in remote files
- Append to files
- Rename or move files/directories
- Create and delete directories
- FTP, FTPS, and SFTP support
- SFTP password or SSH private-key authentication
- Optional 1Password CLI private-key resolution
- AES-256-GCM encrypted credential values
- OS-keychain support for the encryption key

npx -y @smithery/cli install alxspikers-team/mcp-server-ftp --client claude

- Node.js 18.14 or newer
- An MCP-compatible client such as Claude Desktop

The server is published asmcp-server-ftp:

{ "mcpServers": { "ftp-server": { "command": "npx", "args": ["-y", "mcp-server-ftp"], "env": { "FTP_HOST": "ftp.example.com" } } } }
git clone https://github.com/alxspiker/mcp-server-ftp.git cd mcp-server-ftp npm install npm run build
{ "mcpServers": { "ftp-server": { "command": "node", "args": ["/absolute/path/to/mcp-server-ftp/build/index.js"], "env": { "FTP_HOST": "ftp.example.com", "FTP_PORT": "21", "FTP_PROTOCOL": "ftp", "FTP_USER": "your-username", "FTP_PASSWORD": "your-password" } } } }

FTPS uses the normal FTP client with TLS enabled:

{ "mcpServers": { "ftp-server": { "command": "node", "args": ["/absolute/path/to/mcp-server-ftp/build/index.js"], "env": { "FTP_HOST": "ftps.example.com", "FTP_PORT": "21", "FTP_PROTOCOL": "ftp", "FTP_SECURE": "true", "FTP_USER": "your-username", "FTP_PASSWORD": "your-password" } } } }

FTP_SECUREis only meaningful whenFTP_PROTOCOL=ftp. It is ignored by the SFTP path because SFTP is already encrypted over SSH.

{ "mcpServers": { "ftp-server": { "command": "node", "args": ["/absolute/path/to/mcp-server-ftp/build/index.js"], "env": { "FTP_HOST": "sftp.example.com", "FTP_PORT": "22", "FTP_PROTOCOL": "sftp", "FTP_USER": "your-username", "FTP_PRIVATE_KEY_PATH": "~/.ssh/id_ed25519", "FTP_PASSPHRASE": "your-key-passphrase" } } } }

SFTP supports private-key and password authentication.

The server looks for a private key in this order:
- FTP_PRIVATE_KEY_PATH, if set
- ~/.ssh/id_ed25519
- ~/.ssh/id_rsa
- ~/.ssh/id_ecdsa

If no key is found,FTP_PASSWORDis used.

FTP_PRIVATE_KEY_PATHmay contain a 1Password secret reference instead of a filesystem path:

"FTP_PRIVATE_KEY_PATH": "op://Private/my-server/private key"

- The 1Password CLI (op) must be installed and available onPATH.
- The CLI must already be able to authenticate, either through the desktop-app integration orOP_SERVICE_ACCOUNT_TOKEN.

The key is resolved lazily, cached in memory for the process, and is not written to disk.

If the SSH server rejects 1Password's default exported key format, request OpenSSH format:

"FTP_PRIVATE_KEY_PATH": "op://Private/my-server/private key?ssh-format=openssh"

FTP_USER,FTP_PASSWORD, andFTP_PASSPHRASEmay be stored as AES-256-GCM encrypted values using theenc:format.

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Store the key in the OS keychain (recommended for local installs)

npm run build npm run store-key -- <your-64-char-hex-key>

The server loads the key from macOS Keychain, Windows Credential Manager, or Linux Secret Service when available.

Alternatively, set the key globally in the process environment:

export FTP_ENCRYPTION_KEY=<your-64-char-hex-key>

Do not placeFTP_ENCRYPTION_KEYbeside the encrypted credentials in the same local MCP config unless your deployment environment gives you no separate secret-storage mechanism.

npm run build FTP_ENCRYPTION_KEY=<your-64-char-hex-key> npm run encrypt-env -- <plaintext-value>

If the key is already available from the OS keychain or shell environment:

npm run encrypt-env -- <plaintext-value>

- Prefer SFTP when available; it uses SSH encryption and key authentication without FTPS certificate configuration.
- UseFTP_SECURE=trueonly for FTPS servers using the FTP protocol path.
- Use credential encryption when a client configuration would otherwise contain plaintext credentials.
- FTP and SFTP transfers may use short-lived local temporary files for upload/download/append operations; those files are removed during cleanup after each operation.
- Confirm Node.js 18.14 or newer and npm are installed.
- Runnpm install.
- Runnpm run buildornpx tsc.
- Start the compiled server withnode build/index.js.

An MCP server that gives any MCP client read access to an SMB/CIFS file share servers

Manage files and downloads on Synology NAS devices using an AI assistant.

Upload, retrieve, pin, and manage encrypted files on IPFS via a simple API accessible as MCP tools

MCP server that moves files between your filesystem and cloud storage.

Explore and retrieve content from Volcengine's Tinder Object Storage (TOS) using natural language queries.

A cross-platform filesystem server for Linux, macOS, and Windows with secure path restrictions.

A server providing comprehensive file system operations, automatically downloaded and built on first use.

A server for performing filesystem operations such as reading/writing files, managing directories, and searching.

A server for comprehensive file and directory management on the local file system.

A server for local folder operations and file system access.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.