Home / MCP / FTP MCP Server

FTP MCP Server

Provides FTP access via MCP: list, download, upload, create, and delete on FTP servers.

typescript
Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
    "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_USER": "your-username",
                "FTP_PASSWORD": "your-password",
                "FTP_SECURE": "false"
            }
        }
    }
}

This MCP server lets you interact with FTP servers directly from your MCP-compatible client. You can list directories, download and upload files, create folders, and delete items on your FTP server, all through natural-language prompts and MCP tools.

How to use

You use this MCP server by connecting it to your MCP client and providing FTP connection details as environment variables. Once configured, you can perform common FTP actions with natural language commands such as: list the files in a directory, download a file, upload content as a new file, create a directory, or delete files and folders. The client sends your request to the MCP server, which handles the FTP operations and returns results.

How to install

Prerequisites you need before installation are Node.js 16 or higher and an MCP-compatible client such as Claude for Desktop.

Install via Smithery to use the MCP server with your Claude Desktop setup automatically.

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

Build from source

If you prefer building from source, follow these steps for your operating system.

Linux/macOS: clone the repository, install dependencies, and build the project.

# Clone the repository
git clone https://github.com/alxspiker/mcp-server-ftp.git
cd mcp-server-ftp

# Install dependencies
npm install

# Build the project
npm run build

Windows

If you are on Windows, use the build helper script to build the project.

# Clone the repository
git clone https://github.com/alxspiker/mcp-server-ftp.git
cd mcp-server-ftp

# Run the Windows build helper script
build-windows.bat

Configuration

To use the server with Claude for Desktop, add the following configuration to your Claude desktop config. The example shows the required execution command, arguments, and FTP connection details.

{
  "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_USER": "your-username",
        "FTP_PASSWORD": "your-password",
        "FTP_SECURE": "false"
      }
    }
  }
}

Troubleshooting Windows Build Issues

If you encounter build issues on Windows, follow these steps to resolve common problems.

1. Use the provided build-windows.bat script which handles common build issues
2. Make sure Node.js and npm are properly installed
3. Try running the TypeScript compiler directly: `npx tsc`
4. If issues persist, you can use the pre-compiled files in the build directory by running the start script
node path\to\mcp-server-ftp\build\index.js

Security considerations

FTP credentials are stored in the Claude configuration file. Ensure this file has appropriate permissions. Consider using FTPS (secure FTP) by enabling FTP_SECURE if your server supports it. The server creates temporary files for uploads and downloads in your system's temp directory.

Notes

This server is designed to work with MCP clients that support stdio-based local servers. Ensure your environment variables are kept secure and that your FTP credentials are not exposed in logs or shared configurations.

Available tools

list-directory

List contents of an FTP directory to explore files and folders on the server.

download-file

Download a file from the FTP server and return its contents to the client.

upload-file

Upload a new file or overwrite an existing one on the FTP server.

create-directory

Create a new directory on the FTP server.

delete-file

Delete a file from the FTP server.

delete-directory

Delete a directory from the FTP server.