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
| Ferramenta | Descrição |
|---|---|
list_profiles | Lista perfis de servidor FTP configurados (sem mostrar senhas) |
list_directory | Lista arquivos/diretórios em um caminho remoto (tipo, tamanho, data, nome) |
read_file | Lê um arquivo remoto e retorna o conteúdo como texto |
download_file | Baixa um único arquivo remoto para um caminho local |
upload_file | Envia um arquivo local para um caminho remoto |
download_directory | Baixa recursivamente um diretório remoto |
upload_directory | Envia recursivamente um diretório local |
delete | Exclui um arquivo remoto ou diretório vazio |
rename | Renomeia ou move um arquivo ou diretório remoto |
mkdir | Cria 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
| Campo | Padrão | Descrição |
|---|---|---|
name | (obrigatório) | Nome do perfil usado para referenciar este servidor |
host | (obrigatório) | Hostname ou IP do servidor FTP |
port | 21 | Porta FTP |
username | "" | Nome de usuário FTP |
password | "" | Senha FTP |
tls | false | Habilitar TLS (ainda não implementado) |
passive | true | Usar modo passivo |
timeout_secs | 30 | Tempo 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