Skip to main content
Glama
ftp-mcp

ftp-mcp

ftp-mcp

MCP server for FTP/FTPS/SFTP operations — full FileZilla feature set for AI agents.

Installation

OpenCode

Add to your opencode.json config:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ftp-mcp": {
      "type": "local",
      "command": ["npx", "-y", "github:kemalabuteliyte/ftp-mcp"],
      "enabled": true
    }
  }
}

Claude Code / Claude Desktop

Add to your MCP config (~/.claude/settings.json or Claude Desktop config):

{
  "mcpServers": {
    "ftp-mcp": {
      "command": "npx",
      "args": ["-y", "github:kemalabuteliyte/ftp-mcp"]
    }
  }
}

Cursor / Windsurf

Add to your MCP settings:

{
  "mcpServers": {
    "ftp-mcp": {
      "command": "npx",
      "args": ["-y", "github:kemalabuteliyte/ftp-mcp"]
    }
  }
}

Manual install

npm install -g github:kemalabuteliyte/ftp-mcp

Then use ftp-mcp as the command in any MCP client config.

Related MCP server: MCP ShellKeeper

Features

36 tools covering all FileZilla operations:

Connection Management

  • ftp_connect — Connect to FTP/FTPS/SFTP server

  • ftp_disconnect — Close a connection

  • ftp_list_connections — List active connections

  • ftp_connection_info — Get connection details

Site Manager

  • ftp_add_site — Save connection profile

  • ftp_remove_site — Delete saved site

  • ftp_list_sites — List saved profiles

  • ftp_edit_site — Update site config

Navigation

  • ftp_pwd — Print working directory

  • ftp_cd — Change directory

  • ftp_list — List directory (permissions, size, date)

  • ftp_tree — Recursive tree view

File Operations

  • ftp_upload — Upload file (binary/ascii/auto)

  • ftp_download — Download file

  • ftp_delete — Delete file

  • ftp_rename — Rename file/directory

  • ftp_move — Move file

  • ftp_copy — Copy file on server

  • ftp_read — Read remote file contents

  • ftp_write — Write content to remote file

  • ftp_append — Append to remote file

  • ftp_stat — Get file info

  • ftp_exists — Check if path exists

Directory Operations

  • ftp_mkdir — Create directory (recursive option)

  • ftp_rmdir — Remove directory (recursive option)

  • ftp_dir_size — Calculate directory size

Bulk Transfers

  • ftp_upload_directory — Upload entire directory

  • ftp_download_directory — Download entire directory

  • ftp_sync — Sync local/remote directories

  • ftp_mirror — Mirror directories (one-way sync with delete)

Permissions

  • ftp_chmod — Change permissions (recursive option)

  • ftp_chown — Change ownership (SFTP only)

Search & Compare

  • ftp_find — Search files by name pattern

  • ftp_grep — Search file contents on server

  • ftp_compare — Compare local vs remote directories

  • ftp_checksum — File checksum verification

Protocols

Protocol

Library

Default Port

FTP

basic-ftp

21

FTPS

basic-ftp

990

SFTP

ssh2-sftp-client

22

Multi-Server Support

Connect to multiple servers simultaneously with named connections:

ftp_connect(name: "prod", host: "prod.example.com", protocol: "sftp", ...)
ftp_connect(name: "staging", host: "staging.example.com", protocol: "ftp", ...)
ftp_list(connection: "prod", path: "/var/www")
ftp_sync(connection: "staging", localPath: "./dist", remotePath: "/public_html", direction: "local-to-remote")

Site Manager

Save frequently used connections to ~/.ftp-mcp/sites.json:

ftp_add_site(name: "myserver", host: "example.com", protocol: "sftp", username: "deploy", privateKeyPath: "~/.ssh/id_rsa")
ftp_connect(name: "session1", site: "myserver")

License

MIT

Available Tools

36 tools
ftp_add_siteC

Save a connection profile to the site manager

Inputs: host (required), name (required), protocol (required), username (required), +5 more.

ftp_appendA

Append content to an existing remote file

Inputs: path (required), content (required), connection (required).

ftp_cdB

Change the remote working directory

Inputs: path (required), connection (required).

ftp_checksumB

Calculate checksum of a remote file for integrity verification

Inputs: path (required), connection (required), algorithm.

ftp_chmodC

Change file or directory permissions (e.g., 755, 644)

Inputs: mode (required), path (required), connection (required), recursive.

ftp_chownA

Change file ownership (SFTP only)

Inputs: gid (required), uid (required), path (required), connection (required).

ftp_compareC

Compare local and remote directories to find differences

Inputs: localPath (required), connection (required), remotePath (required), recursive.

ftp_connectB

Connect to an FTP/FTPS/SFTP server using credentials or a saved site name

Inputs: name (required), host, port, site, +7 more.

ftp_connection_infoC

Get detailed info about a specific connection

Inputs: name (required).

ftp_copyA

Copy a remote file (downloads then re-uploads to new location)

Inputs: destPath (required), connection (required), sourcePath (required).

ftp_deleteB

Delete a remote file

Inputs: path (required), connection (required).

ftp_dir_sizeC

Calculate the total size of a remote directory recursively

Inputs: path (required), connection (required).

ftp_disconnectA

Disconnect a named connection

Inputs: name (required).

ftp_downloadB

Download a remote file to a local path

Inputs: localPath (required), connection (required), remotePath (required).

ftp_download_directoryB

Download an entire remote directory to a local path recursively

Inputs: localPath (required), connection (required), remotePath (required), overwrite.

ftp_edit_siteB

Update specific fields of a saved site profile

Inputs: name (required), host, port, password, +5 more.

ftp_existsB

Check if a remote path exists

Inputs: path (required), connection (required).

ftp_findA

Search for files by name pattern (glob) recursively on the remote server

Inputs: pattern (required), connection (required), path, type, +2 more.

ftp_grepB

Search for text content within remote files (downloads and searches each file)

Inputs: pattern (required), connection (required), path, maxDepth, +3 more.

ftp_listA

List directory contents with details (permissions, size, date, type)

Inputs: connection (required), path, showHidden.

ftp_list_connectionsA

List all active connections with status

Inputs: no named parameters.

ftp_list_sitesA

List all saved connection profiles

Inputs: no named parameters.

ftp_mirrorB

Mirror a remote directory to local or vice versa (one-way sync with delete)

Inputs: direction (required), localPath (required), connection (required), remotePath (required), +1 more.

ftp_mkdirB

Create a remote directory

Inputs: path (required), connection (required), recursive.

ftp_moveB

Move a remote file to a new location

Inputs: destPath (required), connection (required), sourcePath (required).

ftp_pwdA

Print the current working directory on the remote server

Inputs: connection (required).

ftp_readB

Read the contents of a remote text file

Inputs: path (required), connection (required), maxSize.

ftp_remove_siteA

Remove a saved site from the site manager

Inputs: name (required).

ftp_renameC

Rename a remote file or directory

Inputs: newPath (required), oldPath (required), connection (required).

ftp_rmdirC

Remove a remote directory

Inputs: path (required), connection (required), recursive.

ftp_statB

Get file or directory info (size, modified date, permissions, type)

Inputs: path (required), connection (required).

ftp_syncB

Synchronize local and remote directories (like FileZilla synchronized browsing)

Inputs: direction (required), localPath (required), connection (required), remotePath (required), +2 more.

ftp_treeA

Recursively list directory tree structure with depth limit

Inputs: connection (required), path, maxDepth, showFiles.

ftp_uploadB

Upload a local file to the remote server

Inputs: localPath (required), connection (required), remotePath (required), mode.

ftp_upload_directoryB

Upload an entire local directory to the remote server recursively

Inputs: localPath (required), connection (required), remotePath (required), overwrite.

ftp_writeC

Write content directly to a remote file

Inputs: path (required), content (required), connection (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 36 tools

    Disambiguation2/5

    Several tools have overlapping purposes, notably ftp_move vs ftp_rename, ftp_sync vs ftp_mirror, and ftp_exists vs ftp_stat. While descriptions clarify some differences, the boundaries between move/rename and sync/mirror remain ambiguous enough to cause misselection.

    Naming Consistency4/5

    The vast majority of tools follow a consistent ftp_<verb>_<noun> snake_case pattern, such as ftp_add_site, ftp_upload_directory, and ftp_list_connections. Minor deviations like ftp_pwd, ftp_cd, ftp_tree, and ftp_connection_info break the verb_noun convention, but the overall pattern is predictable.

    Tool Count2/5

    With 36 tools, the server is over-scoped for an FTP MCP. Many functions overlap, and the count exceeds the 25+ threshold where the tool set becomes heavy and harder to navigate, even though FTP supports a wide range of operations.

    Completeness4/5

    The tool surface covers the core FTP lifecycle well: connection management, site profiles, navigation, file/directory CRUD, uploads/downloads, sync, permissions, search, and integrity checks. A notable gap is the lack of a recursive directory delete operation, which would require manual traversal with list/delete.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      A
      maintenance
      Enables Claude to interact with FTP servers through natural language commands, allowing users to list directories, download/upload files, create directories, and delete files/directories on FTP servers.
      11
      568 npm
      37
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to maintain persistent SSH terminal sessions and transfer files to/from remote servers. Allows stateful command execution, natural language server management, and seamless file operations through SSH connections.
      5 npm
      36
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Enables AI assistants to securely connect to and manage remote servers via SSH, supporting command execution, file transfers via SFTP, and multi-server management with both password and SSH key authentication.
      9
      62 npm
      2
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Enables FTP file operations such as upload, download, list, and delete directly from Claude Desktop or Claude CLI.
      15
      MIT