MCP Server for FTP Access
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FTP_HOST | No | FTP server hostname or IP address | localhost |
| FTP_PORT | No | FTP server port | 21 |
| FTP_USER | No | FTP username (supports encryption) | anonymous |
| FTP_SECURE | No | Use secure FTP (FTPS), ignored when FTP_PROTOCOL=sftp | false |
| FTP_PASSWORD | No | FTP password (supports encryption) | |
| FTP_PROTOCOL | No | Protocol to use: ftp or sftp | ftp |
| FTP_PASSPHRASE | No | Passphrase for the SSH private key (supports encryption) | |
| FTP_ENCRYPTION_KEY | No | 64-character hex AES-256 key for decrypting credentials | (disabled) |
| FTP_PRIVATE_KEY_PATH | No | Path to SSH private key for SFTP | (auto-detect) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list-directoryB | List contents of an FTP directory |
| download-fileA | Download a file from the FTP server. Text files are returned as-is; binary files are returned base64-encoded. |
| upload-fileA | Upload a file to the FTP server. Pass encoding "base64" to upload binary content. |
| upload-local-fileA | Upload a file from this computer to the FTP server by path, streamed, so file size is not limited by the request. Only files inside the directories listed in FTP_LOCAL_ROOTS can be uploaded. |
| download-to-localA | Download a file from the FTP server straight to a path on this computer, streamed, without returning its contents. Only paths inside the directories listed in FTP_LOCAL_ROOTS can be written. |
| create-directoryB | Create a new directory on the FTP server |
| delete-fileB | Delete a file from the FTP server |
| delete-directoryC | Delete a directory from the FTP server |
| rename-fileB | Rename or move a file or directory on the FTP server |
| edit-fileA | Edit a text file on the FTP server by replacing an exact string, without re-uploading the whole file content. oldText must match exactly (including whitespace) and be unique in the file unless replaceAll is set. |
| append-fileA | Append content to the end of a file on the FTP server (creates the file if it does not exist). Pass encoding "base64" for binary content. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Most tools target distinct FTP actions, but upload-file/upload-local-file and download-file/download-to-local overlap conceptually. Their descriptions clarify the differences (streaming, local path restrictions, returned content), so an agent can distinguish them with some care.
Names follow a mostly consistent hyphenated verb-noun pattern such as rename-file, create-directory, delete-file, and list-directory. Minor deviations like upload-local-file and download-to-local are still readable and do not mix naming conventions.
The 11 tools are well-scoped for an FTP access server, covering distinct file and directory operations without obvious bloat. Each tool has a clear role in the surface.
The set covers the core FTP lifecycle: list, create/delete directories, upload/download, append, edit, rename, and delete files. Minor gaps such as stat/permission changes or copy operations exist, but agents can work around them.