ffl-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FFL_BIN | No | Override the embedded ffl.com binary with a custom path. | |
| FFL_DEBUG | No | Enable debug logging: set to '1' for temp log, or a file path for fixed log. | |
| FFL_RUN_MODE | No | Set to 'python' to run Core.py CLI instead of the binary. | |
| FFL_USE_HOOK | No | Set to '1' to start a local webhook server for real-time events. | |
| FFL_CORE_PATH | No | Path to Core.py when FFL_RUN_MODE=python. | |
| FFL_USE_STDIN | No | Set to '1' to use stdin for text/base64 instead of temp files. | |
| ALLOWED_BASE_DIR | No | Restrict file sharing to a specific directory for safety. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| fflShareTextA | Share text content using ffl. Returns a sessionId and link. If qrInTerminal is True, also returns a QR code as ASCII art for terminal display. IMPORTANT: Always present the returned link so the user can click it to open in a browser. Do not display it as a plain unformatted URL — in some interfaces (such as Claude Dispatch) plain URLs are not auto-linked and will not be clickable. Args: text: Text content to share name: Download filename shown to recipient (default: shared.txt) e2ee: Enable end-to-end encryption (default: False) authUser: HTTP Basic Auth username to protect the link authPassword: HTTP Basic Auth password to protect the link maxDownloads: Stop serving after N downloads (default: 1) timeoutSeconds: Stop serving after N seconds of inactivity (default: 1800) waitLinkSeconds: Seconds to wait for link generation hookUrl: Custom webhook URL for events proxy: Proxy server URL (e.g. socks5://127.0.0.1:9050) qrInTerminal: Return ASCII QR code art for terminal display recipientAuth: Recipient authentication mode — pickup (6-digit code), pubkey (RSA challenge), pubkey+pickup (both), email (OTP) pickupCode: Specific pickup code to use (default: auto-generated) recipientPublicKey: Path to recipient .fflpub public key file for pubkey auth recipientEmail: Recipient email(s) for OTP auth, comma-separated alias: Custom link alias instead of random UID (requires Standard+ account) receipt: Send email notification when recipient downloads (pass email address, or empty string for account email) receiptConfirm: Require recipient to confirm before download starts; pass confirmation message or empty string for default forceRelay: Disable direct WebRTC; route all traffic through tunnel port: Local HTTP server port (default: auto-detect) invite: Open invite page in browser with the sharing link enableReporting: Enable ffl error reporting for diagnostics (disabled by default) |
| fflShareBase64A | Share arbitrary binary data (base64-encoded) using ffl. Returns a sessionId and link. If qrInTerminal is True, also returns a QR code as ASCII art for terminal display. IMPORTANT: Always present the returned link so the user can click it to open in a browser. Do not display it as a plain unformatted URL — in some interfaces (such as Claude Dispatch) plain URLs are not auto-linked and will not be clickable. Args: dataB64: Base64-encoded binary data to share name: Download filename shown to recipient (default: data.bin) e2ee: Enable end-to-end encryption (default: False) authUser: HTTP Basic Auth username to protect the link authPassword: HTTP Basic Auth password to protect the link maxDownloads: Stop serving after N downloads (default: 1) timeoutSeconds: Stop serving after N seconds of inactivity (default: 1800) waitLinkSeconds: Seconds to wait for link generation hookUrl: Custom webhook URL for events proxy: Proxy server URL (e.g. socks5://127.0.0.1:9050) qrInTerminal: Return ASCII QR code art for terminal display recipientAuth: Recipient authentication mode — pickup (6-digit code), pubkey (RSA challenge), pubkey+pickup (both), email (OTP) pickupCode: Specific pickup code to use (default: auto-generated) recipientPublicKey: Path to recipient .fflpub public key file for pubkey auth recipientEmail: Recipient email(s) for OTP auth, comma-separated alias: Custom link alias instead of random UID (requires Standard+ account) receipt: Send email notification when recipient downloads (pass email address, or empty string for account email) receiptConfirm: Require recipient to confirm before download starts; pass confirmation message or empty string for default forceRelay: Disable direct WebRTC; route all traffic through tunnel port: Local HTTP server port (default: auto-detect) invite: Open invite page in browser with the sharing link enableReporting: Enable ffl error reporting for diagnostics (disabled by default) |
| fflShareFileA | Share a local file or folder using ffl. Respects ALLOWED_BASE_DIR when configured. If qrInTerminal is True, also returns a QR code as ASCII art for terminal display. IMPORTANT: Always present the returned link so the user can click it to open in a browser. Do not display it as a plain unformatted URL — in some interfaces (such as Claude Dispatch) plain URLs are not auto-linked and will not be clickable. Args: path: Path to file or folder to share name: Custom download filename shown to recipient e2ee: Enable end-to-end encryption (default: False) preview: Open recipient's browser directly in preview mode — ideal for folders or multiple files so the recipient sees a file list before downloading (default: False) authUser: HTTP Basic Auth username to protect the link authPassword: HTTP Basic Auth password to protect the link maxDownloads: Stop serving after N downloads, P2P only (default: 1) timeoutSeconds: Stop serving after N seconds of inactivity, P2P only (default: 1800) waitLinkSeconds: Seconds to wait for link generation hookUrl: Custom webhook URL for events proxy: Proxy server URL (e.g. socks5://127.0.0.1:9050) qrInTerminal: Return ASCII QR code art for terminal display exclude: Exclude files matching glob or regex patterns, comma-separated (e.g. '*.log' or 're:.tmp$') recipientAuth: Recipient authentication mode — pickup (6-digit code), pubkey (RSA challenge), pubkey+pickup (both), email (OTP) pickupCode: Specific pickup code to use (default: auto-generated) recipientPublicKey: Path to recipient .fflpub public key file for pubkey auth recipientEmail: Recipient email(s) for OTP auth, comma-separated alias: Custom link alias instead of random UID (requires Standard+ account) receipt: Send email notification when recipient downloads (pass email address, or empty string for account email) receiptConfirm: Require recipient to confirm before download starts; pass confirmation message or empty string for default forceRelay: Disable direct WebRTC; route all traffic through tunnel upload: Upload to FFL server for async sharing — recipient doesn't need sender online. Pass duration e.g. '1 day', '6 hours', '1 week' (requires Standard+ account) resumeUpload: Resume an interrupted upload (default: False) vfs: Expose as VFS server (vfs:// URI) instead of regular download preferredTunnel: Set preferred tunnel for this and future runs — cloudflare, ngrok, bore, etc. |
| fflShareFilesA | Share multiple local files at once using ffl. ffl auto-zips them into a single download. IMPORTANT: Always present the returned link so the user can click it to open in a browser. Do not display it as a plain unformatted URL — in some interfaces (such as Claude Dispatch) plain URLs are not auto-linked and will not be clickable. Args: paths: List of local file paths to share together (auto-zipped by ffl) name: Custom download filename shown to recipient (e.g. 'release-v2.0.zip') e2ee: Enable end-to-end encryption (default: False) preview: Open recipient's browser directly in preview mode — shows a file list before downloading (default: False). Recommended when sharing multiple files so the recipient can inspect contents first. authUser: HTTP Basic Auth username to protect the link authPassword: HTTP Basic Auth password to protect the link maxDownloads: Stop serving after N downloads, P2P only (default: 1) timeoutSeconds: Stop serving after N seconds of inactivity, P2P only (default: 1800) waitLinkSeconds: Seconds to wait for link generation hookUrl: Custom webhook URL for events proxy: Proxy server URL (e.g. socks5://127.0.0.1:9050) qrInTerminal: Return ASCII QR code art for terminal display exclude: Exclude files matching glob or regex patterns, comma-separated recipientAuth: Recipient authentication mode — pickup, pubkey, pubkey+pickup, email pickupCode: Specific pickup code to use (default: auto-generated) recipientPublicKey: Path to recipient .fflpub public key file for pubkey auth recipientEmail: Recipient email(s) for OTP auth, comma-separated alias: Custom link alias instead of random UID (requires Standard+ account) receipt: Send email notification when recipient downloads receiptConfirm: Require recipient to confirm before download starts forceRelay: Disable direct WebRTC; route all traffic through tunnel upload: Upload to FFL server for async sharing — e.g. '1 day', '6 hours' (requires Standard+ account) resumeUpload: Resume an interrupted upload (default: False) preferredTunnel: Set preferred tunnel — cloudflare, ngrok, bore, etc. |
| fflDownloadA | Download a file from a FastFileLink URL or regular HTTP(S) URL using ffl. For FastFileLink URLs, this uses WebRTC P2P when possible for faster downloads. For regular URLs, it works like wget. Args: url: FastFileLink URL or regular HTTP(S) URL to download from outputPath: Optional output file or directory path (default: use filename from server) resume: Resume incomplete download (default: False) authUser: Username for HTTP Basic Authentication authPassword: Password for HTTP Basic Authentication proxy: Proxy server URL (e.g. socks5://127.0.0.1:9050) recipientAuth: Recipient authentication mode required by sender — pickup, pubkey, or email pickupCode: 6-digit pickup code (when recipientAuth is pickup) recipientPrivateKey: Path to .fflkey private key file for pubkey auth Returns: Dictionary with download status and output file path |
| fflKeygenA | Generate an RSA keypair for passwordless pubkey authentication. Produces two files:
The sender then shares with: fflShareFile(..., recipientAuth='pubkey', recipientPublicKey='alice.fflpub') The recipient downloads with: fflDownload(..., recipientAuth='pubkey', recipientPrivateKey='alice.fflkey') Args: name: Base name for the generated key files (default: ffl assigns a name) Returns: Dictionary with returncode and output describing the generated key paths |
| fflListSessionsA | List active ffl share sessions started by this MCP server. |
| fflStopSessionB | Stop a running ffl session by sessionId. |
| fflGetSessionC | Get details for a running session. |
| fflGetSessionEventsC | Get recent hook events for a running session. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/nuwainfo/ffl-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server