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. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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