Skip to main content
Glama
alxspiker

MCP Server for FTP Access

FTP 액세스를 위한 MCP 서버

이 MCP(Model Context Protocol) 서버는 FTP 서버와 상호 작용하기 위한 도구를 제공합니다. 이를 통해 Claude.app에서 FTP 서버의 디렉터리 목록을 확인하고, 파일을 다운로드 및 업로드하며, 디렉터리를 생성하고, 파일/디렉터리를 삭제할 수 있습니다.

기능

  • 디렉터리 내용 나열: FTP 서버의 파일 및 폴더 보기

  • 파일 다운로드: FTP 서버에서 파일 내용 가져오기

  • 파일 업로드: 새 파일 생성 또는 기존 파일 업데이트

  • 디렉터리 생성: FTP 서버에 새 폴더 만들기

  • 파일/디렉터리 삭제: 파일 또는 디렉터리 제거

Related MCP server: Notion MCP Server

설치

Smithery를 통한 설치

Smithery를 통해 Claude Desktop용 mcp-server-ftp를 자동으로 설치하려면:

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

사전 요구 사항

  • Node.js 16 이상

  • Claude for Desktop (또는 기타 MCP 호환 클라이언트)

소스에서 빌드

Linux/macOS

# 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

# 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

build-windows.bat 스크립트는 Windows 시스템에서 종속성 설치 및 빌드를 처리하며, TypeScript 컴파일러에 문제가 있을 경우를 대비한 대체 옵션을 제공합니다.

구성

이 서버를 Claude for Desktop과 함께 사용하려면 구성 파일에 추가하십시오:

MacOS/Linux

~/Library/Application Support/Claude/claude_desktop_config.json을 편집합니다:

{
  "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"
      }
    }
  }
}

Windows

%APPDATA%\Claude\claude_desktop_config.json을 편집합니다:

{
  "mcpServers": {
    "ftp-server": {
      "command": "node",
      "args": ["C:\\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"
      }
    }
  }
}

Windows 빌드 문제 해결

Windows에서 빌드 문제가 발생하는 경우:

  1. 일반적인 빌드 문제를 처리하는 제공된 build-windows.bat 스크립트를 사용하십시오.

  2. Node.js와 npm이 올바르게 설치되었는지 확인하십시오.

  3. TypeScript 컴파일러를 직접 실행해 보십시오: npx tsc

  4. 여전히 문제가 있는 경우, 다음을 실행하여 build 디렉터리에 있는 사전 컴파일된 파일을 사용할 수 있습니다:

    node path\to\mcp-server-ftp\build\index.js

구성 옵션

환경 변수

설명

기본값

FTP_HOST

FTP 서버 호스트 이름 또는 IP 주소

localhost

FTP_PORT

FTP 서버 포트

21

FTP_USER

FTP 사용자 이름 (암호화 지원)

anonymous

FTP_PASSWORD

FTP 비밀번호 (암호화 지원)

(빈 문자열)

FTP_SECURE

보안 FTP(FTPS) 사용, FTP_PROTOCOL=sftp일 경우 무시됨

false

FTP_PROTOCOL

사용할 프로토콜: ftp 또는 sftp

ftp

FTP_PRIVATE_KEY_PATH

SFTP용 SSH 개인 키 경로 (예: ~/.ssh/id_ed25519)

(자동 감지)

FTP_PASSPHRASE

SSH 개인 키용 암호 (암호화 지원)

(빈 문자열)

FTP_ENCRYPTION_KEY

자격 증명 복호화를 위한 64자 16진수 AES-256 키

(비활성화됨)

SSH / SFTP 지원

일반 FTP 및 FTPS 외에도, 이 서버는 암호화된 SSH 연결을 통해 실행되며 FTPS와는 관련이 없는 SSH 파일 전송 프로토콜인 SFTP를 지원합니다.

FTP_PROTOCOL=sftp로 설정하여 서버를 SFTP 모드로 전환하십시오. 기본 포트가 22로 변경됩니다.

인증

SFTP는 자동으로 선택되는 두 가지 인증 방법을 지원합니다:

  • 개인 키 — 키가 발견되면(아래 참조) 인증에 사용됩니다. FTP_PASSPHRASE는 키가 암호로 보호된 경우 키를 복호화하는 데 사용됩니다.

  • 비밀번호 — 키가 발견되지 않으면 FTP_PASSWORD가 비밀번호 인증에 사용됩니다.

키 검색

서버는 다음 순서로 개인 키를 찾습니다:

  1. FTP_PRIVATE_KEY_PATH의 경로 (설정된 경우)

  2. ~/.ssh/id_ed25519

  3. ~/.ssh/id_rsa

  4. ~/.ssh/id_ecdsa

구성 예시

{
  "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"
      }
    }
  }
}

FTP_PASSPHRASEFTP_USER 모두 enc: 암호화 형식을 지원합니다. 자격 증명 암호화를 참조하십시오.

자격 증명 암호화

Claude 구성 파일에 일반 텍스트 비밀번호를 저장하는 것은 보안 위험이 있습니다. 서버는 FTP_USERFTP_PASSWORD에 대해 AES-256-GCM 암호화를 지원하므로 구성 파일에는 항상 암호문만 포함됩니다.

1. 암호화 키 생성

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

이 키를 비밀로 유지하십시오. 마스터 비밀번호처럼 취급해야 합니다.

2. 자격 증명 값 암호화

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

출력은 enc:<iv_hex>:<tag_hex>:<ciphertext_hex> 형식의 독립적인 암호화된 문자열입니다.

3. 구성에서 암호화된 값 사용

암호화된 자격 증명과 함께 FTP_ENCRYPTION_KEY를 설정하십시오. enc:로 시작하지 않는 값은 일반 텍스트로 처리되므로 선택적으로 암호화할 수 있습니다.

{
  "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": "enc:aabbcc...:ddeeff...:112233...",
        "FTP_PASSWORD": "enc:aabbcc...:ddeeff...:112233...",
        "FTP_SECURE": "false",
        "FTP_ENCRYPTION_KEY": "<your-64-char-hex-key>"
      }
    }
  }
}

사용법

Claude for Desktop을 구성하고 다시 시작한 후, 자연어를 사용하여 FTP 작업을 수행할 수 있습니다:

  • "FTP 서버의 /public 디렉터리에 있는 파일 목록을 보여줘"

  • "FTP 서버에서 /data/report.txt 파일을 다운로드해줘"

  • "이 텍스트를 notes.txt라는 파일로 FTP 서버에 업로드해줘"

  • "FTP 서버에 'backups'라는 새 디렉터리를 만들어줘"

  • "FTP 서버에서 obsolete.txt 파일을 삭제해줘"

  • "FTP 서버에서 빈 디렉터리 /old-project를 제거해줘"

사용 가능한 도구

도구 이름

설명

list-directory

FTP 디렉터리의 내용 나열

download-file

FTP 서버에서 파일 다운로드

upload-file

FTP 서버에 파일 업로드

create-directory

FTP 서버에 새 디렉터리 생성

delete-file

FTP 서버에서 파일 삭제

delete-directory

FTP 서버에서 디렉터리 삭제

보안 고려 사항

  • 구성 파일에 일반 텍스트 비밀번호가 저장되지 않도록 자격 증명 암호화 기능을 사용하십시오.

  • 가능한 경우 일반 FTP나 FTPS보다 SFTP(FTP_PROTOCOL=sftp)를 우선적으로 사용하십시오. SSH를 사용하며 인증서 관리가 필요하지 않습니다.

  • 서버가 지원하지만 SFTP를 사용할 수 없는 경우, FTP_SECURE=true를 설정하여 FTPS(보안 FTP) 사용을 고려하십시오.

  • 서버는 업로드 및 다운로드를 위해 시스템의 임시 디렉터리에 임시 파일을 생성합니다.

라이선스

MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/alxspiker/mcp-server-ftp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server