Skip to main content
Glama
kemalabuteliyte

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

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/kemalabuteliyte/ftp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server