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 |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| fflShareTextA | Share text content using ffl. Returns a sessionId and link. Managed-sandbox policy: When running inside ChatGPT Work, Grok Bot, a cloud-hosted Codex sandbox, or a Claude Code cloud session (Claude Code on the web / claude.ai/code, or a remote session started from the Claude app), use relay immediately: forceRelay=True and preferredTunnel="default:web". These environments may only allow outbound HTTPS through a proxy, with no usable UDP/ICE or raw TCP tunnels. Do not apply this rule to local Claude Code CLI, local Codex CLI, local Grok Build, or ordinary user machines. 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. |
| fflShareBase64A | Share arbitrary binary data (base64-encoded) using ffl. Returns a sessionId and link. Managed-sandbox policy: When running inside ChatGPT Work, Grok Bot, a cloud-hosted Codex sandbox, or a Claude Code cloud session (Claude Code on the web / claude.ai/code, or a remote session started from the Claude app), use relay immediately: forceRelay=True and preferredTunnel="default:web". These environments may only allow outbound HTTPS through a proxy, with no usable UDP/ICE or raw TCP tunnels. Do not apply this rule to local Claude Code CLI, local Codex CLI, local Grok Build, or ordinary user machines. 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. |
| fflShareFileA | Share a local file or folder using ffl. Respects ALLOWED_BASE_DIR when configured. Managed-sandbox policy: When running inside ChatGPT Work, Grok Bot, a cloud-hosted Codex sandbox, or a Claude Code cloud session (Claude Code on the web / claude.ai/code, or a remote session started from the Claude app), use relay immediately: forceRelay=True and preferredTunnel="default:web". These environments may only allow outbound HTTPS through a proxy, with no usable UDP/ICE or raw TCP tunnels. Do not apply this rule to local Claude Code CLI, local Codex CLI, local Grok Build, or ordinary user machines. 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. |
| fflShareFilesA | Share multiple local files at once using ffl. ffl auto-zips them into a single download. Managed-sandbox policy: When running inside ChatGPT Work, Grok Bot, a cloud-hosted Codex sandbox, or a Claude Code cloud session (Claude Code on the web / claude.ai/code, or a remote session started from the Claude app), use relay immediately: forceRelay=True and preferredTunnel="default:web". These environments may only allow outbound HTTPS through a proxy, with no usable UDP/ICE or raw TCP tunnels. Do not apply this rule to local Claude Code CLI, local Codex CLI, local Grok Build, or ordinary user machines. 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. |
| fflHowToShareFromRemoteAgentA | Only for cloud-hosted assistants (e.g. Grok Bot) that cannot access the user's computer directly. Call this first when you need to share a file or folder that lives on the user's computer. Local agents such as Claude Code, Codex or Cursor do not need it. |
| fflDownloadB | 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. |
| 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') |
| fflListSessionsA | List active ffl share sessions started by this MCP server. |
| fflStopSessionC | 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 | |
TDQS
Scored across 11 tools
Each tool targets a distinct payload type or session operation: share text, base64, single file, or multiple files, plus list/get/stop/events. The file vs. files pair could be confused, but the description explicitly notes auto-zipping, making boundaries clear. Session inspection and guidance tools are clearly separate from sharing actions.
All tools use a consistent ffl-prefixed camelCase convention (fflShareText, fflListSessions, fflStopSession, etc.). Minor deviations like fflDownload (verb only) and fflKeygen (compound noun) break the verb_noun pattern slightly but remain readable and predictable.
11 tools is well within a reasonable range for a file-sharing server, covering sharing, downloading, session management, and key generation. The four share variants are slightly redundant but each maps to a real payload distinction.
The surface covers the full lifecycle: create shares (text/base64/file/files), download, keygen for pubkey auth, plus list/get/stop/events for session lifecycle. Minor gaps like no explicit session renewal or share update exist, but agents can work around them by starting a new share.