Skip to content
VS Code

SFTP for VS Code

io.github.adverstm/sftp-mcp

SFTP-only file access for AI: browse, edit, transfer and sync files, no shell access needed.

client:VS Code transport:stdio runtime:npm

Install SFTP in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "sftp-host",
      "description": "SFTP_HOST",
      "password": true
    },
    {
      "type": "promptString",
      "id": "sftp-port",
      "description": "SFTP_PORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "sftp-user",
      "description": "SFTP_USER",
      "password": true
    },
    {
      "type": "promptString",
      "id": "sftp-password",
      "description": "SFTP_PASSWORD",
      "password": true
    },
    {
      "type": "promptString",
      "id": "sftp-private-key",
      "description": "SFTP_PRIVATE_KEY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "sftp-passphrase",
      "description": "SFTP_PASSPHRASE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "sftp-servers-file",
      "description": "SFTP_SERVERS_FILE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "sftp-read-only",
      "description": "SFTP_READ_ONLY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "sftp-allow-destructive",
      "description": "SFTP_ALLOW_DESTRUCTIVE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "sftp-allowed-write-prefix",
      "description": "SFTP_ALLOWED_WRITE_PREFIX",
      "password": true
    },
    {
      "type": "promptString",
      "id": "sftp-allowed-read-prefix",
      "description": "SFTP_ALLOWED_READ_PREFIX",
      "password": true
    }
  ],
  "servers": {
    "sftp-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "sftp-mcp"
      ],
      "env": {
        "SFTP_HOST": "${input:sftp-host}",
        "SFTP_PORT": "${input:sftp-port}",
        "SFTP_USER": "${input:sftp-user}",
        "SFTP_PASSWORD": "${input:sftp-password}",
        "SFTP_PRIVATE_KEY": "${input:sftp-private-key}",
        "SFTP_PASSPHRASE": "${input:sftp-passphrase}",
        "SFTP_SERVERS_FILE": "${input:sftp-servers-file}",
        "SFTP_READ_ONLY": "${input:sftp-read-only}",
        "SFTP_ALLOW_DESTRUCTIVE": "${input:sftp-allow-destructive}",
        "SFTP_ALLOWED_WRITE_PREFIX": "${input:sftp-allowed-write-prefix}",
        "SFTP_ALLOWED_READ_PREFIX": "${input:sftp-allowed-read-prefix}"
      }
    }
  }
}

VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs

SFTP in other clients