FTP Man v0.1.0

macOS · FTP · FTPS · SFTP · MCP

100 servers.
One command.

FTP Man keeps your hosting accounts and credentials on your Mac and hands AI agents like Claude Code file-operation tools only. Passwords never leave the machine by any path.

Apple silicon · Intel · macOS 12+ · Signed & notarized

FTP Man screenshot: server list, remote file tree and file preview
Server list · tag filters · remote file tree · text preview · approval queue
01

Don’t hand your passwords to an agent

Credentials behind the Keychain

Passwords and private keys are encrypted with the macOS Keychain and stored only on disk. No MCP tool ever returns a credential; agents refer to servers by name or id.

Many servers at once

Pick servers by tag or list, hand over one operation, and get a per-server result. One failure never stops the rest.

Humans approve, everything is logged

Require in-app approval for writes and deletes, or lock everything with read-only mode. Every call lands in the activity log.

A real file browser

Path bar, expandable tree, sortable columns, text preview, upload, download, rename and delete. See what the agent did with your own eyes.

02

Three steps

  1. 1

    Import servers

    Register 100 servers from one CSV: name, host, protocol, account, tags. Passwords are encrypted on import.

    name,host,protocol,username,password,tags
    client-a,ftp.client-a.com,ftp,deploy,•••••,wordpress;client-a
    client-b,sftp.client-b.io,sftp,ubuntu,•••••,wordpress;client-b
  2. 2

    Connect an agent

    The app serves a token-protected MCP endpoint on 127.0.0.1. Paste one command from the Settings tab. A bridge for stdio-only clients is bundled.

    claude mcp add --transport http ftp-man \
      http://127.0.0.1:7391/mcp \
      --header "Authorization: Bearer ‹token›"
  3. 3

    Just ask

    “Read wp-config.php on every wordpress server and tell me where WP_DEBUG is on.” The agent makes one batch call and gets a result per server.

    batch {
      tag: "wordpress",
      operation: { type: "read_file",
                   path: "wp-config.php" }
    }
    → 106 results · 101 ok · 5 failed
03

Tools exposed to agents

Exactly these thirteen. None of them returns a credential.

list_serversreadServers and tags, never credentials
test_connectionreadConnectivity and base directory
list_filesreadList a directory
get_file_inforeadStat a path
read_filereadFile contents, size-limited
find_filesreadRecursive glob search
download_filereadDownload to this Mac
write_filewriteCreate or overwrite with text
upload_filewriteUpload a local file
make_directorywriteCreate directories
rename_pathwriteRename or move
delete_pathwriteDelete, optionally recursive
batchbatchRun one of the above across many servers
04

Where the boundary is

On this Mac
  • Encrypted credentials
  • Server connections and transfers
  • Approval queue and activity log
  • MCP endpoint bound to 127.0.0.1
Bearer token
What the agent sees
  • Server names, hosts, tags
  • File listings and contents
  • Operation results and errors
  • Passwords or keys — never
05

Download

Open the DMG and drag the app to Applications. The Claude Code connection command is in the Settings tab.

Claude Desktop and other stdio clients
{ "mcpServers": { "ftp-man": {
    "command": "node",
    "args": ["/Applications/FTP Man.app/Contents/Resources/bridge/ftp-man-mcp.mjs"] } } }