FTP Access

Proporciona acceso a un servidor FTP para operaciones de archivos.

Documentación

MseeP.ai Security Assessment Badge

Servidor MCP para Acceso FTP, FTPS y SFTP

smithery badge

Este servidor de Protocolo de Contexto de Modelo (MCP) proporciona herramientas de gestión de archivos para servidores FTP, FTPS y SFTP. Admite listado de directorios, descargas/cargas seguras para binarios, ediciones de texto, anexados, renombrados/movimientos, creación de directorios y eliminación.

Soporte de protocolo

  • FTP — FTP tradicional, normalmente en el puerto 21.
  • FTPS — FTP asegurado con TLS. Use FTP_PROTOCOL=ftp y FTP_SECURE=true.
  • SFTP — Protocolo de Transferencia de Archivos SSH, normalmente en el puerto 22. SFTP es un protocolo diferente de FTPS y ya está cifrado por SSH, por lo que FTP_SECURE no se aplica a él.

Características

  • Listar archivos y directorios
  • Descargar y cargar archivos de texto o binarios
  • Editar texto exacto en archivos remotos
  • Anexar a archivos
  • Renombrar o mover archivos/directorios
  • Crear y eliminar directorios
  • Soporte para FTP, FTPS y SFTP
  • Autenticación SFTP por contraseña o clave privada SSH
  • Resolución opcional de clave privada mediante CLI de 1Password
  • Valores de credenciales cifrados con AES-256-GCM
  • Soporte de llavero del sistema operativo para la clave de cifrado

Instalación

Instalación mediante Smithery

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

Requisitos previos

  • Node.js 18.14 o más reciente
  • Un cliente compatible con MCP, como Claude Desktop

Instalación mediante npm

El servidor se publica como mcp-server-ftp:

{
  "mcpServers": {
    "ftp-server": {
      "command": "npx",
      "args": ["-y", "mcp-server-ftp"],
      "env": {
        "FTP_HOST": "ftp.example.com"
      }
    }
  }
}

Compilación desde el código fuente

git clone https://github.com/alxspiker/mcp-server-ftp.git
cd mcp-server-ftp
npm install
npm run build

Configuración

Ejemplo FTP

{
  "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_PROTOCOL": "ftp",
        "FTP_USER": "your-username",
        "FTP_PASSWORD": "your-password"
      }
    }
  }
}

Ejemplo FTPS

FTPS usa el cliente FTP normal con TLS habilitado:

{
  "mcpServers": {
    "ftp-server": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server-ftp/build/index.js"],
      "env": {
        "FTP_HOST": "ftps.example.com",
        "FTP_PORT": "21",
        "FTP_PROTOCOL": "ftp",
        "FTP_SECURE": "true",
        "FTP_USER": "your-username",
        "FTP_PASSWORD": "your-password"
      }
    }
  }
}

FTP_SECURE solo tiene sentido cuando FTP_PROTOCOL=ftp. Se ignora en la ruta SFTP porque SFTP ya está cifrado sobre SSH.

Para un servidor FTPS de confianza con un certificado autofirmado, agregue "FTP_TLS_REJECT_UNAUTHORIZED": "false" al objeto env de FTPS. Esto mantiene el cifrado TLS pero deshabilita la verificación de certificado y nombre de host, así que úselo solo cuando confíe de forma independiente en el servidor y la red. La verificación permanece habilitada de forma predeterminada. Esta configuración requiere FTP_SECURE=true y FTP_PROTOCOL=ftp.

Ejemplo SFTP

{
  "mcpServers": {
    "ftp-server": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server-ftp/build/index.js"],
      "env": {
        "FTP_HOST": "sftp.example.com",
        "FTP_PORT": "22",
        "FTP_PROTOCOL": "sftp",
        "FTP_USER": "your-username",
        "FTP_PRIVATE_KEY_PATH": "~/.ssh/id_ed25519",
        "FTP_PASSPHRASE": "your-key-passphrase"
      }
    }
  }
}

Opciones de configuración

Variable de entornoSe aplica aDescripciónPredeterminado
FTP_HOSTtodosNombre de host o dirección IP del servidorlocalhost
FTP_PORTtodosPuerto del servidor21 para FTP/FTPS, 22 para SFTP
FTP_PROTOCOLtodosftp o sftpftp
FTP_USERtodosNombre de usuario; admite valores enc: cifradosanonymous
FTP_PASSWORDtodosContraseña; admite valores enc: cifradosvacío
FTP_SECUREsolo FTP/FTPSHabilita TLS/FTPS para el cliente FTPfalse
FTP_TLS_REJECT_UNAUTHORIZEDsolo FTPSVerifica el certificado y el nombre de host FTPS; false permite un certificado autofirmado de confianza pero deshabilita las comprobaciones de identidadtrue
FTP_PRIVATE_KEY_PATHsolo SFTPRuta de clave privada SSH o referencia de secreto de 1Password op://detección automática
FTP_PASSPHRASEsolo SFTPFrase de contraseña de clave privada SSH; admite valores enc: cifradosvacío
FTP_ENCRYPTION_KEYcredenciales cifradasClave AES-256 hexadecimal de 64 caracteres. Prefiera el llavero del sistema operativo o una variable de entorno global para instalaciones locales.deshabilitado

Autenticación SFTP

SFTP admite autenticación por clave privada y contraseña.

El servidor busca una clave privada en este orden:

  1. FTP_PRIVATE_KEY_PATH, si está configurada
  2. ~/.ssh/id_ed25519
  3. ~/.ssh/id_rsa
  4. ~/.ssh/id_ecdsa

Si no se encuentra ninguna clave, se usa FTP_PASSWORD.

Lectura de una clave SFTP desde 1Password

FTP_PRIVATE_KEY_PATH puede contener una referencia de secreto de 1Password en lugar de una ruta de sistema de archivos:

"FTP_PRIVATE_KEY_PATH": "op://Private/my-server/private key"

Requisitos:

  • La CLI de 1Password (op) debe estar instalada y disponible en PATH.
  • La CLI ya debe poder autenticarse, ya sea mediante la integración de la aplicación de escritorio o OP_SERVICE_ACCOUNT_TOKEN.

La clave se resuelve de forma diferida, se almacena en caché en memoria para el proceso y no se escribe en disco.

Si el servidor SSH rechaza el formato de clave exportado predeterminado de 1Password, solicite el formato OpenSSH:

"FTP_PRIVATE_KEY_PATH": "op://Private/my-server/private key?ssh-format=openssh"

Cifrado de credenciales

FTP_USER, FTP_PASSWORD y FTP_PASSPHRASE pueden almacenarse como valores cifrados AES-256-GCM usando el formato enc:.

Generar una clave de cifrado

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Almacenar la clave en el llavero del sistema operativo (recomendado para instalaciones locales)

npm run build
npm run store-key -- <your-64-char-hex-key>

El servidor carga la clave desde el Llavero de macOS, el Administrador de Credenciales de Windows o el Servicio Secreto de Linux cuando esté disponible.

Alternativamente, configure la clave globalmente en el entorno del proceso:

export FTP_ENCRYPTION_KEY=<your-64-char-hex-key>

No coloque FTP_ENCRYPTION_KEY junto a las credenciales cifradas en la misma configuración local de MCP a menos que su entorno de implementación no le ofrezca un mecanismo separado de almacenamiento de secretos.

Cifrar un valor

npm run build
FTP_ENCRYPTION_KEY=<your-64-char-hex-key> npm run encrypt-env -- <plaintext-value>

Si la clave ya está disponible desde el llavero del sistema operativo o el entorno de shell:

npm run encrypt-env -- <plaintext-value>

Herramientas disponibles

HerramientaDescripción
list-directoryListar el contenido de un directorio remoto
download-fileDescargar un archivo; el contenido binario se devuelve como base64
upload-fileCargar contenido de texto o binario codificado en base64
create-directoryCrear un directorio
delete-fileEliminar un archivo
delete-directoryEliminar un directorio
rename-fileRenombrar o mover un archivo o directorio
edit-fileReemplazar texto exacto en un archivo de texto remoto
append-fileAnexar contenido a un archivo, creándolo si es necesario

Las llamadas a herramientas devuelven structuredContent legibles por máquina, y las nueve herramientas anuncian esquemas de salida. La versión 1.2.2 introdujo un shim de compatibilidad que garantiza que los esquemas anunciados usen el dialecto JSON Schema 2020-12 requerido por los clientes MCP actuales.

Notas de seguridad

  • Prefiera SFTP cuando esté disponible; usa cifrado SSH y autenticación por clave sin configuración de certificado FTPS.
  • Use FTP_SECURE=true solo para servidores FTPS que usan la ruta del protocolo FTP.
  • Use cifrado de credenciales cuando una configuración de cliente contenga credenciales en texto plano.
  • Las transferencias FTP y SFTP pueden usar archivos temporales locales de corta duración para operaciones de carga/descarga/anexado; esos archivos se eliminan durante la limpieza después de cada operación.

Solución de problemas de compilaciones de Windows

  1. Confirme que Node.js 18.14 o más reciente y npm estén instalados.
  2. Ejecute npm install.
  3. Ejecute npm run build o npx tsc.
  4. Inicie el servidor compilado con node build/index.js.

Licencia

MIT