FTP MCP

Servidor MCP para operações de arquivos FTP — navegar, baixar, enviar e gerenciar arquivos remotos

Documentação

mcp-server-ftp

Um servidor MCP (Model Context Protocol) para operações de arquivos FTP. Navegue, leia, baixe, envie e gerencie arquivos em servidores FTP remotos.

Construído com Rust, rmcp e suppaftp.

Recursos

  • Suporte a múltiplos perfis — configure vários servidores FTP e alterne entre eles
  • Gerenciamento completo de arquivos — liste, leia, baixe, envie, exclua, renomeie e crie diretórios
  • Operações recursivas — baixe ou envie árvores de diretórios inteiras
  • Seguro para binários — modo de transferência binária para downloads/uploads, pré-visualização hexadecimal para arquivos não-texto via read_file
  • Modo passivo/ativo — configurável por perfil
  • Conexão por chamada — cada ferramenta abre uma nova conexão FTP, então não há estado de sessão obsoleto. Operações recursivas mantêm uma conexão durante toda a travessia.

Ferramentas

FerramentaDescrição
list_profilesLista perfis de servidor FTP configurados (sem mostrar senhas)
list_directoryLista arquivos/diretórios em um caminho remoto (tipo, tamanho, data, nome)
read_fileLê um arquivo remoto e retorna o conteúdo como texto
download_fileBaixa um único arquivo remoto para um caminho local
upload_fileEnvia um arquivo local para um caminho remoto
download_directoryBaixa recursivamente um diretório remoto
upload_directoryEnvia recursivamente um diretório local
deleteExclui um arquivo remoto ou diretório vazio
renameRenomeia ou move um arquivo ou diretório remoto
mkdirCria um diretório remoto

Todas as ferramentas aceitam um parâmetro opcional profile. Quando omitido, o default_profile da configuração é usado.

Configuração

Crie um arquivo de configuração TOML em ~/.config/mcp-server-ftp/config.toml:

default_profile = "myserver"

[[profiles]]
name = "myserver"
host = "ftp.example.com"
port = 21
username = "user"
password = "pass"
tls = false
passive = true
timeout_secs = 30

Você pode definir vários blocos [[profiles]] para gerenciar vários servidores FTP.

Campos do perfil

CampoPadrãoDescrição
name(obrigatório)Nome do perfil usado para referenciar este servidor
host(obrigatório)Hostname ou IP do servidor FTP
port21Porta FTP
username""Nome de usuário FTP
password""Senha FTP
tlsfalseHabilitar TLS (ainda não implementado)
passivetrueUsar modo passivo
timeout_secs30Tempo limite de conexão em segundos

Compilação

Requer edição Rust 2024 (1.85+).

cargo build --release

O binário é gerado em target/release/mcp-server-ftp.

Uso com Claude Code

Adicione à sua configuração do servidor MCP:

{
  "mcpServers": {
    "ftp": {
      "command": "/path/to/mcp-server-ftp"
    }
  }
}

Habilite o registro de depuração com a variável de ambiente RUST_LOG:

{
  "mcpServers": {
    "ftp": {
      "command": "/path/to/mcp-server-ftp",
      "env": {
        "RUST_LOG": "debug"
      }
    }
  }
}

Estrutura do Projeto

src/
  main.rs      — Entry point: config load, tracing init, stdio transport
  config.rs    — TOML config parsing, multi-profile support
  server.rs    — MCP tool definitions via rmcp #[tool_router]
  ftp.rs       — Async FTP client wrapper (connect, list, read, download, upload, delete, rename, mkdir)

Licença

MIT